B
    {[                 @   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	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.7/site-packages/pkginfo/distribution.pyr      s    r   c             C   s   t || |S )N)_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_all)r   r   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)
startswith)r   r   r   r   r	   r      s   z(_collapse_leading_ws.<locals>.<listcomp> c             S   s   g | ]}|  qS r   )strip)r   r   r   r   r	   r      s    N)lowerjoinr   
splitlines)r   Ztxtr   r   r	   r
      s    
r
   ))z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1.0z1.1z1.2z2.0z2.1c               @   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d Zdd Zdd Z d	d
 Z!dd Z"e"Z#dS )DistributionNr   c             C   s   |   }| | d S )N)readr   )selfdatar   r   r	   extractMetadatak   s    zDistribution.extractMetadatac             C   s   t d S )N)NotImplementedError)r8   r   r   r	   r7   o   s    zDistribution.readc             C   s   t | jg S )N)HEADER_ATTRSr   r   )r8   r   r   r	   _getHeaderAttrsr   s    zDistribution._getHeaderAttrsc             C   s   t t|}t|}d|kr:| jd kr:t|d}| }| _xb|  D ]V\}}}|dkrXqD||krD|r|t||}	t| ||	 qDt||}|dkrDt| || qDW | }
|
rt| d|
 d S )NzMetadata-Versionr   ZUNKNOWNr   )	r   r   r   r   r   r=   r   setattrZget_payload)r8   r9   r   r   valuer   header_name	attr_namemultiplevaluesZbodyr   r   r	   r   u   s$    



zDistribution.parsec             c   s"   x|   D ]\}}}|V  q
W d S )N)r=   )r8   r@   rA   rB   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)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r:   r7   r=   r   rD   Ziterkeysr   r   r   r	   r6   J   sB   r6   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_1r<   objectr6   r   r   r   r	   <module>   s(   
