B
    {[:	                 @   sP   d dl Z d dlZd dlZd dlZddlmZ G dd deZG dd deZdS )    N   )Distributionc               @   s*   e Zd ZdddZedd Zdd ZdS )	SDistNc             C   s   || _ || _|   d S )N)filenamemetadata_versionZextractMetadata)selfr   r    r   ,lib/python3.7/site-packages/pkginfo/sdist.py__init__
   s    zSDist.__init__c                s   t j|std| |drBt|   } fdd}nB|dsV|drxtj	
|   } fdd}ntd|  ||fS )	NzNo such file: %sz.zipc                s
     | S )N)read)name)archiver   r	   	read_file   s    z%SDist._get_archive.<locals>.read_fileZgzbz2c                s     |  S )N)Zextractfiler   )r   )r   r   r	   r      s    zNot a known archive format: %s)ospathexists
ValueErrorendswithzipfileZZipFileZnamelisttarfileZTarFileopenZgetnames)clsfqnnamesr   r   )r   r	   _get_archive   s    

zSDist._get_archivec       
      C   s   t jt j| j}| |\}}}zZdd |D }tdd |D }x4dd |D D ]"}d|}||}	d|	krX|	S qXW W d |  X t	d| d S )Nc             S   s   g | ]}d |kr| dqS )zPKG-INFO/)split).0xr   r   r	   
<listcomp>+   s    zSDist.read.<locals>.<listcomp>c             S   s   g | ]}t ||fqS r   )len)r   r   r   r   r	   r    ,   s    c             S   s   g | ]}|d  qS )r   r   )r   r   r   r   r	   r    -   s    r   s   Metadata-VersionzNo PKG-INFO in archive: %s)
r   r   abspathnormpathr   r   sortedjoincloser   )
r   r   r   r   r   ZtuplesZschwarzr   	candidatedatar   r   r	   r   $   s    

z
SDist.read)N)__name__
__module____qualname__r
   classmethodr   r   r   r   r   r	   r      s   
r   c                   s&   e Zd Zd fdd	Zdd Z  ZS )UnpackedSDistNc                sL   t j|rn&t j|r(t j|}ntd| tt| j||d d S )NzNo such file: %s)r   )	r   r   isdirisfiledirnamer   superr-   r
   )r   r   r   )	__class__r   r	   r
   9   s    
zUnpackedSDist.__init__c          
   C   sl   y2t j| jd}tj|dd
}| S Q R X W n4 tk
rf } ztd| j|f W d d }~X Y nX d S )NzPKG-INFOignore)errorsz*Could not load %s as an unpacked sdist: %s)	r   r   r%   r   ior   r   	Exceptionr   )r   Zpkg_infofer   r   r	   r   D   s    zUnpackedSDist.read)N)r)   r*   r+   r
   r   __classcell__r   r   )r2   r	   r-   8   s   r-   )r5   r   r   r   Zdistributionr   r   r-   r   r   r   r	   <module>   s   0