
    "h/              	      \   U d dl mZ d dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZmZ ddlmZmZmZmZmZ ddlmZ ddlmZ ddlmZmZ dd	lmZ g d
Ze	eeeee   f   gef   Z e
d   Z!ddhZ" G d de#      Z$ G d de#      Z% G d de#      Z& G d de      Z'd%dZ(	 d&	 	 	 	 	 d'dZ)d d ejT                  ejV                  ejX                  ejZ                  ej\                  ej^                  dZ0de1d<   d(dZ2	 	 	 	 	 	 	 	 d)dZ3	 	 	 	 	 	 d*dZ4d+d Z5d,d!Z6 G d" d#      Z7	 	 	 	 d-d$Z8y).    )annotationsN)AbstractSetAnyCallableLiteral	TypedDictUnioncast   )
MarkerAtom
MarkerListOpValueVariable)parse_marker)ParserSyntaxError)InvalidSpecifier	Specifier)canonicalize_name)EvaluateContextInvalidMarkerMarkerUndefinedComparisonUndefinedEnvironmentNamedefault_environment)metadata	lock_filerequirementextrasdependency_groupsc                      e Zd ZdZy)r   zE
    An invalid marker was found, users should refer to PEP 508.
    N__name__
__module____qualname____doc__     S/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/packaging/markers.pyr   r   !       r(   r   c                      e Zd ZdZy)r   zP
    An invalid operation was attempted on a value that doesn't support it.
    Nr"   r'   r(   r)   r   r   '   r*   r(   r   c                      e Zd ZdZy)r   z\
    A name was attempted to be used that does not exist inside of the
    environment.
    Nr"   r'   r(   r)   r   r   -   s    r(   r   c                      e Zd ZU ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 ded
<   	 ded<   	 ded<   y)Environmentstrimplementation_nameimplementation_versionos_nameplatform_machineplatform_releaseplatform_systemplatform_versionpython_full_versionplatform_python_implementationpython_versionsys_platformN)r#   r$   r%   __annotations__r'   r(   r)   r.   r.   4   s    >
 L
      %(' 9r(   r.   c                L   t        | d   t              r| d   \  }}}t        |t              r0|j                  dk(  r!t	        |j                        }t        |      }n?t        |t              r/|j                  dk(  r t	        |j                        }t        |      }|||f| d<   | S )z!
    Normalize extra values.
    r   extra)
isinstancetupler   valuer   r   )resultslhsoprhsnormalized_extras        r)   _normalize_extra_valuesrF   |   s     '!*e$qzRc8$g)=0;()CX&399+?0;()C"c\
Nr(   c                   t        | t        t        t        f      sJ t        | t              r5t	        |       dk(  r't        | d   t        t        f      rt        | d         S t        | t              r3d | D        }|rdj                  |      S ddj                  |      z   dz   S t        | t              r-dj                  | D cg c]  }|j                          c}      S | S c c}w )Nr   r   c              3  6   K   | ]  }t        |d         yw)F)firstN)_format_marker).0ms     r)   	<genexpr>z!_format_marker.<locals>.<genexpr>   s     @A//@s    ())r>   listr?   r/   lenrJ   join	serialize)markerrI   innerrL   s       r)   rJ   rJ      s     ftUC011 	64 K1vay4-0fQi((&$@@88E?"%(3..	FE	"xx71788 8s   C%c                
    | |v S Nr'   rB   rD   s     r)   <lambda>rZ      s
    3#: r(   c                
    | |vS rX   r'   rY   s     r)   rZ   rZ      s
    s#~ r(   )inznot in<z<=z==z!=z>=>zdict[str, Operator]
_operatorsc           	     B   t        |t              r>	 t        dj                  |j	                         |g            }|j                  | d      S t        j                  |j	                               }|t        d|d| d|d       || |      S # t        $ r Y Nw xY w)N T)prereleasesz
Undefined z on z and .)
r>   r/   r   rS   rT   containsr   r_   getr   )rB   rC   rD   specopers        r)   _eval_oprh      s    #s	8RWWbllnc%:;<D ==$=77&NN2<<>:D|!JrfDuSG1"MNNS>   		s   *B 	BBc                   |dk(  r-t        |t              sJ d       t        |       t        |      fS |t        v rJt        |t              rt        |       t        |      fS t        |       |D ch c]  }t        |       c}fS | |fS c c}w )Nr=   zextra value must be a string)r>   r/   r   MARKERS_ALLOWING_SET)rB   rD   keyvs       r)   
_normalizerm      s     g~#s#C%CC!#&(9#(>??
""c3%c*,=c,BCC%c*3,Oa->q-A,OPP 8O -Ps   /B	c                d   g g}| D ]  }t        |t        t        t        f      sJ t        |t              r|d   j	                  t        ||             Pt        |t              r|\  }}}t        |t              r|j                  }||   }|j                  }	n|j                  }|j                  }||   }	t        |t              sJ d       t        ||	|      \  }}	|d   j	                  t        |||	             |dv sJ |dk(  s|j	                  g         t        d |D              S )Nzlhs must be a string)rk   )andorrq   c              3  2   K   | ]  }t        |        y wrX   )all)rK   items     r)   rM   z$_evaluate_markers.<locals>.<genexpr>   s     ,Ts4y,s   )r>   rQ   r?   r/   append_evaluate_markersr   r@   rm   rh   any)
markersenvironmentgroupsrU   rB   rC   rD   environment_key	lhs_value	rhs_values
             r)   rv   rv      s    !#tF "&4"455fd#2J/DE&!LCS#x("%))'8	II	II	"%))'8	i-E/EE#-i#X Iy2Jhy"i@A]**~b!-"0 ,V,,,r(   c                    | j                    d| j                   d| j                   }| j                  }|dk7  r||d   t	        | j
                        z   z  }|S )Nrc   finalr   )majorminormicroreleaselevelr/   serial)infoversionkinds      r)   format_full_versionr      sW    Adjj\4::,7GDw47S---Nr(   c                    t        t        j                  j                        } t        j                  j                  }|| t
        j                  t        j                         t        j                         t        j                         t        j                         t        j                         t        j                         dj                  t        j                         d d       t        j                  dS )Nrc      )r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   )r   sysimplementationr   nameosplatformmachinereleasesystemr9   python_implementationrS   python_version_tuple)iverr0   s     r)   r   r      s    s1199:D,,112"&77$,,.$,,.#??,$,,.'668*2*H*H*J((8#@#@#B2A#FG r(   c                  L    e Zd ZddZd	dZd	dZd
dZddZ	 	 d	 	 	 	 	 ddZy)r   c                    	 t        t        |            | _        y # t        $ r}t	        t        |            |d }~ww xY wrX   )rF   _parse_marker_markersr   r   r/   )selfrU   es      r)   __init__zMarker.__init__  s;    	/3M&4IJDM" ! 	/A'Q.	/s    	?:?c                ,    t        | j                        S rX   )rJ   r   r   s    r)   __str__zMarker.__str__,  s    dmm,,r(   c                    d|  dS )Nz	<Marker('z')>r'   r   s    r)   __repr__zMarker.__repr__/  s    4&$$r(   c                V    t        | j                  j                  t        |       f      S rX   )hash	__class__r#   r/   r   s    r)   __hash__zMarker.__hash__2  s     T^^,,c$i899r(   c                \    t        |t              st        S t        |       t        |      k(  S rX   )r>   r   NotImplementedr/   )r   others     r)   __eq__zMarker.__eq__5  s%    %(!!4yCJ&&r(   Nc                   t        dt                     }|dk(  r$|j                  t               t                      n
|dk(  rd|d<   ||j                  |       d|v r
|d   d|d<   t	        | j
                  t        |            S )a?  Evaluate a marker.

        Return the boolean from evaluating the given marker against the
        environment. environment is an optional argument to override all or
        part of the determined environment. The *context* parameter specifies what
        context the markers are being evaluated for, which influences what markers
        are considered valid. Acceptable values are "metadata" (for core metadata;
        default), "lock_file", and "requirement" (i.e. all other situations).

        The environment is determined from the current Python process.
        !dict[str, str | AbstractSet[str]]r   )r   r    r   ra   r=   )r
   r   update	frozensetrv   r   _repair_python_full_version)r   ry   contextcurrent_environments       r)   evaluatezMarker.evaluate;  s      #/1D1F
 k!&& {ik '  
"+-("&&{3 --2Eg2N2V/1#G, MM67JK
 	
r(   )rU   r/   returnNone)r   r/   )r   int)r   r   r   bool)Nr   )ry   zdict[str, str] | Noner   r   r   r   )	r#   r$   r%   r   r   r   r   r   r   r'   r(   r)   r   r     sD    /2-%:' .2#-"
*"
 !"
 
	"
r(   r   c                ^    t        t        | d         }|j                  d      r| d| d<   | S )z
    Work around platform.python_version() returning something that is not PEP 440
    compliant for non-tagged Python builds.
    r7   +local)r
   r/   endswith)envr7   s     r)   r   r   `  s=     sC(=$>?##C((;'<E%B!"Jr(   )rA   r   r   r   )T)rU   zlist[str] | MarkerAtom | strrI   zbool | Noner   r/   )rB   r/   rC   r   rD   str | AbstractSet[str]r   r   )rB   r/   rD   r   rk   r/   r   z"tuple[str, str | AbstractSet[str]])rx   r   ry   r   r   r   )r   zsys._version_infor   r/   )r   r.   )r   r   r   r   )9
__future__r   operatorr   r   r   typingr   r   r   r   r   r	   r
   _parserr   r   r   r   r   r   r   
_tokenizerr   
specifiersr   r   utilsr   __all__r/   r   Operatorr   rj   
ValueErrorr   r   r   r.   rF   rJ   ltleeqnegegtr_   r;   rh   rm   rv   r   r   r   r   r'   r(   r)   <module>r      s  
 #  	  
 N N N @ @ 2 ) 3 $ S%[%5 567=>@A "56 J * z E) EP" @D(1<: &-	
++
++
++
++		#
 	 	)03'(--&G-	-@$K
 K
\
	*
&
r(   