a qéqe(ã@s„ddlmZmZddlmZmZmZmZmZddl m Z ddl m Z m Z mZGdd„deƒZGd d „d e ƒZGd d „d eeƒZd S)é)Ú NamedTupleÚOptionalé)ÚDefaultÚDefaultRuletypeÚ DefaultValueÚDefaultRangeValueÚObjClassé)ÚDiffResultDescriptor)Ú DifferenceÚ SymbolWrapperÚWrapperc@sJeZdZUdZeed<eeed<eeed<eeed<eeed<dS)ÚModifiedDefaultz,Difference details for a modified default_*.ZruleÚ added_defaultÚremoved_defaultÚadded_default_rangeÚremoved_default_rangeN) Ú__name__Ú __module__Ú __qualname__Ú__doc__rÚ__annotations__rrr©rrú:/usr/lib64/python3.9/site-packages/setools/diff/default.pyr s    rc@sDeZdZdZedƒZedƒZedƒZddœdd„Zddœdd„Z dS) ÚDefaultsDifferencez;Determine the difference in default_* between two policies.Ú diff_defaultsN)Úreturnc Csä|j d |¡¡| dd„|j ¡Dƒdd„|j ¡Dƒ¡\|_|_}g|_ |D]Œ\}}|j |j krt|j }|j }nd}d}z&|j |j kr˜|j }|j }nd}d}Wnt y¼d}d}Yn0|sÆ|rR|j   t|||||ƒ¡qRdS)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©Ú.0ÚdrrrÚ (óz3DefaultsDifference.diff_defaults..css|]}t|ƒVqdSrrr!rrrr$)r%N)ÚlogÚinfoÚformatZ _set_diffZ left_policyÚdefaultsZ right_policyÚadded_defaultsÚremoved_defaultsÚmodified_defaultsÚdefaultZ default_rangeÚAttributeErrorÚappendr)ÚselfZmatched_defaultsZ left_defaultZ right_defaultrrrrrrrr sDÿÿþ     üÿz DefaultsDifference.diff_defaultscCs"|j d¡d|_d|_d|_dS)z%Reset diff results on policy changes.zResetting default_* differencesN)r&Údebugr*r+r,©r0rrrÚ _reset_diffOs zDefaultsDifference._reset_diff) rrrrr r*r+r,rr3rrrrrs /rc@s<eZdZdZdZeddœdd„Zdd„Zd d „Zd d „Z dS) r z$Wrap default_* to allow comparisons.©ÚruletypeÚtclassN)r-rcCs(||_|j|_t|jƒ|_t|ƒ|_dSr)Úoriginr5r r6ÚhashÚkey)r0r-rrrÚ__init__]s zDefaultWrapper.__init__cCs|jSr©r9r2rrrÚ__hash__cszDefaultWrapper.__hash__cCs |j|jkSrr;©r0ÚotherrrrÚ__lt__fszDefaultWrapper.__lt__cCs|j|jko|j|jkSrr4r=rrrÚ__eq__is  ÿzDefaultWrapper.__eq__) rrrrÚ __slots__rr:r<r?r@rrrrr Ws r N)ÚtypingrrZ policyreprrrrr Z descriptorsr Ú differencer r rrrr rrrrÚs   ?