B
    ){[                 @   sP   d dl Z d dlZd dlZddlmZ ddlmZ ddlmZ G dd deZdS )    N   )Distribution)must_decode)parsec                   s.   e Zd ZdddZdd Z fddZ  ZS )	WheelNc             C   s   || _ || _|   d S )N)filenamemetadata_versionZextractMetadata)selfr   r    r
   ,lib/python3.7/site-packages/pkginfo/wheel.py__init__   s    zWheel.__init__c       	         s  t jt j| jt js.td dr^t	  
 } fdd} j}n@drfddt D }dd }d	d
 }ntd zZdd |D }tdd |D }x4dd |D D ]"}d|}||}d|kr|S qW W d |  X td d S )NzNo such file: %sz.whlc                s
     | S )N)read)name)archiver
   r   	read_file   s    zWheel.read.<locals>.read_filez
.dist-infoc                s   g | ]}t j |qS r
   )ospathjoin).0p)fqnr
   r   
<listcomp>!   s    zWheel.read.<locals>.<listcomp>c          	   S   s"   t j| dd
}| S Q R X d S )Nrb)mode)ioopenr   )r   infr
   r
   r   r   #   s    c               S   s   d S )Nr
   r
   r
   r
   r   <lambda>'   s    zWheel.read.<locals>.<lambda>z<Not a known wheel archive format or installed .dist-info: %sc             S   s   g | ]}d |kr| dqS )ZMETADATA/)split)r   xr
   r
   r   r   .   s    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   0   s    r   s   Metadata-VersionzNo METADATA in archive: %s)r   r   abspathnormpathr   exists
ValueErrorendswithzipfileZZipFileZnamelistcloselistdirsortedr   )	r	   namesr   r(   ZtuplesZschwarzr   	candidatedatar
   )r   r   r   r      s0    




z
Wheel.readc                s4   t t| | tt|}t|}| | _d S )N)superr   r   r   StringIOr   Zget_payloadZdescription)r	   r-   fpmsg)	__class__r
   r   r   :   s    zWheel.parse)N)__name__
__module____qualname__r   r   r   __classcell__r
   r
   )r2   r   r      s   
(r   )r   r   r'   Zdistributionr   r   r   r   r
   r
   r
   r   <module>   s   