Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib/python3.5/site-packages/wheel/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib/python3.5/site-packages/wheel/__pycache__/metadata.cpython-35.pyc



?	�V*+�@s�dZddlmZddlmZddlmZyddlmZWnek
rde	ZYnXddl
Z
ddlZddl
Z
ddlZddlZddlZdZd	d
ddd
diZe�ZddddidfddddidffZed.�Ze
jd�Ze
jd�Zedd/�Zdd�Zdd �Zdd!d"�Zd#d$�Zd%d&�Z d'd(�Z!d)d*�Z"d+d,�Z#e$d-kr�ddl%Z%ddl&Z&e&j&ee%j'd��dS)0z2
Tools for converting old- to new-style metadata.
�)�
namedtuple�)�
read_pkg_info)�OrderedDefaultDict)�OrderedDictNz2.0�
classifier�classifiersZ
provides_dist�provides�provides_extra�extras�email�author_email�name�author�maintainer_email�
maintainer�platform�	home_page�licensezF^(?P<package>.*?)(;\s*(?P<condition>.*?)(extra == '(?P<extra>.*?)')?)$z[-,]+�MayRequiresKey�	condition�extraccs<t�}x,|D]$}||kr|j|�|VqWdS)z<
    Yield unique values in iterable, preserving order.
    N)�set�add)�iterable�seen�value�r�?/opt/alt/python35/lib/python3.5/site-packages/wheel/metadata.py�unique,s
	

rcCs�tt�}x�t|j|��D]�}tj|�}|r�|j�}|d}|d}|d}	|jd�r�|dd�}nd\}}|}	t||�}||j	|	�q"W|r�g|d<dd	�}
xxt|j
�d
|
�D]^\}}td|ff�}|jr+|j|d<|j
rA|j
|d<|dj	|�q�Wd
|krlg|d
<|d
jdd�|j�D��dS)zE
    Place the runtime requirements from pkg_info into metadata.
    rr�packagez and N�Zrun_requirescSs&|\}}|jdkrdS|jS)N�)r)�item�keyrrrr�sort_keyMsz!handle_requires.<locals>.sort_keyr$�requires�environmentrcSs"g|]}|jr|j�qSr)r)�.0r$rrr�
<listcomp>^s	z#handle_requires.<locals>.<listcomp>���)NN)r�list�sorted�get_all�EXTRA_RE�search�	groupdict�endswithr�append�itemsrrr�extend�keys)�metadata�pkg_infor$Zmay_requiresrZextra_matchr0rrr r%Zmay_requirementrrr�handle_requires7s6



%	
	

r8cCstdd��}dtjd|d<ytt|�}WnBtk
rtjj�j	t
|d�j�jd��}YnXd}|d	r�t
|d	�|d
<|d	=|dr�t|�}|d=n6|j�}t|t�r�|jd�}|r|}|r||d<x[ttd
d�|j�D���D]4}|jdd�}|tkr]q6|tkr�|j|�dkr�q6|tt�kr�|j|�|t|<q6|dkr�t|||�q6|dkrd|kr�g|d<|dj|j|��q6|dkr6d||i|ddd<q6|dkr\tj||�|d<q6||||<q6Wt|d<d|kr�tt |d��|d<|rxpd,D]h\}}	yGt!||	�}
t|
t"�r�tt#|
��}d|ig||<Wq�t$k
rYq�Xq�Wg}xxt%D]p\}
}t&�}x;t|
�D]-}|
||krF|j'|
|�||<qFW|r$||d<|j(|�q$W|r�||ddd <y�t
t)j*j+t)j*j,|�d!�d"��}t-j.j/|j��}WdQRXt&�}xyt|j0��D]e\}}t&�||<xItt1t2|j3���D],}|jd#d$�\}}||||<qPWqW|r�||dd%<Wnt4k
r�YnXd%|dkrxFd/D]>\}}||dd%kr�|dd%||dd*|<q�W|S)0a
    Convert PKG-INFO to a prototype Metadata 2.0 (PEP 426) dict.

    The description is included under the key ['description'] rather than
    being written to a separate file.

    path: path to PKG-INFO file
    distribution: optional distutils Distribution()
    cSstdd��S)NcSs
tt�S)N)rrrrrr�<lambda>lsz3pkginfo_to_dict.<locals>.<lambda>.<locals>.<lambda>)rrrrrr9lsz!pkginfo_to_dict.<locals>.<lambda>z
bdist_wheel (�)�	generator�rbzutf-8NZSummary�summary�Description�descriptioncss|]}|j�VqdS)N)�lower)r(�krrr�	<genexpr>�sz"pkginfo_to_dict.<locals>.<genexpr>�-�_�UNKNOWN�
requires_distr
rrZHome�
extensionszpython.detailsZproject_urls�keywords�metadata_version�
test_requires�
tests_requirer&�role�contactszentry_points.txt�rz = rzpython.exports�console_scripts�wrap_console�gui_scripts�wrap_guizpython.commands�rJrK)rS�rOrP�rQrR)rTrU)5r�wheel�__version__�unicoder�	NameErrorr�parser�Parser�parsestr�open�read�decode�pkginfo_unicode�dedent_description�get_payload�
isinstance�bytesr,rr5�replace�SKIP_FIELDS�UNKNOWN_FIELDS�get�
PLURAL_FIELDSr-r8r4�KEYWORDS_RE�split�METADATA_VERSIONr�getattrr+�convert_requirements�AttributeError�CONTACT_FIELDSr�popr2�os�path�join�dirname�
pkg_resources�
EntryPoint�	parse_mapr3�map�str�values�IOError)rs�distributionr6r7r?�payloadr$Zlow_keyr&�attr�requirements�new_requirementsrMZcontact_typerL�contactZep_file�ep_mapZexports�groupr3r#rZexportZ	ep_scriptZwrap_scriptrrr�pkginfo_to_dictas�
5



,!


		
-	
"
"r�cCsLg}x(|jD]\}}|j||�qW|s;dSddj|�S)zBCompose the version predicates for requirement in PEP 345 fashion.r"z (%s)�,)�specsr2rt)�requirementrF�op�verrrr�requires_to_requires_dist�sr�ccsex^|D]V}tjj|�}t|�}dj|j�}|rMd|}|j||VqWdS)z=Yield Requires-Dist: strings for parsed requirements strings.r�z[%s]N)rv�Requirement�parser�rtr�project_name)r��reqZparsed_requirement�specrrrrrn�s

rnc
CsTt|�}|jdd�tjj|d�}tjj|�r&t|�j�}x�tt	j
|�ddd��D]�\}}d}|r�d|kr�|jdd	�\}}|r�||d
<|r�|d7}|dt|�7}|r�d
|}x(tt
|��D]}|||d<q
WqwW|d}	|	rP|jt|��|d=|S)zn
    Convert .egg-info directory with PKG-INFO to the Metadata 1.3 aka
    old-draft Metadata 2.0 format.
    zMetadata-Versionz2.0zrequires.txtr$cSs|dp
dS)Nrr"r)�xrrrr9�sz%pkginfo_to_metadata.<locals>.<lambda>r"�:rzProvides-Extraz and zextra == %sz; z
Requires-Distr>)r�replace_headerrrrsrt�existsr]r^r,rv�split_sectionsrk�reprrn�set_payloadra)
Z
egg_info_pathZpkginfo_pathr7Z
requires_pathr&r�reqsrZnew_reqr?rrr�pkginfo_to_metadata�s0



r�cCs�||}|j�}t|t�s�t|d�s>t|�SxJ|j�D]<}|dj�|krK|djdd�jd�}PqKW|S)z<Hack to coax Unicode out of an email Message() - Python 3.3+�	raw_itemsrr�ascii�surrogateescapezutf-8)r@rcrz�hasattrr��encoder_)r7�field�textr#rrrr`s

	r`cCs�|d}d}t|t�s4d}t|d�}|j�}dj|dj�tjdj|dd���df�}|r�|jd�j	d	d
�}|S)z@
    Dedent and convert pkg_info['Description'] to Unicode.
    r>FT�
rrN�utf8r�r�)
rcrzr`�
splitlinesrt�lstrip�textwrap�dedentr�r_)r7r?Z
surrogatesZdescription_linesZdescription_dedentrrrras

	ra�__main__)rr
rrr)rr)(�__doc__�collectionsrZpkginfor�utilrr�ImportError�dict�re�os.pathrrr�rv�email.parserrrVrlrirrfrprg�compiler.rjrrr8r�r�rnr�r`ra�__name__�sys�pprint�argvrrrr�<module>sL
		*z	
!