
    ܖiH                     J   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZmZmZmZ d dlmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ  e j:                         Zej?                  d	d
       ej?                  dd       ej?                  dd       ej?                  dd       ej?                  d       ej?                  dd       ej?                  ddd       ej?                  d       ej@                  jB                  jE                         Z# ejH                  d      Z%g dZ&dZ' ejH                  dejP                        Z)ejT                  jW                  d      xs  ejT                  dk(  xr ejX                  d k(  Z-h d!Z. G d" d#      Z/d$ Z0d% Z1d& Z2 G d' d(ejf                        Z3 G d) d*e4      Z5d+ Z6d, Z7d- Z8d. Z9d/ Z:d0 Z;d1 Z<d2 Z=d3 Z>d4 Z?d5 Z@d6 ZAd7 ZBd8 ZCd9 ZDd: ZEd; ZF	 	 	 dBd<ej                  d=ee   d>eHd?eHd@eeIee3e5f   f   f
dAZJy)C    N)defaultdict)AnyDictOptionalUnion)unquoteurljoinurlsplit)pathname2urlurl2pathname)tomli)requirements
specifiers)PipErrorreq*)nargsz-rz--requirementz-ez
--editablez-iz--index-urlz--extra-index-urlz-fz--find-linksz--hashappendhashes)actiondestz--trusted-hostz(^|\s)+#.*$)sshgithgbzrsftpsvnz.whlz^(?P<namever>(?P<name>.+?)-(?P<ver>.*?))
    ((-(?P<build>\d[^-]*?))?-(?P<pyver>.+?)-(?P<abi>.+?)-(?P<plat>.+?)
    \.whl|\.dist-info)$winclint>   sha256sha384sha512c                       e Zd Zd Zed        Zed        Zed        Zed        Zed        Z	ed        Z
d Zed	        Zed
        Zed        Zed        Zy)Linkc                 j    |j                  d      rt        |      }t        |      | _        || _        y )N\\)
startswith_path_to_urlr
   _parsed_url_url)selfurls     _/var/www/html/content-pipeline/venv/lib/python3.12/site-packages/pip_api/_parse_requirements.py__init__zLink.__init__.   s-    >>&!s#C#C= 	    c                     | j                   S N)r+   r,   s    r.   r-   zLink.url8   s    yyr0   c                     | j                   j                  d      }t        j                  |      }|st	        | j
                        \  }}|S t        |      }|sJ d| j                  d       |S )N/zURL z produced no filename)pathrstrip	posixpathbasename_split_auth_from_netlocnetlocr   r+   )r,   r6   namer;   _s        r.   filenamezLink.filename<   sk    yy$!!$' 0<IFAMt}>tDII=(=>>tr0   c                 ,    t        | j                        S r2   )_url_to_pathr-   r3   s    r.   	file_pathzLink.file_pathJ   s    DHH%%r0   c                 .    | j                   j                  S r2   )r*   schemer3   s    r.   rC   zLink.schemeN       &&&r0   c                 .    | j                   j                  S r2   )r*   r;   r3   s    r.   r;   zLink.netlocR   rD   r0   c                 @    t        | j                  j                        S r2   )r   r*   r6   r3   s    r.   r6   z	Link.pathV   s    t'',,--r0   c                 p    t        t        j                  | j                  j	                  d                  S )Nr5   )	_splitextr8   r9   r6   r7   r3   s    r.   splitextzLink.splitextZ   s'    ++DII,<,<S,ABCCr0   c                 (    | j                         d   S N   )rI   r3   s    r.   extzLink.ext]   s    }}q!!r0   c                     t        j                  | j                  j                  dd      d   j                  dd      d         S )N#rL   r   ?)r8   r9   r+   splitr3   s    r.   show_urlzLink.show_urla   s9    !!$))//#q"9!"<"B"B3"J1"MNNr0   c                 (    | j                   t        k(  S r2   )rM   WHEEL_EXTENSIONr3   s    r.   is_wheelzLink.is_wheele   s    xx?**r0   c                 &    | j                   t        v S r2   )rC   VCS_SCHEMESr3   s    r.   is_vcszLink.is_vcsi   s    {{k))r0   N)__name__
__module____qualname__r/   propertyr-   r>   rA   rC   r;   r6   rI   rM   rR   rU   rX    r0   r.   r%   r%   -   s         & & ' ' ' ' . .D " " O O + + * *r0   r%   c                     t        j                  |       \  }}|j                         j                  d      r|dd  |z   }|d d }||fS )N.tar)r8   rI   lowerendswith)r6   baserM   s      r.   rH   rH   n   sN    ""4(ID#zz|V$23i#oCRy9r0   c                     d| vr| dfS | j                  dd      \  }} d }d|v r|j                  dd      \  }}n|d }}t        |      }|t        |      }| ||ffS )N@)NNrL   :)rsplitrQ   r   )r;   authpwusers       r.   r:   r:   v   s|    
&|##
 ==a(LD&B
d{ ::c1%bb4=D	~R[D":r0   c                 B   | j                  d      sJ d| d       t        |       \  }}}}}|r|dk(  rd}nt        rd|z   }nt        d|       t	        ||z         }t        r9|s7t        |      dk\  r)|d	   d
k(  r!|d   t        j                  v r|dd dv r|dd  }|S )Nfile:z1You can only turn file: urls into filenames (not )	localhost r'   z8non-local file URIs are not supported on this platform:    r   r5   rL         )rf   z:/)r(   r
   WINDOWS
ValueErrorr   lenstringascii_letters)r-   r=   r;   r6   s       r.   r@   r@      s    >> D	:3'CD  %SMAvtQV{*	&FsgN
 	
 &D 	INGsNGv+++1I$ABxKr0   c                        e Zd Z fdZ xZS )Requirementc                     |j                  dd       | _        |j                  dd      | _        |j                  d      | _        |j                  d      | _        t        |   |i | y )Nr   editableFr>   lineno)popr   r{   r>   r|   superr/   )r,   argskwargs	__class__s      r.   r/   zRequirement.__init__   sY    jj40

:u5

:.jj*$)&)r0   )rY   rZ   r[   r/   __classcell__)r   s   @r.   ry   ry      s    * *r0   ry   c                       e Zd Zd Zd Zy)UnparsedRequirementc                 J    || _         || _        || _        || _        || _        y r2   )r<   msg	exceptionr>   r|   )r,   r<   r   r>   r|   s        r.   r/   zUnparsedRequirement.__init__   s%    	 r0   c                     | j                   S r2   )r   r3   s    r.   __str__zUnparsedRequirement.__str__   s    xxr0   N)rY   rZ   r[   r/   r   r]   r0   r.   r   r      s    r0   r   c                 d    t        |       5 }|j                         cd d d        S # 1 sw Y   y xY wr2   )open	readlines)r>   fs     r.   
_read_filer      s)    	h 1{{}  s   &/c                 $    t         j                  j                   v r0d}t         j                  j                         r|dz  }n<|d z  z  }n3d v rt	         fdt
        D              sd}nt        j                         }t        d d|      )	NzIt looks like a path.z It does exist.z File '%s' does not exist.=c              3   &   K   | ]  }|v  
 y wr2   r]   ).0opr   s     r.   	<genexpr>z-_check_invalid_requirement.<locals>.<genexpr>   s     >bc	>s   z,= is not a valid operator. Did you mean == ?zInvalid requirement: 'z'
)	osr6   sepexistsany	operators	traceback
format_excr   )r   add_msgs   ` r.   _check_invalid_requirementr      sz    	ww{{c)77>>#((G3s;;G	C>I>>@&&(
c7C
DDr0   c                     t        j                  d|       }d }|r&|j                  d      }|j                  d      }||fS | }||fS )Nz^(.+)(\[[^\]]+\])$rL   rq   )rematchgroup)r6   mextraspath_no_extrass       r.   _strip_extrasr      sT    
&-AF 6!! 6!!r0   c                 v    t        j                  d      }|j                  |       }|sy |j                  d      S )Nz[#&]egg=([^&]*)rL   )r   compilesearchr   )r-   _egg_fragment_rer   s      r.   _egg_fragmentr      s6    zz"45##C(E;;q>r0   c                     t         j                  j                  t         j                  j                  |             } t	        dt        |             }|S )Nrl   )r   r6   normpathabspathr	   r   )r6   r-   s     r.   r)   r)      s9    77BGGOOD12D
'<-
.CJr0   c                    t         j                  j                  | d      }t         j                  j                  | d      }t         j                  j                  |      }t         j                  j                  |      }|s|st	        |  d      |rht        |d      5 }t        j                  |j                               }|j                  di       j                  d      }||cd d d        S 	 d d d        	 t        t         j                  j                  | d            5 }t        j                  |j                               }d d d        j                  D 	cg c]y  }	t        |	t        j                        r]t        |	j                  t        j                         r9|	j                  j"                  j$                  dk(  r|	j                  j&                  { c}	d	   }
|
D cg c]  }|j(                  dk(  s|j                    c}d	   }|j*                  S # 1 sw Y   +xY w# 1 sw Y   xY wc c}	w c c}w # t,        t.        t0        t2        f$ r t	        d
| z        w xY w)Npyproject.tomlsetup.pyzW does not appear to be a Python project: neither 'setup.py' nor 'pyproject.toml' found.zutf-8)encodingprojectr<   setupr   zNDirectory %r is not installable. Could not parse package name from 'setup.py'.)r   r6   joinisfiler   r   r   loadsreadgetastparsebody
isinstanceExprvalueCallfuncidkeywordsargs
IndexErrorAttributeErrorIOErrorOSError)r6   pyproject_tomlsetup_pyhas_pyproject	has_setupr   pp_tomlr<   treeexprsetup_kwargskwr   s                r.   _parse_local_package_namer      s   WW\\$(89Nww||D*-HGGNN>2Mx(If = >
 	
 .73 	qkk!&&(+G;;y"-11&9D		 	  	
"'',,tZ01 	'Q99QVVX&D	' 		
$)4::sxx0

""g-	 JJ
  %1EbBFFf4DEaHww'	 		' 	'
 F9 
<>BC
 	

sP    AH<)H? %$H)	H? A>H5
H? 'H:<H:
H? H&)H2.H? ?(I'c                    | }t        |      \  }}|}t        j                  j                  |      rVt        j                  j	                  t        j                  j                  |d            st        d|z        t        |      }|j                         j                  d      rt        |      |fS d|vrt        d| z        t        |      }|st        d| z        ||fS )Nr   z;Directory %r is not installable. File 'setup.py' not found.rl   +zb%s should either be a path to a local project or a VCS url beginning with svn+, git+, hg+, or bzr+zZCould not detect requirement name for '%s', please specify one with #egg=your_package_name)r   r   r6   isdirr   r   r   r)   ra   r(   r   r   )editable_reqr-   url_no_extrasr   original_urlpackage_names         r.   _parse_editabler     s    
C *#.M6 L	ww}}\"ww~~bggll<DEM 
 %]3''0 )6EE
#~68DE
 	

 !%L*,89
 	

 r0   c              #   D   K   | t         } |D ]  } | |      r|  y wr2   )bool)	predicateiterablexs      r.   _filterfalser   D  s,     	 |Gs     c                 t    |r|j                   nd }|r$t        j                  |      t        fd|       } | S )Nc                 ,    j                  | d         S rK   )r   )epatterns    r.   <lambda>z_skip_regex.<locals>.<lambda>P  s    GNN1Q4,@ r0   )skip_requirements_regexr   r   r   )
lines_enumoptions
skip_regexr   s      @r.   _skip_regexr   L  s6    4;00J**Z(!"@*M
r0   c              #   ~   K   | D ]4  \  }}t         j                  d|      }|j                         }|s/||f 6 yw)z1
    Strips comments and filter empty lines.
    ro   N)
COMMENT_REsubstrip)r   line_numberlines      r.   _ignore_commentsr   T  sE      ( $T~~b$'zz|t##	$s   1=	=c                 R    d| vry | j                  dd      d   j                         S )Nrf   rL   r   )rQ   ra   )r-   s    r.   _get_url_schemer   _  s+    
#~99S!Q%%''r0   c                 8    t        |       }|y|g dt        z   v S )NF)httphttpsfileftp)r   rW   )r<   rC   s     r.   _is_urlr   e  s%    T"F~5CCCr0   c                     t         j                  j                  | v ryt         j                  j                  t         j                  j                  | v ry| j	                  d      ryy)NT.F)r   r6   r   altsepr(   )r<   s    r.   _looks_like_pathr   l  sG    	ww{{d	ww~~!bggnn&<sr0   c                 <   t         j                  j                  |       syt         j                  j                  t         j                  j	                  | d            ryt         j                  j                  t         j                  j	                  | d            ryy)NFr   Tr   )r   r6   r   r   r   )r6   s    r.   _is_installable_dirr   v  s]    77==	ww~~bggll4)9:;	ww~~bggll445r0   c                 f    t        |       d   j                         }|dt        ddddddd	d
ddfv ryy)NrL   z.zipz.tar.bz2z.tbzz.tar.gzz.tgzr_   z.tar.xzz.txzz.tlzz.tar.lzz	.tar.lzmaTF)rH   ra   rT   )r<   rM   s     r.   _is_archive_filer    sR    
D/!

"
"
$C
! $ r0   c                    t        |      rDt        j                  j                  |       r%t	        |       rt        |       S t        d|d      t        |       sy t        j                  j                  |       rt        |       S |j                  dd      }t        |      dk\  rt        |d         sy t        |       S )Nz
Directory zC is not installable. Neither 'setup.py' nor 'pyproject.toml' found.re   rL   rq   r   )r   r   r6   r   r   r)   r   r  r   rQ   ru   )r6   r<   urlreq_partss      r.   _get_url_from_pathr    s    "''--"5t$%%  !* *
 	
 D!	ww~~dD!!::c1%L
<A&6|A&G r0   c           	      l   | }t         D ])  }| j                  |dz         s| t        |      dz   d  }  n t        |       rdnd}d }d }d| v r| j	                  |d      \  } }t        |       rt        |       }nct        j                  j                  t        j                  j                  |             }t        |      \  }}t        ||       }	|	t        |	      }|L|j                  dk(  rxt        j                  d|j                        rXt        t!        t        j                  j                  t        j                  j                  |j                                          }|j"                  rt$        j'                  |j(                        }
|
t+        d|j(                         |
j-                  d      j/                  d	d
      }|
j-                  d      j/                  d	d
      }| d| } n6t1        |j                        } | t+        d|       |  d|j                   } ||  | | } | S )Nr   rL   z; ;r   z\.\./zInvalid wheel name: r<   r=   -verz==zMissing egg fragment in URL: re   )rW   r(   ru   r   rQ   r%   r   r6   r   r   r   r  rC   r   r   r-   r)   rU   WHEEL_FILE_REr   r>   r   r   replacer   )req_stroriginal_req_strv
marker_sep
marker_strlinkr6   pr=   r-   
wheel_info
wheel_namewheel_versions                r.   _parse_requirement_urlr    s     a#g&c!fqjl+G !)sJJD
g~%mmJ:wG}ww 89T"1 G,?9D ;;& RYYx%BRWW%5%5bggoodii6P%QRSD==&,,T]];J!!5dmm_EFF#))&199#sCJ&,,U3;;CEM#B}o6G $DHH-G!>?O>PQRR 	488*-G Ij\*6Nr0   r>   r   include_invalidstrict_hashesreturnc           
         | h}t               }i }|r|j                         } t        j                  j	                  |       }|j                  |        dj                  t        |             j                  dd      j                         }t        |d      }	t        |	      }	t        |	|      }	|	D ]5  \  }
}d }t        j                  |j                         j!                               \  }}t#        t$              }|j&                  rW|j&                  D ]H  }|j!                  dd      \  }}|t(        vrt+        d|dt(              ||   j-                  |       J |j.                  rKt1               j                  |j.                        }	 t3        |      }	 |t7        t9        |      | |
      }n|j@                  r@t        j                  j                  ||j@                        }||vrL|j                  |       n:|jB                  r-tE        |jB                        \  }}t7        |d|| |
d	
      }n	 |stG        |t4              s?djI                  | |
      |_%        |jL                  |jL                  jO                         s|jP                  |vr|||jP                  jS                         <   t+        d|d||jP                     d|jP                  d       |r|rc|jU                         D cg c]  }|j&                  r| }}tW        |      dkD  r+t+        d|d   jX                  d|d   jZ                        |S # t*        $ r&}|rt5        |t1        |      | |
      }n Y d }~d }~ww xY w# t:        j<                  $ rB 	 t?        |       n1# t*        $ r%}|rt5        |t1        |      | |
      }n Y d }~nd }~ww xY wY w xY wc c}w )Nro   z\
rL   rf   zInvalid --hash kind z, expected one of )r   r>   r|   z @ T)r>   r|   r{   z-r {} (line {})zDouble requirement given: z (already in z, name=rm   r   z"Missing hashes for requirement in z, line ).setr}   r   r6   dirnameaddr   r   r
  
splitlines	enumerater   r   parserparse_known_argsr   rQ   r   listr   VALID_HASHESr   r   r   strr  r   ry   dictr   InvalidRequirementr   requirementr{   r   r   format
comes_frommarkerevaluater<   ra   valuesru   r>   r|   )r>   r   r  r  to_parseparsedname_to_reqr  linesr   r|   r   r   knownr=   hashes_by_kindhshkindr  parsed_req_strr   	full_pathr<   r-   missing_hashess                            r.   parse_requirementsr7    s    zHUFK
<<>''//(+

8 
8,-55fbALLNua(
%j1
 W5
& F	LFDEIC..tzz|/A/A/CDHE1(.N|| << 5C #		#q 1ID#</&#\3  #4(//45 yy%**UYY/%;G%DN"{)*#'#7%-#)	 ""GGLL%2C2CD	F*LL++ENN;	c!!%s+%!!	  !#':;%6%=%=h%OCNzz-cjj6I6I6K 88;.47K 01"CHH 5sxxA GF	 f )4););)=P#SZZ#PP~"!!$--~a/@/G/GI 
 {   &1'3q68VT  $66 ""27;# "*"5gs1vxQW"XC!  ""P Qs`   MNOO	NM>>NON&%O&	O/O
OOOO)NFF)Kargparser   r   r8   r   rv   sysr   collectionsr   typingr   r   r   r   urllib.parser   r	   r
   urllib.requestr   r   pip_api._vendorr   pip_api._vendor.packagingr   r   pip_api.exceptionsr   ArgumentParserr  add_argument	Specifier
_operatorskeysr   r   r   rW   rT   VERBOSEr	  platformr(   r<   rs   r"  r%   rH   r:   r@   ry   objectr   r   r   r   r   r)   r   r   r   r   r   r   r   r   r   r  r  r  PathLiker   r#  r7  r]   r0   r.   <module>rJ     sK    
 	  	  
  # - - 3 3 5 ! > '	 	 	 	"   E  %   D/ *   D, '   D- (   ' (   D. )   HXH  =   $ %  ++002	RZZ'
8

 JJ	 ,,
!
!%
(
WS\\U-B-VrwwRV->* >*B0!H*,** *	& 	
E	"'
T"J$(D0,3p "!	ekkec]e e 	e
 
#u["556
67er0   