a
    ªða2  ã                   @   s’   d dl mZ ddlmZ ddlm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	e
eeeedœZG dd„ deƒZdS )é    )ÚParseré   )ÚStringIO)Úmust_decodec                 C   s   t ƒ  | ¡S ©N)r   Úparse)Úfp© r	   ú3lib/python3.9/site-packages/pkginfo/distribution.pyr      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>   ó    zget_all.<locals>.<listcomp>)Úget_allr   r	   r   r
   r      s    r   c                 C   sD   |   ¡ dkr(d dd„ | ¡  ¡ D ƒ¡S d dd„ | ¡ D ƒ¡S 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      r   N)ÚlowerÚjoinr   Ú
splitlines)r   Ztxtr	   r	   r
   r      s
    

ÿr   ))úMetadata-VersionÚmetadata_versionF)ÚNameÚnameF)ZVersionÚversionF)ZPlatformÚ	platformsT)zSupported-PlatformÚsupported_platformsT)ZSummaryÚsummaryF)ZDescriptionr   F)ZKeywordsÚkeywordsF)z	Home-PageÚ	home_pageF)ZAuthorÚauthorF)zAuthor-emailÚauthor_emailF)ZLicenseÚlicenseF))Z
ClassifierÚclassifiersT)zDownload-URLÚdownload_urlF)ZRequiresÚrequiresT)ZProvidesÚprovidesT)Z	ObsoletesÚ	obsoletesT))Z
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))ZDynamicÚdynamicT)z1.0z1.1z1.2z2.0z2.1z2.2c                   @   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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   )ÚselfÚdatar	   r	   r
   ÚextractMetadatar   s    zDistribution.extractMetadatac                 C   s   t ‚d S r   )ÚNotImplementedError©r?   r	   r	   r
   r>   v   s    zDistribution.readc                 C   s   t  | jg ¡S r   )ÚHEADER_ATTRSr   r!   rC   r	   r	   r
   Ú_getHeaderAttrsy   s    zDistribution._getHeaderAttrsc                 C   s¶   t t|ƒƒ}t|ƒ}d|v r:| jd u r:t|dƒ}| }| _|  ¡ D ]V\}}}|dkrVqB||v rB|rzt||ƒ}	t| ||	ƒ qBt||ƒ}|dkrBt| ||ƒ qB| ¡ }
|
r²t| d|
ƒ d S )Nr    r!   ZUNKNOWNr   )	r   r   r   r!   r   rE   r   ÚsetattrZget_payload)r?   r@   r   r   Úvaluer!   Úheader_nameÚ	attr_nameÚmultipleÚvaluesÚbodyr	   r	   r
   r   |   s$    



zDistribution.parsec                 c   s   |   ¡ D ]\}}}|V  qd S r   )rE   )r?   rH   rI   rJ   r	   r	   r
   Ú__iter__–   s    zDistribution.__iter__)%Ú__name__Ú
__module__Ú__qualname__r!   r#   r$   r%   r&   r'   r   r(   r)   r.   r*   r+   r,   r-   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   rA   r>   rE   r   rM   Ziterkeysr	   r	   r	   r
   r=   O   sD   r=   N)Zemail.parserr   Z_compatr   r   r   r   r   r   ZHEADER_ATTRS_1_0ZHEADER_ATTRS_1_1ZHEADER_ATTRS_1_2ZHEADER_ATTRS_2_0ZHEADER_ATTRS_2_1ZHEADER_ATTRS_2_2rD   Úobjectr=   r	   r	   r	   r
   Ú<module>   s(   ú	