+
    mi"                     <   ^ RI t ^ RIt^ RIHt ^ RIHtHtHtHt ^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHtHt ^ RIHtHt ^ RIH t  ^ RI!H"t" ^ RI#H$t$ ^ RI%H&t& ^ RI'H(t(H)t) ^ RI*H+t+ ]]]]]]]]PX                  ]PZ                  ]P\                  ] ]"]$](]).t/R,R R llt0R-R R llt1R R lt2] Pf                   ! R R] Ph                  4      4       t5R R lt6R R lt7R  R! lt8R" R# lt9R$ R% lt:R& R' lt;R( R) lt<R.R* R+ llt=R# )/    N)defaultdict)DictListOptionalType)
exceptions)UAConfig)fips)AnboxEntitlement)UAEntitlement)CommonCriteriaEntitlement)CISEntitlement)ApplicabilityStatus)ESMAppsEntitlementESMInfraEntitlement)ESMAppsLegacyEntitlementESMInfraLegacyEntitlement)LandscapeEntitlement)LivepatchEntitlement)RealtimeKernelEntitlement)RepoEntitlement)ROSEntitlementROSUpdatesEntitlement)EntitlementNotFoundErrorc                    V ^8  d   QhR\         R\        R\        R\        R\        R\        \        \        ,          ,          R\
        /# )   cfgnamevariantpurgeaccess_only
extra_argsreturn)r	   strboolr   r   r   )formats   "@/usr/lib/python3/dist-packages/uaclient/entitlements/__init__.py__annotate__r(   -   sW     *: *:	*:
*: *: 	*:
 *: c#*: *:    c           	         \          Fg  pV! V VVVVR7      pWP                  9   g   K"  V'       g   Vu # W'P                  9   d    VP                  V,          ! V VVVR7      u # \        VR7      h	  \        VR7      h)a	  Returns a UAEntitlement object based on the provided name.

:param cfg: UAConfig instance
:param name: The name of the entitlement to return
:param variant: The variant name to be used
:param purge: If purge operation is enabled
:param access_only: If entitlement should be set with access only
:param extra_args: Extra parameters to create the entitlement

:raise EntitlementNotFoundError: If no entitlement with the given name is
  found, or if the entitlement exists but no variant with the specified
  name is found.
)r   r!   called_namer    r"   )r   r+   r    r"   )entitlement_name)ENTITLEMENT_CLASSESvalid_namesvariantsr   )r   r   r   r    r!   r"   entitlementents   &&&&&&  r'   entitlement_factoryr2   -   s    , +#!
 ??"
LL(||G, $)	  /HH' +( #D
99r)   c                R    V ^8  d   QhR\         R\        R\        \        ,          /# )r   r   	all_namesr#   )r	   r%   r   r$   )r&   s   "r'   r(   r(   Z   s%       T d3i r)   c           	         \         pV'       d9   . pV F%  pVP                  V! V R7      P                  4       K'  	  \        V4      # \        V Uu. uF  pV! V R7      P                  NK  	  up4      # u upi )zReturn a list of valid services.

:param cfg: UAConfig instance
:param all_names: if we should return all the names for a service instead
    of just the presentation_name
r   )r-   extendr.   sortedpresentation_name)r   r4   entitlementsnamesentitlement_clss   &&   r'   valid_servicesr=   Z   sx     'L+OLLS1==>  , e} $0	
#/ $66#/	
 	
s   A3c                h    V ^8  d   QhR\         R\        \        ,          R\        \        ,          /# )r   r   entsr#   r	   r   r$   )r&   s   "r'   r(   r(   q   s1     O O	OcO	#YOr)   c                J   aa \        V 4      oV3R lo\        VV3R lR7      # )zJ
A function to sort entitlments for enabling that preserves invalid names
c                 `   <  SP                  V 4      #   \         d    \        S4      u # i ; iN)index
ValueErrorlen)r1   valid_ents_ordereds   &r'    sort_order_with_nonexistent_lastIorder_entitlements_for_enabling.<locals>.sort_order_with_nonexistent_lasty   s4    	+%++C00 	+)**	+s    --c                    < S! V 4      # rC    )r1   rH   s   &r'   <lambda>1order_entitlements_for_enabling.<locals>.<lambda>   s    (H(Mr)   )key)entitlements_enable_orderr8   )r   r?   rH   rG   s   &&@@r'   order_entitlements_for_enablingrP   q   s%     337+ $MNNr)   c                   2    ] tR t^t]! 4       t]! 4       tRtR# )	SortOrderrK   N)__name__
__module____qualname____firstlineno__objectREQUIRED_SERVICESDEPENDENT_SERVICES__static_attributes__rK   r)   r'   rR   rR      s    r)   rR   c                F    V ^8  d   QhR\         R\        \        ,          /# r   r   r#   r@   )r&   s   "r'   r(   r(      s"     P PH Pc Pr)   c                8    \        V \        P                  R7      # )zJ
Return the entitlements disable order based on dependent services logic.
r   
sort_order)_sort_entitlementsrR   rY   r6   s   &r'   entitlements_disable_orderra      s     #)2N2NOOr)   c                F    V ^8  d   QhR\         R\        \        ,          /# r\   r@   )r&   s   "r'   r(   r(      s"     O O8 OS	 Or)   c                8    \        V \        P                  R7      # )zH
Return the entitlements enable order based on required services logic.
r^   )r`   rR   rX   r6   s   &r'   rO   rO      s     #)2M2MNNr)   c                    V ^8  d   QhR\         R\        \        ,          R\        R\        \
        \        3,          R\        \
        ,          /# )r   r   ent_clsr_   visitedorder)r	   r   r   rR   r   r$   r%   r   )r&   s   "r'   r(   r(      sK     & &	&- & & #t)_	&
 9&r)   c           	         VP                   V9   d   R # V! V 4      pV\        P                  8X  d&   VP                   Uu. uF  qfP                  NK  	  ppM\        VP                  4      pV F&  pVP                   V9  g   K  \        V VVVVR7       K(  	  VP                  \        VP                   4      4       RV\        VP                   4      &   R # u upi )Nr   re   r_   rf   rg   T)
r   rR   rX   required_servicesr0   listdependent_services_sort_entitlements_visitappendr$   )	r   re   r_   rf   rg   r1   ecls_listcls_dependencys	   &&&&&    r'   rm   rm      s     ||w
#,CY000+.+@+@A+@aMM+@A../"<<w&$&% # 
LLW\\"#!%GC Bs   Cc                R    V ^8  d   QhR\         R\        R\        \        ,          /# )r   r   r_   r#   )r	   rR   r   r$   )r&   s   "r'   r(   r(      s%      H ) S	 r)   c           	      H    . p/ p\          F  p\        V VVVVR 7       K  	  V# )ri   )r-   rm   )r   r_   rg   rf   re   s   &&   r'   r`   r`      s4    EG& !	
 ' Lr)   c                F    V ^8  d   QhR\         \        ,          R\        /# )r   r;   r   )r   r$   r	   )r&   s   "r'   r(   r(      s     6 6tCy 6x 6r)   c                    . pV  F(  pV\        VRR7      9   g   K  VP                  V4       K*  	  \        \        V 4      \        V4      ,
          4      pW$3# )zReturn a list of valid entitlement names.

:param names: List of entitlements to validate
:return: a tuple of List containing the valid and invalid entitlements
T)r   r4   )r=   rn   r8   set)r;   r   entitlements_foundent_nameentitlements_not_founds   &&   r'   get_valid_entitlement_namesrz      sV     ~#>>%%h/  $CJ5G1H$HI55r)   c                D    V ^8  d   QhR\         R\        P                  /# r\   )r	   r   UbuntuProError)r&   s   "r'   r(   r(      s"      !)r)   c           	         \        VR7      pRP                  V4      pRP                  \        P                  ! RV,           R,           ^PRRR7      4      p\        P
                  ! RRP                  V 4      VR	7      # )
zo
Constructs the MESSAGE_INVALID_SERVICE_OP_FAILURE message
based on the attempted services and valid services.
r6   , 
zTry .F)widthbreak_long_wordsbreak_on_hyphensenable)	operationinvalid_serviceservice_msg)r=   jointextwrapwrapr   InvalidServiceOpError)ry   r   valid_services_namesr.   r   s   &&   r'   *create_enable_entitlements_not_found_errorr      sv     *c2))01K))[ 3&""		
K ++		"89 r)   c                0    V ^8  d   QhR\         R\        /# r\   )r	   r%   )r&   s   "r'   r(   r(      s     + +	+	+r)   c                    \        \        4      p\        V 4       EF=  p\        W4      p\	        V\
        4      '       g   K'  VP                  4       w  rEV\        P                  8X  dd   VP                  pVP                  ;'       g    RpV F;  pVP                  P                  Wh4      p	W,          P                  R VRVRV/4       K=  	  VP                  4        Fx  w  r\        V4      ^8  g   K  V^ ,          R,          pV^ ,          R,          p\         P"                  ! V P$                  RP'                  \)        R V 4       4      4      VVR7      h	  EK@  	  R# )fromapt_urlsuiter~   c              3   F   "   T F  p\        VR ,          4      x  K  	  R# 5i)r   N)r$   ).0r1   s   & r'   	<genexpr>>check_entitlement_apt_directives_are_unique.<locals>.<genexpr>  s     I=Cs3v;//=s   !)urlr;   r   r   TrK   )r   rk   r=   r2   
isinstancer   applicability_statusr   
APPLICABLEr   
apt_suitesrepo_policy_check_tmplr&   rn   itemsrF   r   %EntitlementsAPTDirectivesAreNotUniquecontract_urlr   r8   )r   entitlement_directivesrx   r1   r   _r   r   r   entitlement_directivedef_pathent_directiveent_apt_url	ent_suites   &             r'   +check_entitlement_apt_directives_are_uniquer      sF    )."3'!#0#//"%":":"<#6#A#AAkkG--2J#(+(B(B(I(I)% '=DD!7	 $ (>'C'C'E#H=!A%+A.y9)!,W5	 FF(())I=II (#  (F1 (L r)   c                0    V ^8  d   QhR\         R\        /# )r   r   rx   )r	   r$   )r&   s   "r'   r(   r(     s      8 s r)   c                 l     \        WVR 7      P                  #   \        P                   d    Tu # i ; i))r   )r2   titler   r|   )r   rx   r   s   &&&r'   	get_titler     s4    "3'BHHH$$ s    33) FFN)F)r   )>enumr   collectionsr   typingr   r   r   r   uaclientr   uaclient.configr	   uaclient.entitlementsr
   uaclient.entitlements.anboxr   uaclient.entitlements.baser   uaclient.entitlements.ccr   uaclient.entitlements.cisr   (uaclient.entitlements.entitlement_statusr   uaclient.entitlements.esmr   r    uaclient.entitlements.esm_legacyr   r   uaclient.entitlements.landscaper   uaclient.entitlements.livepatchr   uaclient.entitlements.realtimer   uaclient.entitlements.repor   uaclient.entitlements.rosr   r   uaclient.exceptionsr   FIPSEntitlementFIPSUpdatesEntitlementFIPSPreviewEntitlementr-   r2   r=   rP   uniqueEnumrR   ra   rO   rm   r`   rz   r   r   r   rK   r)   r'   <module>r      s      # - -  $ & 8 4 > 4 H M A @ D 6 K 8  &*:Z.O" "		 " "
PO&> 6"0+\ r)   