3 í«„^R ã@s^ddlmZmZddlmZddlmZmZedddgƒZee ƒZ dd „Z Gd d „d eƒZ d S) é)Ú defaultdictÚ namedtupleé)ÚDiffResultDescriptor)Ú DifferenceÚ SymbolWrapperZmodified_booleanZ added_stateZ removed_statec Cs:y t||Stk r4t|ƒ}|t||<|SXdS)z Wrap booleans from the specified policy. This caches results to prevent duplicate wrapper objects in memory. N)Ú _bool_cacheÚKeyErrorr)ZpolicyZbooleanÚb©r ú/usr/lib64/python3.6/bool.pyÚboolean_wrappers   r c@s8eZdZdZedƒZedƒZedƒZdd„Zdd„Z dS)ÚBooleansDifferencezADetermine the difference in type attributes between two policies.Ú diff_booleanscCs†|jjdj|ƒƒ|jdd„|jjƒDƒdd„|jjƒDƒƒ\|_|_}t ƒ|_ x0|D](\}}|j |j krVt |j |j ƒ|j |<qVWdS)z@Generate the difference in type attributes between the policies.zGGenerating Boolean differences from {0.left_policy} to {0.right_policy}css|]}t|ƒVqdS)N)r)Ú.0r r r r ú >sz3BooleansDifference.diff_booleans..css|]}t|ƒVqdS)N)r)rr r r r r?sN) ÚlogÚinfoÚformatZ _set_diffZ left_policyZboolsZ right_policyÚadded_booleansÚremoved_booleansÚdictÚmodified_booleansÚstateÚmodified_bool_record)ÚselfZmatched_booleansZ left_booleanZ right_booleanr r r r6s   z BooleansDifference.diff_booleanscCs"|jjdƒd|_d|_d|_dS)z%Reset diff results on policy changes.zResetting Boolean differencesN)rÚdebugrrr)rr r r Ú _reset_diffMs zBooleansDifference._reset_diffN) Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrrrr r r r r.s rN) Ú collectionsrrZ descriptorsrÚ differencerrrrrr rr r r r Ús