
    Xi;              	      p   % S SK Jr  S SKrS SKrS SKrS SKrS SKJr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  / 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)    S+S jr*S,S jr+ S-     S.S jjr,S S S \RZ                  \RZ                  \R\                  \RZ                  S S.r/S \0S!'   S/S" jr1        S0S# jr2      S1S$ jr3S2S% jr4S3S& jr5 " S' S(5      r6    S4S) jr7g)5    )annotationsN)AbstractSetCallableLiteralMapping	TypedDictUnioncast   )
MarkerAtom
MarkerListOpValueVariable)parse_marker)ParserSyntaxError)InvalidSpecifier	Specifier)canonicalize_name)EnvironmentEvaluateContextInvalidMarkerMarkerUndefinedComparisonUndefinedEnvironmentNamedefault_environmentc                     [         $ N)__all__     D/var/www/html/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   6   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   6   s    r!   r   c                      \ rS rSrSrSrg)r   >   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    Nr/   r    r!   r"   r   r   >   s    r!   r   c                      \ rS rSrSrSrg)r   G   zJRaised when evaluating a marker that references a missing environment key.r    Nr/   r    r!   r"   r   r   G   s    Tr!   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   K   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)r0   r1   r2   r3   r4   __annotations__r5   r    r!   r"   r   r   K   s    
 >
 L
      %(' 9r!   r   c                X   [        U [        5      (       d  U $ U u  pn[        U[        5      (       a1  UR                  S:X  a!  [	        UR                  5      n[        U5      nOE[        U[        5      (       a0  UR                  S:X  a   [	        UR                  5      n[        U5      nXU4$ )Nextra)
isinstancetupler   valuer   r   )resultlhsoprhsnormalized_extras        r"   _normalize_extrasrO      s     fe$$LCS#x  SYY'%9,SYY7$%	C	"	"syyG';,SYY7$%C<r!   c                D    U  Vs/ s H  n[        U5      PM     sn$ s  snf )z
Normalize extra values.
)rO   )resultsrs     r"   _normalize_extra_valuesrS      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   5      $ [        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   c              3  6   #    U  H  n[        US S9v   M     g7f)F)firstN)_format_marker).0ms     r"   	<genexpr>!_format_marker.<locals>.<genexpr>   s     @A/s    ())rG   listrH   r<   lenrW   join	serialize)markerrV   innerrY   s       r"   rW   rW      s     ftUC01111 	64  K1vay4-00fQi((&$@@88E?"%(3..	FE	"	"xx71788 8s   $Dc                
    X;   $ r   r    rK   rM   s     r"   <lambda>rg      s    3:r!   c                
    X;  $ r   r    rf   s     r"   rg   rg      s    s~r!   c                    gNFr    _lhs_rhss     r"   rg   rg          Er!   c                    grj   r    rk   s     r"   rg   rg      rn   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 .)rb   MARKERS_REQUIRING_VERSIONr   containsr   rs   getr   )rK   rL   rM   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 )NrF   zextra value must be a string)rG   r<   MARKERS_ALLOWING_SETr   )rK   rM   rz   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           
     b   / /nU  GH  n[        U[        5      (       a  US   R                  [        X15      5        M8  [        U[        5      (       a  Uu  pEn[        U[
        5      (       a  UR                  nX   nUR                  n	OUR                  nUR                  nX   n	[        U[        5      (       d   S5       e[        XUS9u  pUS   R                  [        XXS95        M  US:X  a  UR                  / 5        M  US:X  a  GM  [        SU< 35      e   [        S U 5       5      $ )Nzlhs must be a string)rz   orandzUnexpected marker c              3  8   #    U  H  n[        U5      v   M     g 7fr   )all)rX   items     r"   rZ   $_evaluate_markers.<locals>.<genexpr>  s     ,VTs4yyVs   )rG   r_   append_evaluate_markersrH   r   rI   r<   r   r~   	TypeErrorany)
markersenvironmentgroupsrc   rK   rL   rM   environment_key	lhs_value	rhs_values
             r"   r   r      s    !#tFfd##2J/DE&&!LCS#x(("%))'8	II	II	"%))'8	i--E/EE-#-i#X I2JhyiUVt^MM"u_0
;<</ 2 ,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$ )Nrv   finalr   )majorminormicroreleaselevelr<   serial)infoversionkinds      r"   _format_full_versionr     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.$ )zReturn the default marker environment for the current Python process.

This is the base environment used by :meth:`Marker.evaluate`.
rv   N   )r=   r,   r>   r?   r*   r@   rA   r+   rB   r)   rC   )r   sysimplementationr   nameosplatformmachinereleasesystemr)   python_implementationra   python_version_tuple)iverr=   s     r"   r   r   '  s    
   2 2 : :;D,,112"&77$,,.$,,.#??,$,,.'668*2*H*H*J((8#@#@#B2A#FG r!   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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.
)_markersc                    / U l          [        [        U5      5      U l         g ! [         a  n[	        [        U5      5      UeS nAff = fr   )r   rS   _parse_markerr   r   r<   )selfrc   es      r"   __init__Marker.__init__I  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_markersg  s     kk#
r!   c                ,    [        U R                  5      $ r   )rW   r   r   s    r"   __str__Marker.__str__q  s    dmm,,r!   c                P    SU R                   R                   S[        U 5      < S3$ )Nrq   r]   z)>)	__class__r0   r<   r   s    r"   __repr__Marker.__repr__t  s&    4>>**+1SYM<<r!   c                *    [        [        U 5      5      $ r   )hashr<   r   s    r"   __hash__Marker.__hash__w  s    CIr!   c                f    [        U[        5      (       d  [        $ [        U 5      [        U5      :H  $ r   )rG   r   NotImplementedr<   r   others     r"   __eq__Marker.__eq__z  s(    %((!!4yCJ&&r!   c                    [        U[        5      (       d  [        $ U R                  U R                  SUR                  /5      $ )Nr   rG   r   r   r   r   r   s     r"   __and__Marker.__and__  s5    %((!!!!4==%"HIIr!   c                    [        U[        5      (       d  [        $ U R                  U R                  SUR                  /5      $ )Nr   r   r   s     r"   __or__Marker.__or__  s5    %((!!!!4==$"GHHr!   Nc                L   [        S[        5       5      nUS:X  a!  UR                  [        5       [        5       S9  OUS:X  a  SUS'   Ub=  UR                  U5        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``.

!dict[str, str | AbstractSet[str]]r%   )r'   r(   r$    rF   z
str | None)r
   r   update	frozensetr   r   r   _repair_python_full_version)r   r   contextcurrent_environmentrF   s        r"   evaluateMarker.evaluate  s    2 #/1D1F
 k!&& {ik '  
"+-("&&{3-- \+>w+GHKP/@/GVX#G, MM67JK
 	
r!   )rc   r<   returnNone)r   r   r   r   )r   r<   )r   int)r   objectr   bool)r   r   r   r   )Nr$   )r   z+Mapping[str, str | AbstractSet[str]] | Noner   r   r   r   )r0   r1   r2   r3   r4   	__slots__r   classmethodr   r   r   r   r   r   r   r   r5   r    r!   r"   r   r   =  sw     I/<  -='J
I DH#-.
@.
 !.
 
	.
 .
r!   r   c                `    [        SU S   5      nUR                  S5      (       a  U S3U S'   U $ )zw
Work around platform.python_version() returning something that is not PEP 440
compliant for non-tagged Python builds.
r<   r+   +local)r
   endswith)envr+   s     r"   r   r     s@     uc*?&@A##C(((;'<E%B!"Jr!   )r   z	list[str])rJ   MarkerList | MarkerAtom | strr   r   )rQ   r   r   r   )T)rc   zlist[str] | MarkerAtom | strrV   zbool | Noner   r<   )
rK   r<   rL   r   rM   str | AbstractSet[str]rz   r<   r   r   )rK   r<   rM   r   rz   r<   r   z"tuple[str, str | AbstractSet[str]])r   r   r   r   r   r   )r   zsys._version_infor   r<   )r   r   )r   r   r   r   )8
__future__r   operatorr   r   r   typingr   r   r   r   r   r	   r
   _parserr   r   r   r   r   r   r   
_tokenizerr   
specifiersr   r   utilsr   r   r#   r<   r   Operatorr   r   rw   
ValueErrorr   r   r   r   rO   rS   rW   eqners   rD   r~   r   r   r   r   r   r   r    r!   r"   <module>r      s  
 #  	  
 R R R @ @ 2 ) 3 $ S%[%5 567=>@A !"56  J * Uz UJ) JZ)" 3 @D(1<: &-	!
++
++
++
++	!	#
 	"	)03'*--&G-	-B,{
 {
|
	*
&
r!   