�
���cc @ st d Z d d l Z d d l Z d d l Z d d l m Z d � Z d � Z d � Z d � Z
d � Z d
� Z d S( s2
Tools for converting old- to new-style metadata.
i����Ni ( t
read_pkg_infoc C so t | d d � r d | j Sg } x( | j D] \ } } | j | | � q- W| sX d Sd d j t | � � S( sF Return the version specifier for a requirement in PEP 345/566 fashion.t urls @ t s (%s)t ,N( t getattrt NoneR t specst appendt joint sorted( t requirementt
requires_distt opt ver( ( s2 /usr/lib/python2.7/site-packages/wheel/metadata.pyt requires_to_requires_dist
s c c sn xg | D]_ } t j j | � } t | � } d j t | j � � } | rV d | } n | j | | Vq Wd S( s= Yield Requires-Dist: strings for parsed requirements strings.R s [%s]N( t
pkg_resourcest Requirementt parseR R R t extrast project_name( t requirementst reqt parsed_requirementt specR ( ( s2 /usr/lib/python2.7/site-packages/wheel/metadata.pyt convert_requirements s
c c s� x� | j � D]� \ } } d } | p( d } d | k rR | j d d � \ } } n t j | � } | r� d | f V| r� d | d } n | d | 7} n | r� d | } n x# t | � D] } d | | f Vq� Wq
Wd
S( s,
Convert requirements from a setup()-style dictionary to ('Requires-Dist', 'requirement')
and ('Provides-Extra', 'extra') tuples.
extras_require is a dictionary of {extra: [requirements]} as passed to setup(),
using the empty extra {'': [requirements]} to hold install_requires.
R t :i s Provides-Extrat (s ) and s
extra == '%s's ; s
Requires-DistN( t itemst splitR t
safe_extraR ( t extras_requiret extrat dependst conditiont new_req( ( s2 /usr/lib/python2.7/site-packages/wheel/metadata.pyt generate_requirements% s
c C s$ t | � } | j d d � | d =| d =t j j | d � } t j j | � r� t | � � } | j � } Wd QXt t j
| � d d � �} x` | D]U \ } } xF t i | | 6� D]1 \ } }
| |
f | j � k r� |
| | <q� q� Wq� Wn | d } | r | j
t | � � | d =n | S(
sN
Convert .egg-info directory with PKG-INFO to the Metadata 2.1 format
s Metadata-Versions 2.1s Provides-Extras
Requires-Dists requires.txtNt keyc S s | d p
d S( Ni R ( ( t x( ( s2 /usr/lib/python2.7/site-packages/wheel/metadata.pyt <lambda>P R t Description( R t replace_headert ost pathR t existst opent readR R t split_sectionsR# R t set_payloadt dedent_description( t
egg_info_patht pkginfo_patht pkg_infot
requires_patht
requires_filet requirest parsed_requirementsR t reqsR$ t valuet description( ( s2 /usr/lib/python2.7/site-packages/wheel/metadata.pyt pkginfo_to_metadataA s&