o
    Uhe                  	   @   s   d dl Z d dlmZ d dlZdd ZeZdd Zdd Zd	d
 Zdd Z	dZ
e
d Zed ZeZed Zed ZeZed Ze
eeeeeeedZdd Zdd eD ZeeZddd eD ZG dd deZG dd deZG dd  d eZdS )!    N)Parserc                 C   s:   t | tu rz| dW S  ty   | d Y S w | S )Nzutf-8latin1)typebytesdecodeUnicodeDecodeError)value r	   h/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/pkginfo/distribution.py_must_decode   s   r   c                 C   s   t  | S N)r   parse)fpr	   r	   r
   r      s   r   c                 C   s   t || |S r   )_collapse_leading_wsgetmsgheaderr	   r	   r
   r      s   r   c                    s    fdd|   D S )Nc                    s   g | ]}t  |qS r	   )r   .0xr   r	   r
   
<listcomp>   s    zget_all.<locals>.<listcomp>)get_allr   r	   r   r
   r      s   r   c                 C   s@   |   dkrddd |  D S ddd | D S )zL
    ``Description`` header must preserve newlines; all others need not
    description
c                 S   s&   g | ]}| d r|dd n|qS )z           N)
startswithr   r	   r	   r
   r      s    z(_collapse_leading_ws.<locals>.<listcomp> c                 S   s   g | ]}|  qS r	   )stripr   r	   r	   r
   r          )lowerjoinr   
splitlines)r   txtr	   r	   r
   r      s
   

r   ))Metadata-Versionmetadata_versionF)NamenameF)VersionversionF)Platform	platformsT)zSupported-Platformsupported_platformsT)SummarysummaryF)Descriptionr   F)KeywordskeywordsF)z	Home-Page	home_pageF)AuthorauthorF)zAuthor-emailauthor_emailF)LicenselicenseF))
ClassifierclassifiersT)zDownload-URLdownload_urlF)RequiresrequiresT)ProvidesprovidesT)	Obsoletes	obsoletesT))
Maintainer
maintainerF)zMaintainer-emailmaintainer_emailF)zRequires-Pythonrequires_pythonF)zRequires-Externalrequires_externalT)zRequires-Distrequires_distT)zProvides-Distprovides_distT)zObsoletes-Distobsoletes_distT)zProject-URLproject_urlsT))zProvides-Extraprovides_extrasT)zDescription-Content-Typedescription_content_typeF))DynamicdynamicT))zLicense-Expressionlicense_expressionF)zLicense-Filelicense_fileT)z1.0z1.1z1.2z2.0z2.1z2.2z2.3z2.4c                 C   s$   | d u rdS t dd | dD S )N)r   r   c                 S      g | ]}t |qS r	   )int)r   partr	   r	   r
   r   e   r    z"_version_tuple.<locals>.<listcomp>.)tuplesplit)r&   r	   r	   r
   _version_tuplea   s
   rW   c                 C   rQ   r	   )rW   )r   keyr	   r	   r
   r   h   s    r   rT   c                 c   s    | ]}t |V  qd S r   )str)r   elementr	   r	   r
   	<genexpr>n   s    
r[   c                          e Zd Z fddZ  ZS )UnknownMetadataVersionc                    s   || _ t d|  d S )NzUnknown metadata version: )r&   super__init__selfr&   	__class__r	   r
   r_   t   s   zUnknownMetadataVersion.__init____name__
__module____qualname__r_   __classcell__r	   r	   rb   r
   r]   s       r]   c                       r\   )NewMetadataVersionc                    s"   || _ t d| dt  d S )NzNew metadata version (z3) higher than latest supported version: parsing as )r&   r^   r_   MAX_METADATA_VERSION_STRr`   rb   r	   r
   r_   z   s   zNewMetadataVersion.__init__rd   r	   r	   rb   r
   rj   y   ri   rj   c                   @   s   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dd Z!dd Z"dd Z#d	d
 Z$dd Z%e%Z&dS )DistributionNr	   c                 C   s   |   }| | d S r   )readr   )ra   datar	   r	   r
   extractMetadata   s   zDistribution.extractMetadatac                 C   s   t r   )NotImplementedError)ra   r	   r	   r
   rm      s   zDistribution.readc                 C   s   t | j}|d u r>zt| j}W n ty#   tt| j Y dS w |tkr4tt	| j t t
 S tt| j dS |S )Nr	   )HEADER_ATTRSr   r&   rW   
ValueErrorwarningswarnr]   MAX_METADATA_VERSIONrj   rk   )ra   foundv_tupler	   r	   r
   _getHeaderAttrs   s   zDistribution._getHeaderAttrsc                 C   s   t t|}t|}d|v r| jd u rt|d}| }| _|  D ]+\}}}|dkr,q"||v rM|r>t||}	t| ||	 q"t||}|dkrMt| || q"|	 }
|
r\t| d|
 d S d S )Nr%   r&   UNKNOWNr   )
ioStringIOr   r   r&   r   rx   r   setattrget_payload)ra   rn   r   r   r   r&   header_name	attr_namemultiplevaluesbodyr	   r	   r
   r      s(   



zDistribution.parsec                 c   s     |   D ]\}}}|V  qd S r   )rx   )ra   r~   r   r   r	   r	   r
   __iter__   s   zDistribution.__iter__)'re   rf   rg   r&   r(   r*   r,   r-   r/   r   r2   r3   r;   r5   r6   r8   r:   r=   r?   rA   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rN   rO   rP   ro   rm   rx   r   r   iterkeysr	   r	   r	   r
   rl      sJ    rl   )rz   email.parserr   rs   r   must_decoder   r   r   r   HEADER_ATTRS_1_0HEADER_ATTRS_1_1HEADER_ATTRS_1_2HEADER_ATTRS_2_0HEADER_ATTRS_2_1HEADER_ATTRS_2_2HEADER_ATTRS_2_3HEADER_ATTRS_2_4rq   rW   METADATA_VERSIONSmaxru   r"   rk   UserWarningr]   rj   objectrl   r	   r	   r	   r
   <module>   sJ    
