+
    ,i  c                   s   a  R t0 t ^ RIHt ^ RIt^RIHtHtHtHt ^RI	H
t
Ht Rt] ^ k  ! R R]P                  ]P                  4      tR# )	i    )IterableN)mixins	policyrepqueryutil)CriteriaDescriptorCriteriaSetDescriptor	UserQueryc                   s  a  ] tR t^t o Rt]]P                  ,          ! RR7      tRt	Rt
Rt]]P                  ,          ! RR7      tRtRtRtRt]]P&                  ,          ! RR4      tRtRtV 3R lR	 ltV 3R
 ltRtV tR# )r   a  
Query SELinux policy users.

Parameter:
policy            The policy to query.

Keyword Parameters/Class attributes:
name            The user name to match.
name_regex      If true, regular expression matching
                will be used on the user names.
roles           The attribute to match.
roles_equal     If true, only types with role sets
                that are equal to the criteria will
                match.  Otherwise, any intersection
                will match.
roles_regex     If true, regular expression matching
                will be used on the role names instead
                of set logic.
level           The criteria to match the user's default level.
level_dom       If true, the criteria will match if it dominates
                the user's default level.
level_domby     If true, the criteria will match if it is dominated
                by the user's default level.
level_incomp    If true, the criteria will match if it is incomparable
                to the user's default level.
range_          The criteria to match the user's range.
range_subset    If true, the criteria will match if it is a subset
                of the user's range.
range_overlap   If true, the criteria will match if it overlaps
                any of the user's range.
range_superset  If true, the criteria will match if it is a superset
                of the user's range.
range_proper    If true, use proper superset/subset operations.
                No effect if not using set operations.
Zlookup_level)Zlookup_functionFZlookup_rangeroles_regexZlookup_rolec                sD   < V ^8  d   QhRS[ S[P                  ,          /# )   Zreturn)r    r   ZUserformat__classdict__   "8/usr/lib64/python3.14/site-packages/setools/userquery.py__annotate__UserQuery.__annotate__A   s     & &)..1 &    c              #  sl  "   V P                   P                  RV P                   24       V P                  V P                   4       V P                   P	                  RV P
                  : RV P                  : RV P                  : 24       V P                   P	                  RV P                  : RV P                  : RV P                  : RV P                  : 24       V P                   P	                  R	V P                  : R
V P                  : RV P                  : RV P                  : RV P                   : 2
4       V P                  P#                  4        EFT  pV P%                  V4      '       g   K  V P
                  '       dJ   \&        P(                  ! VP
                  V P
                  V P                  V P                  4      '       g   Kx  V P                  '       dU   \&        P*                  ! VP,                  V P                  V P                  V P                  V P                  4      '       g   K  V P                  '       da   \&        P.                  ! VP0                  V P                  V P                  V P                  V P                  V P                   4      '       g   EKP  Vx  EKW  	  R# 5i)z*Generator which yields all matching users.zGenerating user results from zself.roles=z, self.roles_regex=z, self.roles_equal=zself.level=z, self.level_dom=z, self.level_domby=z, self.level_incomp=zself.range_=z, self.range_subset=z, self.range_overlap=z, self.range_superset=z, self.range_proper=N)ZlogZinfoZpolicyZ_match_name_debugZdebugrolesr   roles_equallevel	level_domlevel_dombylevel_incomprange_range_subsetrange_overlaprange_supersetrange_properZusersZ_match_namer   Zmatch_regex_or_setZmatch_levelZ	mls_levelZmatch_rangeZ	mls_range)ZselfZusers   & r   resultsZUserQuery.resultsA   s    5dkk]CDtxx(+$**&:)9)9(;;Od>N>N=PQR+$**&8(99MD<L<L;N O-++-/ 	0,$++'<$*;*;)==S@R@R?T U/--//D$2C2C1EG 	H KK%%'D##D))zzz$"9"9JJJJ$$$$	#& #&
 zzz$"2"2NNJJNN$$%%#' #' {{{4#3#3NNKK%%&&''%%$' $' J9 (s-   FJ4AJ4J4#AJ45J4	AJ4&J4c                s   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R	&   # )
r	   r   r   r   r   r   r   r   r   r   )Zboolr
   r   r   r   r      s     N O P Q R S V W X Y Z  [ \ ] ` a b c r   ) N)Z__name__Z
__module__Z__qualname__Z__firstlineno__Z__doc__r   r   ZLevelr   r   r   r   ZRanger   r   r   r   r   r   ZRoler   r   r   r   Z__annotate_func__Z__static_attributes__Z__classdictcell__)r      @r   r   r      s     "H y/OEIKL	0PFML NL!)..1-OEKK& &g  r   c                s    V ^8  d   Qh/ ^ \         9   d,   \        P                  \        \        R3,          ,          ;R&   # )r	   .__all__)__conditional_annotations__typingZFinalZtupleZstr)r   s   "r   r   r      s+     $ $ 8 7eCHo	& 7 %r   )r   )r    Zcollections.abcr    r!   Z r   r   r   r   Zdescriptorsr   r   r   Z	MatchNameZPolicyQueryr   r   )r    r   r   <module>r"      s>   
 % $  , , B)7 7Y  %"3"3 Yr   