o
    Vh-                     @  s   d dl mZ d dlmZ d dlmZ d dlm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r`d dlmZ d dlmZ G dd deZG dd dZdS )    )annotations)Path)TYPE_CHECKING)AnyN)Metadata)distribution_name)
user_agent)MultipartEncoder)MultipartEncoderMonitor)__version__)HashManager)REQUESTS_TIMEOUT)wheel_file_re)IO)Poetryc                   @  s   e Zd ZdS )UploadErrorN)__name__
__module____qualname__ r   r   n/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/poetry/publishing/uploader.pyr      s    r   c                   @  s   e Zd ZdBdCd
dZedDddZedEddZedEddZedFddZdGddZ	dHddZ
dId d!Z	"		#	#dJdKd+d,ZdLd/d0Z	#	#dMdNd2d3Z	#	#dMdOd4d5ZdPd7d8ZdQd;d<ZdRd=d>ZdSd@dAZdS )TUploaderNpoetryr   ior   dist_dirPath | NonereturnNonec                 C  s0   || _ |j| _|| _|p| j| _d | _d | _d S N)_poetrypackage_package_iodefault_dist_dir	_dist_dir	_username	_password)selfr   r   r   r   r   r   __init__    s   
zUploader.__init__strc                 C  s   t dt}|S )Nr   )r   r   )r'   agentr   r   r   r   (   s   
zUploader.user_agentr   c                 C  s   | j jjjd S )Ndist)r   filepathparentr'   r   r   r   r#   -   s   zUploader.default_dist_dirc                 C  s"   | j  s| jjjj| j  S | j S r   )r$   is_absoluter   r,   r-   r.   r/   r   r   r   r   1   s   
zUploader.dist_dir
list[Path]c                 C  s^   | j }| jj }t| jj}t|| d| d}t|| d| d}t|| S )N-z-*.whl.tar.gz)	r   r!   version	to_stringr   namelistglobsorted)r'   r+   r4   escaped_namewheelstarsr   r   r   files8   s   zUploader.filesusername
str | Nonepasswordc                 C  s   || _ || _d S r   r%   r&   )r'   r>   r@   r   r   r   authC   s   
zUploader.authrequests.Sessionc                 C  s.   t  }|  }|d ur||_| j|jd< |S )Nz
User-Agent)requestsSessionget_authrB   r   headers)r'   sessionrB   r   r   r   make_sessionG   s   zUploader.make_sessiontuple[str, str] | Nonec                 C  s$   | j d u s
| jd u rd S | j | jfS r   rA   r/   r   r   r   rF   P   s   zUploader.get_authTFurlcertPath | boolclient_certdry_runboolskip_existingc                 C  sh   |   }t|trt|n||_|rt||_| | |||| W d    d S 1 s-w   Y  d S r   )rI   
isinstancer   r)   verifyrL   _upload)r'   rK   rL   rN   rO   rQ   rH   r   r   r   uploadV   s   
"zUploader.uploadr,   dict[str, Any]c                 C  s<  t | j}| |}t }|| | }|j}|j}|j	}d }	|dkr5t
|j}
|
d ur5|
d}	i d|jd|jd|d|	d|jd|jd	|jd
|jd|jd|jd|jd|jd|jd|jd|jd|jd|j|jd ||||j|j|j|j |j!|j"|j#|j$|j%d}|j&r|j&|d< |S )Nbdist_wheelpyverr6   r4   filetype	pyversionmetadata_versionsummary	home_pageauthorauthor_email
maintainermaintainer_emaillicensedescriptionkeywordsplatformclassifiersdownload_url)supported_platformcomment
md5_digestsha256_digestblake2_256_digestprovidesrequires	obsoletesproject_urlsprovides_distobsoletes_distrequires_distrequires_externalrequires_pythondescription_content_type)'r   from_packager!   	_get_typer   hash	hexdigestmd5sha256
blake2_256r   matchr6   groupr4   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   	platformsrf   rg   supported_platformsrm   rn   ro   rp   rq   rr   rs   rt   ru   rv   )r'   r,   meta	file_typehash_managerfile_hashesrj   sha2_digestrl   
py_version
wheel_infodatar   r   r   	post_datah   s   


	
(
zUploader.post_datarH   c                 C  s"   | j D ]}| ||||| qd S r   )r=   _upload_file)r'   rH   rK   rO   rQ   r,   r   r   r   rT      s   
zUploader._uploadc                   s  ddl m} | std| d| |}|ddd | |}|d}	|d	|j	|	d
ff t
|}
|| j|
jd  d|j	 d t|
 fdd}   d }zz|sl|j||dd|jitd}|d u s}d|j  kr{dk rn n d|j	 d    nQd|j  krdk rn n| jj r| jd|j	 d td|jdkrd|jv r| || |  n|r| |rو d|j	 d    n|  W n@ tjy } z2| jj r| jd|j	 d |jd urd|jj d|jj  d|jj!}t||td|d }~ww W | j"d n| j"d w W d    d S 1 s:w   Y  d S ) Nr   )ProgressBarz	Archive (z) does not existfile_upload1z:actionprotocol_versionrbcontentzapplication/octet-stream)maxz - Uploading <c1>z</c1> <b>%percent%%</b>c                   s     | jS r   )set_progress
bytes_read)monitorbarr   r   <lambda>   s    z'Uploader._upload_file.<locals>.<lambda>FContent-Typer   allow_redirectsrG   timeout   i,  z</c1> <fg=green>%percent%%</>  z</c1> <error>FAILED</>zARedirects are not supported. Is the URL missing a trailing slash?zwas ever registeredz'</c1> <warning>File exists. Skipping</>zHTTP Error z: z | zError connecting to repository )#cleo.ui.progress_barr   is_filer   r   update_prepare_dataopenappendr6   r	   r"   len
set_formatr
   startpostcontent_typer   status_codefinishoutputis_decorated	overwritetext	_registerraise_for_status_is_file_exists_errordisplayrD   RequestExceptionresponsereasonr   
write_line)r'   rH   rK   r,   rO   rQ   r   r   data_to_sendfpencoderr   respemessager   r   r   r      s   

"




$zUploader._upload_filerequests.Responsec           
      C  s   | j }t| jj}|| d| jj  d }| s$td|j d| |}|	ddd | 
|}t|}|j||dd	|jitd
}	|	  |	S )z5
        Register a package to a repository.
        r2   r3   "z" does not exist.submitr   r   Fr   r   )r   r   r!   r6   r4   r5   existsRuntimeErrorr   r   r   r	   r   r   r   r   )
r'   rH   rK   r+   r:   r,   r   r   r   r   r   r   r   r     s$   

zUploader._registerr   list[tuple[str, str]]c                 C  sP   g }|  D ]\}}t|ttfs|||f q|D ]	}|||f qq|S r   )itemsrR   r7   tupler   )r'   r   r   keyvalueitemr   r   r   r   ,  s   zUploader._prepare_datac                 C  sN   |j }|d dkrdS t|dkrd|dd  dkrdS td	d| )
Nz.whlrW      r   r3   sdistzUnknown distribution format )suffixesr   join
ValueError)r'   r,   extsr   r   r   rx   7  s   "zUploader._get_typer   c                 C  sj   |j }|j }|j }|| }|dkp4|dkod|v p4|dko$d|v p4|dko,d|v p4|dko4d|v S )Ni  r   zalready existzupdating asseti  zoverwrite artifactzalready been taken)r   r   lowerr   )r'   r   statusr   r   reason_and_textr   r   r   r   @  s   

zUploader._is_file_exists_errorr   )r   r   r   r   r   r   r   r   )r   r)   )r   r   )r   r1   )r>   r?   r@   r?   r   r   )r   rC   )r   rJ   )TNFF)rK   r)   rL   rM   rN   r   rO   rP   rQ   rP   r   r   )r,   r   r   rV   )FF)
rH   rC   rK   r)   rO   rP   rQ   rP   r   r   )rH   rC   rK   r)   r,   r   rO   rP   rQ   rP   r   r   )rH   rC   rK   r)   r   r   )r   rV   r   r   )r,   r   r   r)   )r   r   r   rP   )r   r   r   r(   propertyr   r#   r   r=   rB   rI   rF   rU   r   rT   r   r   r   rx   r   r   r   r   r   r      s:    



		
F
\

	r   ) 
__future__r   pathlibr   typingr   r   rD   poetry.core.masonry.metadatar   !poetry.core.masonry.utils.helpersr   requests_toolbeltr   requests_toolbelt.multipartr	   r
   poetry.__version__r   poetry.publishing.hash_managerr   poetry.utils.constantsr   poetry.utils.patternsr   
cleo.io.ior   poetry.poetryr   	Exceptionr   r   r   r   r   r   <module>   s&    