+
    ,ie  c                   s   a  R t0 t ^ RIt^RIHtHt ^RIHt ^RIHt ^RI	H
t
Ht Rt] ^ k Rt] ^k Rt] ^k R	t] ^k R
t] ^k Rt] ^k Rt] ^k  ! R R]4      tR# )i    N)	exception	policyrep)RBACRuleQuery)CheckerModule)ConfigDescriptorConfigSetDescriptorsourcetargetexempt_sourceexempt_targetexpect_sourceexpect_target
AssertRBACc                   s  a a ] tR t^t oRtRt]! ]]]	]
]]34      t]]P                   ,          ! R4      t]]P                   ,          ! R4      t]]P                   ,          ! RRRR7      t]]P                   ,          ! RRRR7      t]]P                   ,          ! RRRR7      t]]P                   ,          ! RRRR7      tV3R lV 3R lltV3R	 lR
 ltRtVtV ;t# )r   z?Checker module for asserting a RBAC allow rule exists (or not).Zassert_rbacZlookup_roleFT)Zstrictexpandc                sZ   < V ^8  d   QhRS[ P                  RS[RS[S[S[3,          RR/# )   policy	checknameconfigreturnN)r   ZSELinuxPolicystrZdictformat__classdict__   "A/usr/lib64/python3.14/site-packages/setools/checker/assertrbac.py__annotate__AssertRBAC.__annotate__(   s?     X Xy66 X3 Xc3hX,0X    c                sB  < \         SV `  WV4       VP                  \        4      V n        VP                  \
        4      V n        VP                  \        4      V n        VP                  \        4      V n
        VP                  \        4      V n        VP                  \        4      V n        \        V P                  V P                  34      '       g   \         P"                  ! R 4      hV P                  V P                  ,          pV'       d5   V P$                  P'                  RRP)                  R V 4       4       24       V P                  V P                  ,          pV'       d7   V P$                  P'                  RRP)                  R V 4       4       24       R# R# )z5At least one of source or target options must be set.z,Overlap in expect_source and exempt_source: z, c              3   8   "   T F  qP                   x  K  	  R # 5iNZnameZ.0Zi   & r   	<genexpr>&AssertRBAC.__init__.<locals>.<genexpr>;        &T7S!vv7S   z,Overlap in expect_target and exempt_target: c              3   r   r   r   r   r    r   r!   r"   @   r#   r$   N)Zsuper__init__Zget
SOURCE_OPTr   
TARGET_OPTr   EXEMPT_SRC_OPTr   EXEMPT_TGT_OPTr	   EXPECT_SRC_OPTr
   EXPECT_TGT_OPTr   Zanyr    ZInvalidCheckValueloginfoZjoin)selfr   r   r   Zsource_exempt_expect_overlapZtarget_exempt_expect_overlap	__class__s   &&&&  r   r%   ZAssertRBAC.__init__(   sE    	F3jj,jj,#ZZ7#ZZ7#ZZ7#ZZ7DKK-..--GI I (,'9'9D<N<N'N$'HHMMH!YY&T7S&TTUW X (,'9'9D<N<N'N$'HHMMH!YY&T7S&TTUW X (r   c                sT   < V ^8  d   QhRS[ S[P                  S[,          ,          /# )r   r   )Zlistr   ZAnyRBACRuler   r   r   r   r   r   B   s$     & &T)//#56 &r   c                s   V P                   P                  R 4       \        V P                  V P                  V P
                  RR7      p\        V P                  4      p\        V P                  4      p. p\        VP                  4       4       F  p\        VP                  P                  4       4      p\        VP
                  P                  4       4      pW&,          pW7,          pW`P                  ,
          V P                  ,
          '       dW   WpP                  ,
          V P                  ,
          '       d.   V P                  \        V4      4       VP!                  V4       K  V P#                  \        V4      4       K  	  V F+  pRV R2p	V P                  V	4       VP!                  V	4       K-  	  V F+  pRV R2p	V P                  V	4       VP!                  V	4       K-  	  V P                   P%                  V R24       V# )z#Checking RBAC allow rule assertion.)r   r   ZruletypezExpected rule with source "z" not found.zExpected rule with target "z failure(s))Zallow)r,   r-   r   r   r   r   Zsetr
   r   ZsortedZresultsr   r   r	   Zlog_failr   ZappendZlog_okZdebug)
r.   ZqueryZunseen_sourcesZunseen_targetsZfailuresZruleZsrcsZtgtsZitemZfailures
   &         r   runZAssertRBAC.runB   s    	;<dkk%)[[%)[['13
 T//0T//0685==?+Dt{{))+,Dt{{))+,D"N"N)))D,>,>>>...1C1CCCc$i(%CI& , #D4TF-HGMM'"OOG$ #
 #D4TF-HGMM'"OOG$ #
 	(;/0r   )r   r	   r
   r   r   r   )Z__name__Z
__module__Z__qualname__Z__firstlineno__Z__doc__Z
check_typeZ	frozensetr&   r'   r(   r)   r*   r+   Zcheck_configr   r   ZRoler   r   r   r   r	   r
   r   r%   r0   Z__static_attributes__Z__classdictcell__Z__classcell__)r/   r   s   @@r   r   r      s     IJj*nn,n> ?L inn-m<Finn-m<F'	7e\`aM'	7e\`aM'	7d[_`M'	7d[_`MX X4& & &r   c                sp   V ^8  d   Qh/ ^ \         9   d   \        P                  \        ,          ;R&   ^\         9   d   \        P                  \        ,          ;R&   ^\         9   d   \        P                  \        ,          ;R&   ^\         9   d   \        P                  \        ,          ;R&   ^\         9   d   \        P                  \        ,          ;R&   ^\         9   d   \        P                  \        ,          ;R&   ^\         9   d,   \        P                  \        \        R3,          ,          ;R&   # )	r   r&   r'   r(   r)   r*   r+   .__all__)__conditional_annotations__typingZFinalr   Ztuple)r   s   "r   r   r      s     ) (FLL (  ) (FLL (  4 3S! 3  4 3S! 3  4 3S! 3  4 3S! 3  9 8eCHo	& 8 r   )r   )r2   r3   Z r    r   Zrbacrulequeryr   Zcheckermoduler   Zdescriptorsr   r   r&   r'   r(   r)   r*   r+   r1   r   r   )r2   s   @r   <module>r4      s_     # ) ( > (
 ( (
 ($3 3$3 3$3 3$3 3)8 8P Pr   