+
    ,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t	] ^ k  ! R R]P                  ]P                  4      tR# )i    )IterableN)mixinsquery	policyreputilPortconQueryc                   s   a  ] tR t^t o RtRtRtRtRtRt	Rt
]V 3R lR l4       t]P                  V 3R lR l4       t]V 3R lR	 l4       t]P                  V 3R
 lR l4       tV 3R lR ltV 3R ltRtV tR# )r   a  
Port context query.

Parameter:
policy          The policy to query.

Keyword Parameters/Class attributes:
protocol        The protocol to match (socket.IPPROTO_TCP for
                TCP or socket.IPPROTO_UDP for UDP)

ports           A 2-tuple of the port range to match. (Set both to
                the same value for a single port)
ports_subset    If true, the criteria will match if it is a subset
                of the portcon's range.
ports_overlap   If true, the criteria will match if it overlaps
                any of the portcon's range.
ports_superset  If true, the criteria will match if it is a superset
                of the portcon's range.
ports_proper    If true, use proper superset/subset operations.
                No effect if not using set operations.

user            The criteria to match the context's user.
user_regex      If true, regular expression matching
                will be used on the user.

role            The criteria to match the context's role.
role_regex      If true, regular expression matching
                will be used on the role.

type_           The criteria to match the context's type.
type_regex      If true, regular expression matching
                will be used on the type.

range_          The criteria to match the context's range.
range_subset    If true, the criteria will match if it is a subset
                of the context's range.
range_overlap   If true, the criteria will match if it overlaps
                any of the context's range.
range_superset  If true, the criteria will match if it is a superset
                of the context's range.
range_proper    If true, use proper superset/subset operations.
                No effect if not using set operations.
NFc                B   < V ^8  d   QhRS[ P                  R,          /#    returnN)r   PortconRangeformat__classdict__   ";/usr/lib64/python3.14/site-packages/setools/portconquery.py__annotate__PortconQuery.__annotate__C   s      y--4     c                    V P                   # N)_portsself   &r   portsPortconQuery.portsB   s    {{r   c                sl   < V ^8  d   QhRS[ P                  S[S[S[3,          ,          R,          RR/# r   valueNr	   )r   r
   tupleZintr   r   r   r   r   G   s7     L L911E#s(OCdJ Lt Lr   c                s    \        V\        P                  4      '       d	   Wn        R # V'       d   \        P                  ! V!  MR V n        R # r   )Z
isinstancer   r
   r   r   r      &&r   r   r   F   s0    eY3344K<A)00%8tDKr   c                r   r   )r   PortconProtocolr   r   r   r   r   N   s      )33d: r   c                r   r   )	_protocolr   r   r   protocolPortconQuery.protocolM   s    ~~r   c                sV   < V ^8  d   QhRS[ P                  S[,          R,          RR/# r   )r   r    strr   r   r   r   r   R   s+     " "i77#=D " "r   c                sp    V'       d'   \         P                  P                  V4      V n        R # R V n        R # r   )r   r    Zlookupr!   r   r   r   r"   r#   Q   s$    &66==eDDN!DNr   c                sD   < V ^8  d   QhRS[ S[P                  ,          /# )r   r	   )r    r   ZPortconr   r   r   r   r   X   s      )"3"34 r   c              #  sx  "   V P                   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                  RV P                  : 24       V P                  V P                   4       V P                  P                  4        F  pV P                  '       d`   \        P                  ! VP                  V P                  V P                  V P
                  V P                  V P                  4      '       g   Kt  V P                  '       d   V P                  VP                  8w  d   K  V P                  VP                  4      '       g   K  Vx  K  	  R# 5i)	z-Generator which yields all matching portcons.z Generating portcon results from zself.ports=z, self.ports_overlap=z, self.ports_subset=z, self.ports_superset=z, self.ports_proper=zProtocol: self.protocol=N)ZlogZinfoZpolicyZdebugr   ports_overlapports_subsetports_supersetports_properr"   Z_match_context_debugZportconsr   Zmatch_rangeZ_match_contextZcontext)r   Zportcons   & r   resultsZPortconQuery.resultsX   sP    8FG+$**&<););(==R@Q@Q?S T/--//D$2C2C1EG 	H2DMM#345!!$((+{{++-Gzzz$"2"2MMJJ%%&&''%%#' #' }}}'2B2B!B&&w77M# .s   EF:F:0=F:.F:c                s   < V ^8  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[;R&   S[;R&   S[;R&   S[;R&   # )r   Nr!   r   r&   r%   r'   r(   )r   r    r
   Zboolr   r   r   r   r      su     \ ((4/6] ^ ""T)0_ ` a b c d  e f g r   )r   r!   )Z__name__Z
__module__Z__qualname__Z__firstlineno__Z__doc__r!   r   r&   r%   r'   r(   Zpropertyr   Zsetterr"   r)   Z__annotate_func__Z__static_attributes__Z__classdictcell__)r      @r   r   r      s     *X 37I,0FLM NL  \\L L   __" " W  r   c                s    V ^8  d   Qh/ ^ \         9   d,   \        P                  \        \        R3,          ,          ;R&   # )r   .__all__)__conditional_annotations__typingZFinalr   r$   )r   s   "r   r   r      s+     $ $
 ; :eCHo	& : %r   )r   )r,   Zcollections.abcr    r-   Z r   r   r   r   r+   ZMatchContextZPolicyQueryr   r   )r,   r*   r   <module>r.      s;   
 % $  , ,): :d6&&(9(9 dr   