3 ^@sdddlmZddlmZddlmZmZmZeddddd d gZGd d d eZ Gd ddeZ dS)) namedtuple)DiffResultDescriptor) Difference SymbolWrapperWrapperZmodified_defaultZrule added_defaultremoved_defaultadded_default_rangeremoved_default_rangec@s8eZdZdZedZedZedZddZddZ dS)DefaultsDifferencez;Determine the difference in default_* between two policies. diff_defaultscCs|jjdj||jdd|jjDdd|jjD\|_|_}g|_ x|D]\}}|j |j krv|j }|j }nd}d}y&|j |j kr|j }|j }nd}d}Wnt k rd}d}YnX|s|rT|j j t|||||qTWdS)z>Generate the difference in type defaults between the policies.zIGenerating default_* differences from {0.left_policy} to {0.right_policy}css|]}t|VqdS)N)DefaultWrapper).0dr/usr/lib64/python3.6/default.py 0sz3DefaultsDifference.diff_defaults..css|]}t|VqdS)N)r)rrrrrr1sN)loginfoformatZ _set_diffZ left_policyZdefaultsZ right_policyadded_defaultsremoved_defaultsmodified_defaultsdefaultZ default_rangeAttributeErrorappendmodified_default_record)selfZmatched_defaultsZ left_defaultZ right_defaultr rr r rrrr (s:    z DefaultsDifference.diff_defaultscCs"|jjdd|_d|_d|_dS)z%Reset diff results on policy changes.zResetting default_* differencesN)rdebugrrr)rrrr _reset_diffWs zDefaultsDifference._reset_diffN) __name__ __module__ __qualname____doc__rrrrr r rrrrr s /r c@s4eZdZdZd ZddZddZdd Zd d Zd S)rz$Wrap default_* to allow comparisons.ruletypetclasscCs(||_|j|_t|j|_t||_dS)N)originr%rr&hashkey)rrrrr__init__es zDefaultWrapper.__init__cCs|jS)N)r))rrrr__hash__kszDefaultWrapper.__hash__cCs |j|jkS)N)r))rotherrrr__lt__nszDefaultWrapper.__lt__cCs|j|jko|j|jkS)N)r%r&)rr,rrr__eq__qs zDefaultWrapper.__eq__N)r%r&) r!r"r#r$ __slots__r*r+r-r.rrrrr_s rN) collectionsrZ descriptorsr differencerrrrr rrrrrs  ?