o
    Vh5                     @  s   d dl m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 d dlmZ erLd dlmZ G dd dZdS )    )annotationsN)Path)TYPE_CHECKING)Any)Literal)overload)metadata)is_dir_writable)	paths_csv)remove_directory)Iterablec                   @  s  e Zd Z		dGdHd
dZedIddZedIddZedIddZedJddZedJddZ		dKdLddZ
	dMdNd!d"Z	dOdPd%d&Z	dOdQd)d*Z	dOdRd+d,ZdSd-d.Zedd/dTd7d8Zed9dd:dUd<d8Zd9dd:dVd>d8ZdWd?d@ZdWdAdBZdXdCdDZ	dOdYdEdFZdS )ZSitePackagesNpurelibr   platlibPath | None	fallbackslist[Path] | NonereturnNonec                 C  sv   || _ |p|| _|r| | kr|| _|pg | _g | _t| j | jg| jD ]}|| jvr5| j| q(d | _d S N)	_purelib_platlibresolve
_fallbacks_candidates	itertoolschainappend_writable_candidates)selfr   r   r   path r!   r/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/poetry/utils/env/site_packages.py__init__   s   



zSitePackages.__init__c                 C     | j S r   r   r   r!   r!   r"   r    ,      zSitePackages.pathc                 C  r$   r   r%   r&   r!   r!   r"   r   0   r'   zSitePackages.purelibc                 C  r$   r   )r   r&   r!   r!   r"   r   4   r'   zSitePackages.platlib
list[Path]c                 C  r$   r   )r   r&   r!   r!   r"   
candidates8   r'   zSitePackages.candidatesc                 C  sB   | j d ur| j S g | _ | jD ]}t|ddsq| j | q| j S )NT)r    create)r   r   r	   r   )r   	candidater!   r!   r"   writable_candidates<   s   

z SitePackages.writable_candidatesFr    writable_onlyboolstrictc              	     s   |s| j n| j}  r@|D ]!}tt  |  gW  d      S 1 s*w   Y  q|r4dnd}t  d| d fdd|D }|sZ|rZtd  dt| j  |S )	Nz	writable  z# is not relative to any discovered sitesc                   s   g | ]}|  qS r!   r!   ).0r+   r    r!   r"   
<listcomp>W   s    z0SitePackages.make_candidates.<locals>.<listcomp>z+Unable to find a suitable destination for "z" in )	r   r,   is_absolute
contextlibsuppress
ValueErrorrelative_toRuntimeErrorr
   )r   r    r-   r/   r)   r+   	site_typeresultsr!   r3   r"   make_candidatesI   s&   
&zSitePackages.make_candidatesname
str | NoneIterable[metadata.Distribution]c                 c  s6    t tt|s	| jn| j}tjj||dE d H  d S )N)r>   r    )listmapstrr   r,   r   PathDistributiondiscover)r   r>   r-   r    r!   r!   r"   distributionsa   s   zSitePackages.distributionsrC   metadata.Distribution | Nonec                 C  s   | j ||dD ]}|  S d S Nr>   r-   )rF   )r   r>   r-   distributionr!   r!   r"   find_distributionl   s   zSitePackages.find_distributiondistribution_nameIterable[Path]c                 c  s`    | j ||dD ]%}|jd u rg n|j}|D ]}|j|kr,||}t|ts)J |V  qqd S rH   )rF   filesr>   locate_file
isinstancer   )r   rL   r>   r-   rJ   rN   filer    r!   r!   r"   !find_distribution_files_with_names   s   


z.SitePackages.find_distribution_files_with_namec                 C  s   | j |d|dS )Nzdirect_url.json)rL   r>   r-   )rR   )r   rL   r-   r!   r!   r"   'find_distribution_direct_url_json_files   s
   z4SitePackages.find_distribution_direct_url_json_filesc                 C  s   g }| j |ddD ]5}|jd u rg n|j}|D ]}||}t|ts%J |jdd q|j}| r9t|dd |	| q	|S )NTrI   )
missing_ok)force)
rF   rN   rO   rP   r   unlink_pathexistsr   r   )r   rL   pathsrJ   rN   rQ   r    distribution_pathr!   r!   r"   remove_distribution_files   s   

z&SitePackages.remove_distribution_files)r-   methodargsr   return_firstLiteral[False]kwargslist[tuple[Path, Any]]c                O     d S r   r!   r   r    r\   r^   r-   r]   r`   r!   r!   r"   _path_method_wrapper      	z!SitePackages._path_method_wrapperTr^   r-   tuple[Path, Any]c                O  rb   r   r!   rc   r!   r!   r"   rd      re   )tuple[Path, Any] | list[tuple[Path, Any]]c             	   O  s   | j ||dd}g }|D ]5}	tt& |	t|	||i |f}
|r-|
W  d      S ||
 W d    n1 s<w   Y  q|rF|S tdt| )NT)r-   r/   zUnable to access any of )r=   r6   r7   OSErrorgetattrr   r
   )r   r    r\   r^   r-   r]   r`   r)   r<   r+   resultr!   r!   r"   rd      s    	c                 O  "   | j |dg|R i |}|d S )N
write_textr   rd   r   r    r]   r`   rY   r!   r!   r"   rm         zSitePackages.write_textc                 O  rl   )Nmkdirr   rn   ro   r!   r!   r"   rq      rp   zSitePackages.mkdirc                 C  s   t dd | j|dddD S )Nc                 s  s    | ]}|d  V  qdS )Nr!   r2   valuer!   r!   r"   	<genexpr>   s
    
z&SitePackages.exists.<locals>.<genexpr>rX   F)r^   )anyrd   )r   r    r!   r!   r"   rX      s   zSitePackages.existsc                 C  s   dd | j |dd|dD S )Nc                 S  s    g | ]}|d  du r|d qS )rr   Tr   r!   rs   r!   r!   r"   r4      s
    z%SitePackages.find.<locals>.<listcomp>rX   Frf   rn   )r   r    r-   r!   r!   r"   find   s
   zSitePackages.find)NN)r   r   r   r   r   r   r   r   )r   r   )r   r(   )FF)r    r   r-   r.   r/   r.   r   r(   )NF)r>   r?   r-   r.   r   r@   )F)r>   rC   r-   r.   r   rG   )rL   rC   r>   rC   r-   r.   r   rM   )rL   rC   r-   r.   r   rM   )rL   rC   r   r(   )r    r   r\   rC   r]   r   r^   r_   r-   r.   r`   r   r   ra   )r    r   r\   rC   r]   r   r^   r.   r-   r.   r`   r   r   rg   )r    r   r\   rC   r]   r   r^   r.   r-   r.   r`   r   r   rh   )r    r   r]   r   r`   r   r   r   )r    r   r   r.   )r    r   r-   r.   r   r(   )__name__
__module____qualname__r#   propertyr    r   r   r)   r,   r=   rF   rK   rR   rS   r[   r   rd   rm   rq   rX   rw   r!   r!   r!   r"   r      sP    
	



	r   )
__future__r   r6   r   pathlibr   typingr   r   r   r   poetry.utils._compatr   poetry.utils.helpersr	   r
   r   collections.abcr   r   r!   r!   r!   r"   <module>   s    