
    (jJP              	         % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJr	  S SK
JrJrJrJrJrJr  SSKJrJrJrJrJr  SSKJr  SSKJr  SS	KJrJr  SS
KJr  \(       a  S SKJ r   / SQr!S/S jr"\\#\\#\	\#   4   /\$4   r%\S   r& SS1r'1 Skr( " S S\)5      r* " S S\)5      r+ " S S\,5      r- " S S\5      r.    S0S jr/S1S jr0 S2     S3S jjr1S S S \Rd                  \Rd                  \Rf                  \Rd                  S  S!.r4S"\5S#'   S4S$ jr6        S5S% jr7      S6S& jr8      S7S' jr9S8S( jr:\Rv                  S9S) j5       r<S9S* jr= " S+ S,5      r>S:S- jr?    S;S. jr@g)<    )annotationsN)Set)TYPE_CHECKINGCallableLiteral	TypedDictUnioncast   )
MarkerAtom
MarkerListOpValueVariable)parse_marker)ParserSyntaxError)InvalidSpecifier	Specifier)canonicalize_name)Mapping)EnvironmentEvaluateContextInvalidMarkerMarkerUndefinedComparisonUndefinedEnvironmentNamedefault_environmentc                     [         $ N)__all__     I/var/www/html/KUNJ/venv/lib/python3.13/site-packages/packaging/markers.py__dir__r$   #   s    Nr"   )metadata	lock_filerequirementextrasdependency_groups>   python_versionplatform_releasepython_full_versionimplementation_versionc                      \ rS rSrSrSrg)r   =   zRaised when attempting to create a :class:`Marker` from invalid input.

This error indicates that the given marker string does not conform to the
:ref:`specification of dependency specifiers <pypug:dependency-specifiers>`.
r!   N__name__
__module____qualname____firstlineno____doc____static_attributes__r!   r"   r#   r   r   =   s    r"   r   c                      \ rS rSrSrSrg)r   E   zRaised when evaluating an unsupported marker comparison.

This can happen when marker values are compared as versions but do not
conform to the :ref:`specification of version specifiers
<pypug:version-specifiers>`.
r!   Nr0   r!   r"   r#   r   r   E   s    r"   r   c                      \ rS rSrSrSrg)r   N   a  Raised when evaluating a marker that references a missing environment key.

Subclasses :class:`KeyError` so that code catching the bare ``KeyError`` that
a missing environment lookup historically produced keeps working.

.. versionchanged:: 26.3
    Now subclasses :class:`KeyError` (was :class:`ValueError`) and is raised by
    :meth:`Marker.evaluate` for missing environment keys, where a bare
    ``KeyError`` was raised before.
r!   Nr0   r!   r"   r#   r   r   N   s    	r"   r   c                      \ rS rSr% SrS\S'    S\S'    S\S'    S\S'    S\S'    S\S	'    S\S
'    S\S'    S\S'    S\S'    S\S'   Srg)r   [   zx
A dictionary that represents a Python environment as captured by
:func:`default_environment`. All fields are required.
strimplementation_namer-   os_nameplatform_machiner+   platform_systemplatform_versionr,   platform_python_implementationr*   sys_platformr!   N)r1   r2   r3   r4   r5   __annotations__r6   r!   r"   r#   r   r   [   s    
 >
 L
      %(' 9r"   r   c                   [        U [        5      (       a  U  Vs/ s H  n[        U5      PM     sn$ [        U [        5      (       d  U $ U u  p#n[        U[        5      (       aF  UR
                  S:X  a6  [        U[        5      (       a!  [        UR
                  5      n[        U5      nO[        U[        5      (       aF  UR
                  S:X  a6  [        U[        5      (       a!  [        UR
                  5      n[        U5      nO\[        U[        5      (       aG  UR
                  [        ;   a3  [        U[        5      (       a  [        [        UR
                  5      5      nX#U4$ s  snf )Nextra)	
isinstancelist_normalize_extrastupler   valuer   r   MARKERS_ALLOWING_SET)resultrlhsoprhsnormalized_extras         r#   rJ   rJ      s    &$.45f!!$f55fe$$LCS#x  SYY'%9je>T>T,SYY7$%	C	"	"syyG';
3PU@V@V,SYY7$%3!!II--sE"" %cii01C</ 6s   E$c                D    U  Vs/ s H  n[        U5      PM     sn$ s  snf )z
Normalize extra values.
)rJ   )resultsrO   s     r#   _normalize_extra_valuesrV      s"    
 +22'Qa '222s   c                   [        U [        [        [        45      (       d   e[        U [        5      (       a:  [	        U 5      S:X  a+  [        U S   [        [        45      (       a  [        U S   US9$ [        U [        5      (       a8  S U  5       nU(       a  SR                  U5      $ SSR                  U5      -   S-   $ [        U [        5      (       a/  SR                  U  Vs/ s H  o3R                  5       PM     sn5      $ U $ s  snf )Nr   r   firstc              3  6   #    U  H  n[        US S9v   M     g7f)FrX   N)_format_marker).0ms     r#   	<genexpr>!_format_marker.<locals>.<genexpr>   s     @A/s    ())rH   rI   rK   r=   lenr[   join	serialize)markerrY   innerr]   s       r#   r[   r[      s     ftUC01111
 	64  K1vay4-00fQiu55&$@@88E?"%(3..	FE	"	"xx71788 8s   #Dc                
    X;   $ r   r!   rP   rR   s     r#   <lambda>rj      s    3:r"   c                
    X;  $ r   r!   ri   s     r#   rj   rj      s    s~r"   c                    gNFr!   _lhs_rhss     r#   rj   rj          Er"   c                    grm   r!   rn   s     r#   rj   rj      rq   r"   )inznot in<z<=z==z!=z>=>zdict[str, Operator]
_operatorsc          	        UR                  5       nU[        ;   a    [        U U 35      nUR                  U SS9$ [
        R                  U5      nUc  [        SU< SU < SU< S35      eU" X5      $ ! [         a     NDf = f)NT)prereleasesz
Undefined z on z and .)re   MARKERS_REQUIRING_VERSIONr   containsr   rv   getr   )rP   rQ   rR   keyop_strspecopers          r#   _eval_opr      s    \\^F
''	8xu-.D ==$=77&NN62D|!JrfDuSG1"MNN>   		s   A3 3
B ?B c                   US:X  a  [        U[        5      (       d   S5       eX4$ U[        ;   aR  [        U[        5      (       a  [        U 5      [        U5      4$ [        U 5      U Vs1 s H  n[        U5      iM     sn4$ X4$ s  snf )NrG   zextra value must be a string)rH   r=   rM   r   )rP   rR   r}   vs       r#   
_normalizer     s     g~#s##C%CC#z
""c3%c*,=c,BCC%c*3,O3a->q-A3,OPP 8O -Ps   )Bc                @     X   $ ! [          a    [        U5      S ef = fr   )KeyErrorr   )environmentr}   s     r#   _lookup_environmentr     s,    6 6&s+56s    c           
        / /nU  GHB  n[        U[        5      (       a  US   R                  [        X15      5        M8  [        U[        5      (       a  Uu  pEn[        U[
        5      (       a$  UR                  n[        X5      nUR                  n	O#UR                  nUR                  n[        X5      n	[        U[        5      (       d%  [        SU< SU SUR                  5       < S35      e[        XUS9u  pUS   R                  [        XXS95        GM  US:X  a  UR                  / 5        GM-  US:X  a  GM6  [        S	U< 35      e   [        S
 U 5       5      $ )NzSet-valued marker z= can only be used with the membership form (e.g. "<name>" in z-); it cannot appear on the left-hand side of ry   )r}   orandzUnexpected marker c              3  8   #    U  H  n[        U5      v   M     g 7fr   )all)r\   items     r#   r^   $_evaluate_markers.<locals>.<genexpr>G  s     ,VTs4yyVs   )rH   rI   append_evaluate_markersrK   r   rL   r   r=   r   re   r   r   	TypeErrorany)
markersr   groupsrf   rP   rQ   rR   environment_key	lhs_value	rhs_values
             r#   r   r   #  sH    !#tFfd##2J/DE&&!LCS#x(("%))/M	II	II	"%))/M	i--)((; <B&' (!||~03  $.i#X I2JhyiUVt^MM"u_0
;<<; > ,V,,,r"   c                    U R                    SU R                   SU R                   3nU R                  nUS:w  a  XS   [	        U R
                  5      -   -  nU$ )Nry   finalr   )majorminormicroreleaselevelr=   serial)infoversionkinds      r#   _format_full_versionr   J  sU    Adjj\4::,7GDw7S---Nr"   c                    [        [        R                  R                  5      n [        R                  R                  nUU [
        R                  [        R                  " 5       [        R                  " 5       [        R                  " 5       [        R                  " 5       [        R                  " 5       [        R                  " 5       SR                  [        R                  " 5       SS 5      [        R                  S.$ )aB  Build the default marker environment for the current Python process.

The values are derived from process-constant data (the running interpreter
and the host platform), so this is cached and built only once. The result is
shared between callers and must never be mutated; :func:`default_environment`
returns a fresh copy.
ry   N   )r>   r-   r?   r@   r+   rA   rB   r,   rC   r*   rD   )r   sysimplementationr   nameosplatformmachinereleasesystemr*   python_implementationrd   python_version_tuple)iverr>   s     r#   _cached_default_environmentr   R  s       2 2 : :;D,,112"&77$,,.$,,.#??,$,,.'668*2*H*H*J((8#@#@#B2A#FG r"   c                 <    [        S[        [        5       5      5      $ )aU  Return the default marker environment for the current Python process.

This is the base environment used by :meth:`Marker.evaluate`. A fresh copy
is returned on every call so callers may freely mutate the result; a shallow
copy suffices because all values are immutable strings.

.. versionchanged:: 26.3
    The environment is computed once per process and cached, since it is
    derived from process-constant data. Patching ``platform``/``sys``/``os``
    after the first call has no effect; pass an explicit ``environment`` to
    :meth:`Marker.evaluate` to evaluate against different values.
r   )r
   dictr   r!   r"   r#   r   r   l  s     t$?$ABCCr"   c                      \ rS rSrSrSrSS jr\SS j5       rSS jr	SS jr
SS jrSS	 jrSS
 jrSS jrSS jrSS jr  S     SS jjrSrg)r   i|  a  Represents a parsed dependency marker expression.

Marker expressions are parsed according to the
:ref:`specification of dependency specifiers <pypug:dependency-specifiers>`.

:param marker: The string representation of a marker expression.
:raises InvalidMarker: If ``marker`` cannot be parsed.

Instances are safe to serialize with :mod:`pickle`. They use a stable
format so the same pickle can be loaded in future packaging releases.

.. versionchanged:: 26.2

    Added a stable pickle format. Pickles created with packaging 26.2+ can
    be unpickled with future releases.  Backward compatibility with pickles
    from packaging < 26.2 is supported but may be removed in a future
    release.
)_markersc                    / U l          [        [        U5      5      U l         g ! [         a  n[	        [        U5      5      UeS nAff = fr   )r   rV   _parse_markerr   r   r=   )selfrf   es      r#   __init__Marker.__init__  sD     %'	/3M&4IJDM" ! 	/A'Q.	/s   # 
AAAc                4    U R                  U 5      nXl        U$ )zCreate a Marker instance from a pre-parsed marker tree.

This avoids re-parsing serialised marker strings when combining markers.
)__new__r   )clsr   news      r#   _from_markersMarker._from_markers  s     kk#
r"   c                ,    [        U R                  5      $ r   )r[   r   r   s    r#   __str__Marker.__str__  s    dmm,,r"   c                P    SU R                   R                   S[        U 5      < S3$ )Nrt   ra   z)>)	__class__r1   r=   r   s    r#   __repr__Marker.__repr__  s&    4>>**+1SYM<<r"   c                *    [        [        U 5      5      $ r   )hashr=   r   s    r#   __hash__Marker.__hash__  s    CIr"   c                f    [        U[        5      (       d  [        $ [        U 5      [        U5      :H  $ r   )rH   r   NotImplementedr=   r   others     r#   __eq__Marker.__eq__  s(    %((!!4yCJ&&r"   c                    [        U 5      $ r   )r=   r   s    r#   __getstate__Marker.__getstate__  s     4yr"   c                   [        U[        5      (       a   [        [        U5      5      U l        g [        U[        5      (       a'  SU;   a!  US   n[        U[        5      (       a  X0l        g [        U[        5      (       aO  [        U5      S:X  a@  Uu  pE[        U[        5      (       a'  SU;   a!  US   n[        U[        5      (       a  X0l        g [        SU< 35      e! [
         a  n[        SU< 35      UeS nAff = f)NzCannot restore Marker from r   r   )rH   r=   rV   r   r   r   r   r   rI   rK   rc   )r   stateexcr   _	slot_dicts         r#   __setstate__Marker.__setstate__  s    eS!!R 7e8L M eT""zU':J'G'4(( 'eU##E
a LA)T**zY/F#J/gt,,$+M5eY?@@# % R"=eY GHcQRs   C   
C?*C::C?c                    [        U[        5      (       d  [        $ U R                  U R                  SUR                  /5      $ )zHCombine this marker with another using ``and``.

.. versionadded:: 26.1
r   rH   r   r   r   r   r   s     r#   __and__Marker.__and__  s7    
 %((!!!!4==%"HIIr"   c                    [        U[        5      (       d  [        $ U R                  U R                  SUR                  /5      $ )zGCombine this marker with another using ``or``.

.. versionadded:: 26.1
r   r   r   s     r#   __or__Marker.__or__  s7    
 %((!!!!4==$"GHHr"   Nc                "   [        S[        5       5      nUS:X  a  U[        5       [        5       S.-  nOUS:X  a  SUS'   Ub0  X1-  nSU;   a&  [        SUS   5      nU(       a  [        U5      OSUS'   [	        U R
                  [        U5      5      $ )a  Evaluate a marker.

Return the boolean from evaluating this marker against the environment.
The environment is determined from the current Python process unless
passed in explicitly.

:param environment: Mapping containing keys and values to override the
   detected environment.
:param EvaluateContext context: The context in which the marker is
    evaluated, which influences what marker names are considered valid.
    Accepted values are ``"metadata"`` (for core metadata; default),
    ``"lock_file"``, and ``"requirement"`` (i.e. all other situations).
:raises UndefinedComparison: If the marker uses a comparison on values
    that are not valid versions per the :ref:`specification of version
    specifiers <pypug:version-specifiers>`.
:raises UndefinedEnvironmentName: If the marker references a value that
    is missing from the evaluation environment.
:returns: ``True`` if the marker matches, otherwise ``False``.

.. versionchanged:: 25.0
    Added the ``context`` parameter, which influences which marker names
    are considered valid.
!dict[str, str | AbstractSet[str]]r&   )r(   r)   r%    rG   z
str | None)r
   r   	frozensetr   r   r   _repair_python_full_version)r   r   contextcurrent_environmentrG   s        r#   evaluateMarker.evaluate  s    8 #/1D1F
 k!#+%.[$  
"+-(".-- \+>w+GHKP/@/GVX#G, MM67JK
 	
r"   )rf   r=   returnNone)r   r   r   r   )r   r=   )r   int)r   objectr   bool)r   r   r   r   )r   r   r   r   )Nr%   )r   z+Mapping[str, str | AbstractSet[str]] | Noner   r   r   r   )r1   r2   r3   r4   r5   	__slots__r   classmethodr   r   r   r   r   r   r   r   r   r   r6   r!   r"   r#   r   r   |  s    & I/<  -='
A0JI DH#-2
@2
 !2
 
	2
 2
r"   r   c                <    U R                  S5      (       a  U  S3$ U $ )w
Work around platform.python_version() returning something that is not PEP 440
compliant for non-tagged Python builds.
+local)endswith)r,   s    r#   _pep440_python_full_versionr   -  s)    
 ##C((%&e,,r"   c                @    [        SU S   5      n[        U5      U S'   U $ )r   r=   r,   )r
   r   )envr,   s     r#   r   r   7  s-     uc*?&@A!<=P!QCJr"   )r   z	list[str])rN   MarkerList | MarkerAtom | strr   r   )rU   r   r   r   )T)rf   zlist[str] | MarkerAtom | strrY   zbool | Noner   r=   )
rP   r=   rQ   r   rR   str | AbstractSet[str]r}   r=   r   r   )rP   r=   rR   r   r}   r=   r   z"tuple[str, str | AbstractSet[str]])r   r   r}   r=   r   r   )r   r   r   r   r   r   )r   zsys._version_infor   r=   )r   r   )r,   r=   r   r=   )r   r   r   r   )A
__future__r   	functoolsoperatorr   r   r   collections.abcr   AbstractSettypingr   r   r   r   r	   r
   _parserr   r   r   r   r   r   r   
_tokenizerr   
specifiersr   r   utilsr   r   r    r$   r=   r   Operatorr   rM   rz   
ValueErrorr   r   r   r   r   rJ   rV   r[   eqnerv   rE   r   r   r   r   r   cacher   r   r   r   r   r!   r"   r#   <module>r     s  
 #   	  
 . K K @ @ 2 ) 3 $' S%[%5 567=>@A	 !"56  J * 
x 
J) JZ)"<3 @D(1<6 &-	!
++
++
++
++	!	#
 	"	)03'*6269<66$-$-&G$-	$-N  2D n
 n
b		*	&	r"   