o
    Vh                  
   @  s  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 d dl	m
Z
 d dl	mZ d dl	mZ d dl	mZ d dlmZ d d	lmZ d d
lmZ e
rZd dlmZ d dlmZ d dlmZ eeeeeeeeeef f ee f f ZedeeZh dZ dddZ!G dd dZ"dS )    )annotationsN)Path)TYPE_CHECKING)TypeVar)Union)cast)
Dependency)InlineTable)DirectOrigin)VCSDependency)ArtifactCache)EnvBaseSpec>   git+sshgit+http	git+https
dependencyr   specificationreturnc                 C  s   |   rtd| } | jd usJ | j|| j< | jr| j|d< n5|  s'|  r4| jd us.J | j|d< n |  rE| jd us?J | j|d< n| jdkrT| j	
 sT| j|d< | j s`t| j|d< | jrjt| j|d< |S )	Nr   revpathurl*versionmarkersextras)is_vcsr   
source_urlvcs	referenceis_fileis_directoryis_urlpretty_constraint
constraintis_emptymarkeris_anystrr   sorted)r   r    r*   y/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/poetry/utils/dependency_specification.pydependency_to_specification!   s(   



r,   c                   @  sZ   e Zd ZddddddZdddZdddZdddZdddZdddZdddZ	dS ) RequirementsParserN)envcwdartifact_cacher   r.   
Env | Noner/   Path | Noner   Nonec                C  s"   t || _|| _|pt | _d S )N)r
   _direct_origin_envr   r/   _cwd)selfr0   r.   r/   r*   r*   r+   __init__=   s   
zRequirementsParser.__init__requirementr(   DependencySpecc                 C  s   |  }| |}|d ur|S g }td|}|r-dd |ddD }|d\}}| |p;| |p;| |}|rH|rF|	d| |S t
d| )	Nz\[([\w\d,-_ ]+)\]$c                 S     g | ]}|  qS r*   strip.0er*   r*   r+   
<listcomp>S       z,RequirementsParser.parse.<locals>.<listcomp>   ,[r   z"Invalid dependency specification: )r=   _parse_pep508researchgroupsplit
_parse_url_parse_path_parse_simple
setdefault
ValueError)r7   r9   r   r   extras_m_r*   r*   r+   parseH   s&   

zRequirementsParser.parseDependencySpec | Nonec                 C  s   d|vrt d|rd S tt% t|}i }t||}|r.|j|d< |W  d    S W d    d S 1 s9w   Y  d S )Nz ; z@[\^~!=<>\d]name)	rG   rH   
contextlibsuppressrO   r   create_from_pep_508r,   rT   )r7   r9   r   r   r*   r*   r+   rF   c   s   



		z RequirementsParser._parse_pep508c           	      C  s   ddl m} ddl m} ||}||}|j|jd}|jr%|j|d< |j	r-|j	|d< | j
r7| j
jdnd }| jjd|j|d|j	|d	}|j|d
< |S )Nr   )Git)	ParsedUrl)rT   gitr   subdirectorysrcrZ   )r   r   r[   source_rootrT   )poetry.core.vcs.gitrX   rY   rR   normalize_urlrT   r   r   revisionr[   r5   r   joinpathr4   get_package_from_vcsget)	r7   r9   rX   rY   parsedr   pairr]   packager*   r*   r+   _parse_git_urls   s&   




z!RequirementsParser._parse_git_urlc                 C  sf   t j|}|jr|jsd S |jtv r| |S |jdv r1| j|}|j	d us*J |j
|j	dS d S )N)httphttps)rT   r   )urllibrR   urlparseschemenetlocGIT_URL_SCHEMESrg   r4   get_package_from_urlr   rT   )r7   r9   
url_parsedrf   r*   r*   r+   rK      s   


zRequirementsParser._parse_urlc                 C  s   t jj|v s
d|v r_| j| s"t|  r_t|  r_t| }| }| s6| j|}|	 rC| j
| }n| j
| }|j|sY|| j dS | dS d S )N/)rT   r   )osr   sepr6   ra   existsr   
expanduseris_absoluter    r4   get_package_from_fileresolveget_package_from_directoryrT   relative_toas_posix)r7   r9   r   rv   rf   r*   r*   r+   rL      s*   	zRequirementsParser._parse_pathc                 C  sL  g }t dd|}| }i }d|v rD|dd\}}t d|}|r7dd |ddD }|d	\}}||d
< |dkrC||d< nZt d| }	|	r~|	d|	d}}
t d|}|rudd |ddD }|d	\}}||d
< |
|d< n t d|}|rdd |ddD }|d	\}}||d
< |r||d< |S )Nz)^([^@=: ]+)(?:@|==|(?<![<>~!])=|:| )(.*)$z\1 \2 rC   z\[([\w\d,-_]+)\]$c                 S  r;   r*   r<   r>   r*   r*   r+   rA      rB   z4RequirementsParser._parse_simple.<locals>.<listcomp>rD   rE   rT   latestr   z*^([^><=!: ]+)((?:>=|<=|>|<|!=|~=|~|\^).*)$   c                 S  r;   r*   r<   r>   r*   r*   r+   rA      rB   c                 S  r;   r*   r<   r>   r*   r*   r+   rA      rB   r   )rG   subr=   rJ   rH   rI   match)r7   r9   r   re   requirerT   r   rP   rQ   mr$   r*   r*   r+   rM      sF   
z RequirementsParser._parse_simple)r0   r   r.   r1   r/   r2   r   r3   )r9   r(   r   r:   )r9   r(   r   rS   )
__name__
__module____qualname__r8   rR   rF   rg   rK   rL   rM   r*   r*   r*   r+   r-   <   s    




r-   )r   r   r   r   r   r   )#
__future__r   rU   rr   rG   urllib.parserj   pathlibr   typingr   r   r   r   poetry.core.packages.dependencyr   tomlkit.itemsr	   poetry.packages.direct_originr
   #poetry.core.packages.vcs_dependencyr   poetry.utils.cacher   poetry.utils.envr   dictr(   boollistr:   r   rn   r,   r-   r*   r*   r*   r+   <module>   s,    ,
