
вEbc           @  s3  d  Z  d d l m Z d d l Z d d l m Z d d l Z d d l Z d d l Z d d l	 m
 Z
 m Z d d l m Z m Z m Z d d l m Z d d	 l m Z m Z d d
 l m Z m Z e j e  Z d e
 f d     YZ d e
 f d     YZ d e
 f d     YZ d e
 f d     YZ d d d g Z d Z  d Z! e j" d  Z# e j" d  Z$ d d d d d d d  d! d" d# d$ f Z% d d d d d% d d d  d! d" d# d$ d& d' d( d) d* f Z& d( d) d* d& d' f Z' d d d d d% d d d  d! d" d# d+ d, d$ d& d' d- d. d/ d0 d1 d2 f Z( d/ d0 d1 d- d2 d+ d, d. f Z) d d d d d% d d d  d! d" d# d+ d, d$ d& d' d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 f Z* d3 d7 d4 d5 d6 f Z+ e* d8 d* d) f Z, d8 f Z- e.   Z/ e/ j0 e%  e/ j0 e&  e/ j0 e(  e/ j0 e*  e/ j0 e,  e j" d9  Z1 d:   Z2 d;   Z3 d<   e/ D Z4 d=   e4 j5   D Z6 d0 d- d/ f Z7 d1 f Z8 d f Z9 d d& d( d* d) d- d/ d0 d2 d. d% d5 d7 d6 f Z: d. f Z; d  f Z< d" d+ d d f Z= e>   Z? e j" d>  Z@ eA d?  ZB d@ e> f dA     YZC dB ZD dC ZE dD ZF dE e> f dF     YZG d S(G   u   Implementation of the Metadata for Python packages PEPs.

Supports all metadata formats (1.0, 1.1, 1.2, 1.3/2.1 and withdrawn 2.0).
i(   t   unicode_literalsN(   t   message_from_filei   (   t   DistlibExceptiont   __version__(   t   StringIOt   string_typest	   text_type(   t	   interpret(   t   extract_by_keyt
   get_extras(   t
   get_schemet   PEP440_VERSION_REt   MetadataMissingErrorc           B  s   e  Z d  Z RS(   u   A required metadata is missing(   t   __name__t
   __module__t   __doc__(    (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR      s   t   MetadataConflictErrorc           B  s   e  Z d  Z RS(   u>   Attempt to read or write metadata fields that are conflictual.(   R   R   R   (    (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR       s   t    MetadataUnrecognizedVersionErrorc           B  s   e  Z d  Z RS(   u    Unknown metadata version number.(   R   R   R   (    (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR   $   s   t   MetadataInvalidErrorc           B  s   e  Z d  Z RS(   u   A metadata value is invalid(   R   R   R   (    (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR   (   s   u   Metadatau   PKG_INFO_ENCODINGu   PKG_INFO_PREFERRED_VERSIONu   utf-8u   1.1u
   
       \|u	   
        u   Metadata-Versionu   Nameu   Versionu   Platformu   Summaryu   Descriptionu   Keywordsu	   Home-pageu   Authoru   Author-emailu   Licenseu   Supported-Platformu
   Classifieru   Download-URLu	   Obsoletesu   Providesu   Requiresu
   Maintaineru   Maintainer-emailu   Obsoletes-Distu   Project-URLu   Provides-Distu   Requires-Distu   Requires-Pythonu   Requires-Externalu   Private-Versionu   Obsoleted-Byu   Setup-Requires-Distu	   Extensionu   Provides-Extrau   Description-Content-Typeu"   extra\s*==\s*("([^"]+)"|'([^']+)')c         C  sd   |  d k r t  S|  d k r  t S|  d k r0 t S|  d k rD t t S|  d k rT t St |    d  S(   Nu   1.0u   1.1u   1.2u   1.3u   2.1u   2.0(   u   1.3u   2.1(   t   _241_FIELDSt   _314_FIELDSt   _345_FIELDSt   _566_FIELDSt   _426_FIELDSR   (   t   version(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   _version2fieldlistp   s    c   
      C  s#  d   } g  } xB |  j    D]4 \ } } | g  d d f k rC q n  | j |  q Wd d d d d d g } xm| D]e} | t k r d | k r | j d  t j d	 |  n  | t k r d | k r | j d  t j d
 |  n  | t k r!d | k r!| j d  t j d |  n  | t	 k rYd | k rY| j d  t j d |  n  | t	 k rd | k r| d k r| j d  t j d |  qn  | t
 k rs d | k rs | j d  t j d |  qs qs Wt |  d k r| d St |  d k r't j d |   t d   n  d | k o?| | t  } d | k oZ| | t  } d | k ou| | t  } d | k o| | t  }	 t |  t |  t |  t |	  d k rt d   n  | r| r| r|	 rt | k rt Sn  | rd S| rd S| rd Sd S(   u5   Detect the best version depending on the fields used.c         S  s%   x | D] } | |  k r t  Sq Wt S(   N(   t   Truet   False(   t   keyst   markerst   marker(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   _has_marker   s    u   UNKNOWNu   1.0u   1.1u   1.2u   1.3u   2.0u   2.1u   Removed 1.0 due to %su   Removed 1.1 due to %su   Removed 1.2 due to %su   Removed 1.3 due to %su   Descriptionu   Removed 2.1 due to %su   Removed 2.0 due to %si   i    u)   Out of options - unknown metadata set: %su   Unknown metadata setu,   You used incompatible 1.1/1.2/2.0/2.1 fieldsN(   t   itemst   Nonet   appendR   t   removet   loggert   debugR   R   R   R   t   lenR   t   _314_MARKERSt   _345_MARKERSt   _566_MARKERSt   _426_MARKERSt   intt   PKG_INFO_PREFERRED_VERSION(
   t   fieldsR   R   t   keyt   valuet   possible_versionst   is_1_1t   is_1_2t   is_2_1t   is_2_0(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   _best_version~   s`    	0c         C  s+   i  |  ]! } | | j    j d  d   q S(   u   -u   _(   t   lowert   replace(   t   .0t   name(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pys
   <dictcomp>   s   	 c         C  s   i  |  ] \ } } | |  q S(    (    (   R8   t   attrt   field(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pys
   <dictcomp>   s   	 u   [^A-Za-z0-9.]+c         C  sG   | r9 t  j d |   }  t  j d | j d d   } n  d |  | f S(   uh   Return the distribution name with version.

    If for_filename is true, return a filename-escaped form.u   -u    u   .u   %s-%s(   t	   _FILESAFEt   subR7   (   R9   R   t   for_filename(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   _get_name_and_version   s    !t   LegacyMetadatac           B  s4  e  Z d  Z d d d d d  Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z e d  Z d   Z d   Z d   Z d   Z e d  Z e d  Z d d  Z d   Z e d  Z e d  Z e d  Z d   Z d   Z d   Z d   Z  d   Z! d   Z" RS(    uo  The legacy metadata of a release.

    Supports versions 1.0, 1.1, 1.2, 2.0 and 1.3/2.1 (auto-detected). You can
    instantiate the class with one of these arguments (or none):
    - *path*, the path to a metadata file
    - *fileobj* give a file-like object with metadata as content
    - *mapping* is a dict-like object
    - *scheme* is a version scheme name
    u   defaultc         C  s   | | | g j  d   d k  r- t d   n  i  |  _ g  |  _ d  |  _ | |  _ | d  k	 rm |  j |  nB | d  k	 r |  j |  n& | d  k	 r |  j	 |  |  j
   n  d  S(   Ni   u'   path, fileobj and mapping are exclusive(   t   countR!   t	   TypeErrort   _fieldst   requires_filest   _dependenciest   schemet   readt	   read_filet   updatet   set_metadata_version(   t   selft   patht   fileobjt   mappingRF   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   __init__   s    				c         C  s   t  |  j  |  j d <d  S(   Nu   Metadata-Version(   R5   RC   (   RK   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyRJ     s    c         C  s   | j  d | | f  d  S(   Nu   %s: %s
(   t   write(   RK   RM   R9   R/   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   _write_field  s    c         C  s   |  j  |  S(   N(   t   get(   RK   R9   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   __getitem__  s    c         C  s   |  j  | |  S(   N(   t   set(   RK   R9   R/   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   __setitem__  s    c         C  sA   |  j  |  } y |  j | =Wn t k
 r< t |   n Xd  S(   N(   t   _convert_nameRC   t   KeyError(   RK   R9   t
   field_name(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   __delitem__  s
    c         C  s%   | |  j  k p$ |  j |  |  j  k S(   N(   RC   RV   (   RK   R9   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   __contains__  s    c         C  s8   | t  k r | S| j d d  j   } t j | |  S(   Nu   -u   _(   t   _ALL_FIELDSR7   R6   t   _ATTR2FIELDRR   (   RK   R9   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyRV     s    c         C  s    | t  k s | t k r g  Sd S(   Nu   UNKNOWN(   t   _LISTFIELDSt   _ELEMENTSFIELD(   RK   R9   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   _default_value%  s    c         C  s3   |  j  d k r t j d |  St j d |  Sd  S(   Nu   1.0u   1.1u   
(   u   1.0u   1.1(   t   metadata_versiont   _LINE_PREFIX_PRE_1_2R=   t   _LINE_PREFIX_1_2(   RK   R/   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   _remove_line_prefix*  s    c         C  s$   | t  k r |  | St |   d  S(   N(   R\   t   AttributeError(   RK   R9   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   __getattr__0  s    c         C  s   t  |  d |  d |  S(   uh   Return the distribution name with version.

        If filesafe is true, return a filename-escaped form.u   Nameu   Version(   R?   (   RK   t   filesafe(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   get_fullname;  s    c         C  s   |  j  |  } | t k S(   u+   return True if name is a valid metadata key(   RV   R[   (   RK   R9   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   is_fieldA  s    c         C  s   |  j  |  } | t k S(   N(   RV   R]   (   RK   R9   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   is_multi_fieldF  s    c         C  s;   t  j | d d d } z |  j |  Wd | j   Xd S(   u*   Read the metadata values from a file path.u   rt   encodingu   utf-8N(   t   codecst   openRH   t   close(   RK   t   filepatht   fp(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyRG   J  s    c         C  s  t  |  } | d |  j d <x t D] } | | k r< q$ n  | t k r | j |  } | t k r | d k	 r g  | D] } t | j d   ^ qv } n  |  j	 | |  q$ | | } | d k	 r$ | d k r$ |  j	 | |  q$ q$ W| j
   } | r | n |  d |  d <d S(   u,   Read the metadata values from a file object.u   metadata-versionu   Metadata-Versionu   ,u   UNKNOWNu   DescriptionN(   R   RC   R[   R]   t   get_allt   _LISTTUPLEFIELDSR!   t   tuplet   splitRT   t   get_payload(   RK   t   fileobt   msgR;   t   valuesR/   t   body(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyRH   R  s    +
c         C  s>   t  j | d d d } z |  j | |  Wd | j   Xd S(   u&   Write the metadata fields to filepath.u   wRj   u   utf-8N(   Rk   Rl   t
   write_fileRm   (   RK   Rn   t   skip_unknownRo   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyRP   n  s    c         C  s<  |  j    x+t |  d  D]} |  j |  } | rT | d g  d g f k rT q n  | t k r |  j | | d j |   q n  | t k r | d k r |  j d k r | j d d  } q | j d d	  } n  | g } n  | t	 k rg  | D] } d j |  ^ q } n  x! | D] } |  j | | |  qWq Wd
 S(   u0   Write the PKG-INFO format data to a file object.u   Metadata-Versionu   UNKNOWNu   ,u   Descriptionu   1.0u   1.1u   
u	   
        u	   
       |N(   u   1.0u   1.1(
   RJ   R   RR   R^   RQ   t   joinR]   R`   R7   Rq   (   RK   t
   fileobjectRz   R;   Rw   R/   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyRy   v  s$    
%c           s     f d   } | s n^ t  | d  rR xL | j   D] } | | | |  q4 Wn$ x! | D] \ } } | | |  qY W| r x* | j   D] \ } } | | |  q Wn  d S(   u  Set metadata values from the given iterable `other` and kwargs.

        Behavior is like `dict.update`: If `other` has a ``keys`` method,
        they are looped over and ``self[key]`` is assigned ``other[key]``.
        Else, ``other`` is an iterable of ``(key, value)`` iterables.

        Keys that don't match a metadata field or that have an empty value are
        dropped.
        c           s2   |  t  k r. | r.   j   j |   |  n  d  S(   N(   R\   RT   RV   (   R.   R/   (   RK   (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   _set  s    u   keysN(   t   hasattrR   R    (   RK   t   othert   kwargsR}   t   kt   v(    (   RK   s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyRI     s    
c         C  s  |  j  |  } | t k s' | d k r t | t t f  r t | t  rw g  | j d  D] } | j   ^ q\ } q g  } nF | t k r t | t t f  r t | t  r | g } q g  } n  t	 j
 t j  r|  d } t |  j  } | t k rR| d	 k	 rRx | D]; } | j | j d  d  st	 j d | | |  qqWq| t k r| d	 k	 r| j |  st	 j d | | |  qq| t k r| d	 k	 r| j |  st	 j d | | |  qqn  | t k r| d k r|  j |  } qn  | |  j | <d	 S(
   u"   Control then set a metadata field.u   Platformu   ,u   Nameu   ;i    u$   '%s': '%s' is not valid (field '%s')u.   '%s': '%s' is not a valid version (field '%s')u   DescriptionN(   RV   R^   t
   isinstancet   listRr   R   Rs   t   stripR]   R$   t   isEnabledFort   loggingt   WARNINGR
   RF   t   _PREDICATE_FIELDSR!   t   is_valid_matchert   warningt   _VERSIONS_FIELDSt   is_valid_constraint_listt   _VERSION_FIELDSt   is_valid_versiont   _UNICODEFIELDSRc   RC   (   RK   R9   R/   R   t   project_nameRF   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyRT     s@    +		
		c         C  s  |  j  |  } | |  j k r@ | t k r< |  j |  } n  | S| t k r] |  j | } | S| t k r |  j | } | d k r g  Sg  } xE | D]= } | t k r | j |  q | j | d | d f  q W| S| t	 k r|  j | } t
 | t  r| j d  Sn  |  j | S(   u   Get a metadata field.i    i   u   ,N(   RV   RC   t   _MISSINGR_   R   R]   R!   Rq   R"   R^   R   R   Rs   (   RK   R9   t   defaultR/   t   rest   val(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyRR     s.    c           su  |  j    g  g  } } x* d D]" } | |  k r | j |  q q W| rx | g  k rx d d j |  } t |   n  x* d D]" } | |  k r | j |  q q W|  d d k r | | f St |  j      f d	   } x t | f t   j f t	   j
 f f D]b \ } } xS | D]K }	 |  j |	 d  }
 |
 d k	 r| |
  r| j d
 |	 |
 f  qqWqW| | f S(   uk   Check if the metadata is compliant. If strict is True then raise if
        no Name or Version are providedu   Nameu   Versionu   missing required metadata: %su   , u	   Home-pageu   Authoru   Metadata-Versionu   1.2c           s5   x. |  D]& }   j  | j d  d  s t Sq Wt S(   Nu   ;i    (   R   Rs   R   R   (   R/   R   (   RF   (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   are_valid_constraints  s    u   Wrong value for '%s': %s(   u   Nameu   Version(   u	   Home-pageu   AuthorN(   RJ   R"   R{   R   R
   RF   R   R   R   R   R   RR   R!   (   RK   t   strictt   missingt   warningsR:   Rv   R   R-   t
   controllerR;   R/   (    (   RF   s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   check  s2    

	"c         C  s   |  j    t |  d  } i  } xx | D]p } | sC | |  j k r' t | } | d k rj |  | | | <q g  |  | D] } d j |  ^ qu | | <q' q' W| S(   u  Return fields as a dict.

        Field names will be converted to use the underscore-lowercase style
        instead of hyphen-mixed case (i.e. home_page instead of Home-page).
        This is as per https://www.python.org/dev/peps/pep-0566/#id17.
        u   Metadata-Versionu   project_urlu   ,(   RJ   R   RC   t   _FIELD2ATTRR{   (   RK   t   skip_missingR-   t   dataRX   R.   t   u(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   todict   s    

1c         C  sN   |  d d k r: x' d D] } | |  k r |  | =q q Wn  |  d c | 7<d  S(   Nu   Metadata-Versionu   1.1u	   Obsoletesu   Requiresu   Providesu   Requires-Dist(   u	   Obsoletesu   Requiresu   Provides(    (   RK   t   requirementsR;   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   add_requirements7  s
    c         C  s   t  t |  d   S(   Nu   Metadata-Version(   R   R   (   RK   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR   B  s    c         c  s    x |  j    D] } | Vq Wd  S(   N(   R   (   RK   R.   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   __iter__E  s    c         C  s!   g  |  j    D] } |  | ^ q S(   N(   R   (   RK   R.   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyRw   I  s    c         C  s'   g  |  j    D] } | |  | f ^ q S(   N(   R   (   RK   R.   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR    L  s    c         C  s   d |  j  j |  j |  j f S(   Nu
   <%s %s %s>(   t	   __class__R   R9   R   (   RK   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   __repr__O  s    N(#   R   R   R   R!   RO   RJ   RQ   RS   RU   RY   RZ   RV   R_   Rc   Re   R   Rg   Rh   Ri   RG   RH   RP   Ry   RI   RT   R   RR   R   R   R   R   R   Rw   R    R   (    (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR@      s>   																	,,					u   pydist.jsonu   metadata.jsonu   METADATAt   Metadatac           B  s  e  Z d  Z e j d  Z e j d e j  Z e Z	 e j d  Z
 d Z d e Z i dI d 6dJ d 6dK d	 6Z d
 Z d Z i e dL f d 6e dM f d 6e	 dN f d 6e
 dO f d	 6Z dP Z dQ dQ dQ d d  Z e dR  Z dQ e f Z dQ e f Z i d e f d 6d e f d 6e d 6e d 6e d 6d e f d 6e d 6e d 6e d 6e d  6d! e f d" 6dS d$ 6dT d 6Z [ [ d&   Z dQ d'  Z d(   Z e d)    Z  e d*    Z! e! j" d+    Z! dQ dQ d,  Z# e d-    Z$ e d.    Z% e% j" d/    Z% d0   Z& d1   Z' d2   Z( d3   Z) i
 d4 d 6d5 d 6d6 dU 6d9 d	 6d: d; 6d< dV 6d@ dW 6dC dX 6d# d$ 6d! dY 6Z* dE   Z+ dQ dQ e, e- dF  Z. dG   Z/ dH   Z0 RS(Z   u   
    The metadata of a release. This implementation uses 2.0 (JSON)
    metadata where possible. If not possible, it wraps a LegacyMetadata
    instance which handles the key-value metadata format.
    u   ^\d+(\.\d+)*$u!   ^[0-9A-Z]([0-9A-Z_.-]*[0-9A-Z])?$u	   .{1,2047}u   2.0u   distlib (%s)u   nameu   versionu   legacyu   summaryuq   name version license summary description author author_email keywords platform home_page classifiers download_urluw   extras run_requires test_requires build_requires dev_requires provides meta_requires obsoleted_by supports_environmentsu   metadata_versionu   _legacyu   _datau   schemeu   defaultc         C  s  | | | g j  d   d k  r- t d   n  d  |  _ d  |  _ | |  _ | d  k	 r y |  j | |  | |  _ Wqt k
 r t d | d |  |  _ |  j	   qXn d  } | r t
 | d   } | j   } Wd  QXn | r | j   } n  | d  k ri |  j d 6|  j d 6|  _ n t | t  s?| j d  } n  y) t j |  |  _ |  j |  j |  Wn9 t k
 rt d	 t |  d |  |  _ |  j	   n Xd  S(
   Ni   u'   path, fileobj and mapping are exclusiveRN   RF   u   rbu   metadata_versionu	   generatoru   utf-8RM   (   RA   R!   RB   t   _legacyt   _dataRF   t   _validate_mappingR   R@   t   validateRl   RG   t   METADATA_VERSIONt	   GENERATORR   R   t   decodet   jsont   loadst
   ValueErrorR   (   RK   RL   RM   RN   RF   R   t   f(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyRO     s>    			
u   licenseu   keywordsu   Requires-Distu   run_requiresu   Setup-Requires-Distu   build_requiresu   dev_requiresu   test_requiresu   meta_requiresu   Provides-Extrau   extrasu   modulesu
   namespacesu   exportsu   commandsu
   Classifieru   classifiersu   Download-URLu
   source_urlu   Metadata-Versionc   
      C  s  t  j |  d  } t  j |  d  } | | k r| | \ } } |  j r | d  k rs | d  k rg d  n |   } q|  j j |  } q| d  k r d  n |   } | d k r |  j j | |  } qt    } | } |  j j d  }	 |	 r| d k r|	 j d	 |  } q| d k rH|	 j d
  }	 |	 r|	 j | |  } qq|	 j d  }	 |	 sr|  j j d  }	 n  |	 r|	 j | |  } qn  | | k r| } qnQ | | k rt  j |  |  } n0 |  j r|  j j |  } n |  j j |  } | S(   Nu   common_keysu   mapped_keysu   commandsu   exportsu   modulesu
   namespacesu   classifiersu
   extensionsu   python.commandsu   python.detailsu   python.exports(   u   commandsu   exportsu   modulesu
   namespacesu   classifiers(   t   objectt   __getattribute__R   R!   RR   R   (
   RK   R.   t   commont   mappedt   lkt   makert   resultR/   t   sentinelt   d(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR     sF    				c         C  so   | |  j  k rk |  j  | \ } } | p. |  j | k rk | j |  } | sh t d | | f   qh qk n  d  S(   Nu.   '%s' is an invalid value for the '%s' property(   t   SYNTAX_VALIDATORSRF   t   matchR   (   RK   R.   R/   RF   t   patternt
   exclusionst   m(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   _validate_value  s    c         C  s  |  j  | |  t j |  d  } t j |  d  } | | k r| | \ } } |  j r~ | d  k rn t  n  | |  j | <q| d k r | |  j | <q|  j j d i   } | d k r | | d	 <q| d k r | j d
 i   } | | | <q| j d i   } | | | <n | | k r4t j |  | |  nn | d k r|t	 | t
  r|| j   } | rp| j   } qyg  } q|n  |  j r| |  j | <n | |  j | <d  S(   Nu   common_keysu   mapped_keysu   commandsu   exportsu   modulesu
   namespacesu   classifiersu
   extensionsu   python.commandsu   python.detailsu   python.exportsu   keywords(   u   commandsu   exportsu   modulesu
   namespacesu   classifiers(   R   R   R   R   R!   t   NotImplementedErrorR   t
   setdefaultt   __setattr__R   R   R   Rs   (   RK   R.   R/   R   R   R   t   _R   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR     s>    				c         C  s   t  |  j |  j t  S(   N(   R?   R9   R   R   (   RK   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   name_and_version#  s    c         C  sd   |  j  r |  j  d } n |  j j d g   } d |  j |  j f } | | k r` | j |  n  | S(   Nu   Provides-Distu   providesu   %s (%s)(   R   R   R   R9   R   R"   (   RK   R   t   s(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   provides'  s    	c         C  s*   |  j  r | |  j  d <n | |  j d <d  S(   Nu   Provides-Distu   provides(   R   R   (   RK   R/   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR   2  s    	c   
      C  sL  |  j  r | } n6g  } t | p$ g  |  j  } x | D] } d | k r^ d | k r^ t } nZ d | k rs t } n | j d  | k } | r | j d  } | r t | |  } q n  | r7 | j | d  q7 q7 Wxo d D]g } d | }	 |	 | k r | j |	  |  j j d | g   } | j |  j	 | d	 | d
 |  q q W| S(   u  
        Base method to get dependencies, given a set of extras
        to satisfy and an optional environment context.
        :param reqts: A list of sometimes-wanted dependencies,
                      perhaps dependent on extras and environment.
        :param extras: A list of optional components being requested.
        :param env: An optional environment for marker evaluation.
        u   extrau   environmentu   requiresu   buildu   devu   testu   :%s:u   %s_requirest   extrast   env(   u   buildu   devu   test(
   R   R	   R   R   RR   R   t   extendR#   R   t   get_requirements(
   RK   t   reqtsR   R   R   R   t   includeR   R.   t   e(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR   9  s0    					
c         C  s   |  j  r |  j   S|  j S(   N(   R   t   _from_legacyR   (   RK   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt
   dictionaryc  s    	
c         C  s)   |  j  r t  n t |  j |  j  Sd  S(   N(   R   R   R   R   t   DEPENDENCY_KEYS(   RK   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   dependenciesi  s    		c         C  s&   |  j  r t  n |  j j |  d  S(   N(   R   R   R   RI   (   RK   R/   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR   p  s    		c   	      C  s   | j  d  |  j k r$ t    n  g  } xH |  j j   D]7 \ } } | | k r: | | k rq | j |  qq q: q: W| r d d j |  } t |   n  x- | j   D] \ } } |  j | | |  q Wd  S(   Nu   metadata_versionu   Missing metadata items: %su   , (	   RR   R   R   t   MANDATORY_KEYSR    R"   R{   R   R   (	   RK   RN   RF   R   R.   R   Rv   R   R   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR   w  s    c         C  s`   |  j  rF |  j  j t  \ } } | s- | r\ t j d | |  q\ n |  j |  j |  j  d  S(   Nu#   Metadata: missing: %s, warnings: %s(   R   R   R   R$   R   R   R   RF   (   RK   R   R   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR     s    		c         C  s6   |  j  r |  j  j t  St |  j |  j  } | Sd  S(   N(   R   R   R   R   R   t
   INDEX_KEYS(   RK   R   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR     s    	c   
      C  s3  |  j  r |  j s t  i |  j d 6|  j d 6} |  j  j t  } xF d D]> } | | k rL | d k rs d	 } n | } | | | | <qL qL W| j d
 g   } | d g k r g  } n  | | d <d d f } xE | D]= \ } } | | k r | | r i | | d 6g | | <q q W|  j | d <i  } i  }	 | S(   Nu   metadata_versionu	   generatoru   nameu   versionu   licenseu   summaryu   descriptionu
   classifieru   classifiersu   Keywordsu    u   keywordsu   requires_distu   run_requiresu   setup_requires_distu   build_requiresu   requiresu   provides(   u   nameu   versionu   licenseu   summaryu   descriptionu
   classifier(   u   requires_distu   run_requires(   u   setup_requires_distu   build_requires(	   R   R   t   AssertionErrorR   R   R   R   RR   R   (
   RK   R   t   lmdR   t   nkt   kwR   t   okt   authort
   maintainer(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR     s2    

		
	u   Nameu   Versionu   Licenseu
   extensionsu   python.detailsu   Summaryu   Descriptionu   descriptionu	   Home-pageu   python.projectu   project_urlsu   Homeu   Authoru   contactsi    u   Author-emailu   emailc         C  sQ  d   } |  j  r |  j s" t  t   } |  j  } x |  j j   D] \ } } t | t  s | | k r | | | | <q qD | } t } x= | D]5 } y | | } Wq t	 t
 f k
 r t } Pq Xq W| rD | | | <qD qD W| |  j |  j  }	 | |  j |  j  }
 |  j r-t |  j  | d <n  t |	  | d <t |
  | d <| S(   Nc         S  s   t    } x |  D] } | j d  } | j d  } | d } x | D] } | ri | ri | j |  qE d } | r d | } n  | r | r d | | f } q | } n  | j d j | | f   qE Wq W| S(   Nu   extrau   environmentu   requiresu    u   extra == "%s"u   (%s) and %su   ;(   RT   RR   t   addR{   (   t   entriesR   R   t   extraR   t   rlistt   rR   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   process_entries  s"    	
	$u   Provides-Extrau   Requires-Distu   Setup-Requires-Dist(   R   R   R   R@   t   LEGACY_MAPPINGR    R   Rr   R   RW   t
   IndexErrorR   t   run_requirest   meta_requirest   build_requirest   dev_requiresR   t   sorted(   RK   R   R   t   nmdR   R   R   t   foundR   t   r1t   r2(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt
   _to_legacy  s2    					c         C  s  | | g j  d   d k r* t d   n  |  j   | r |  j rO |  j } n |  j   } | rw | j | d | q| j | d | n |  j r |  j   } n	 |  j	 } | r t
 j | | d t d d d t n@ t j | d d	  ) } t
 j | | d t d d d t Wd  QXd  S(
   Ni   u)   Exactly one of path and fileobj is neededRz   t   ensure_asciit   indenti   t	   sort_keysu   wu   utf-8(   RA   R!   R   R   R   R   RP   Ry   R   R   R   t   dumpR   Rk   Rl   (   RK   RL   RM   t   legacyRz   t	   legacy_mdR   R   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyRP     s&    
			
c         C  s   |  j  r |  j  j |  n |  j j d g   } d  } x0 | D]( } d | k r> d | k r> | } Pq> q> W| d  k r i | d 6} | j d |  n* t | d  t |  B} t |  | d <d  S(   Nu   run_requiresu   environmentu   extrau   requiresi    (   R   R   R   R   R!   t   insertRT   R   (   RK   R   R   t   alwayst   entryt   rset(    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR     s    	c         C  s;   |  j  p d } |  j p d } d |  j j |  j | | f S(   Nu	   (no name)u
   no versionu   <%s %s %s (%s)>(   R9   R   R   R   R`   (   RK   R9   R   (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR     s    (    (    (   u   legacy(    (   u   legacy(   u   legacy(   u   legacy(   u   _legacyu   _datau   schemeN(   u   nameu   versionu   licenseu   keywordsu   summary(   u   Download-URLN(   u   Metadata-VersionN(   u
   extensionsu   python.detailsu   license(   u
   extensionsu   python.projectu   project_urlsu   Home(   u
   extensionsu   python.projectu   contactsi    u   name(   u
   extensionsu   python.projectu   contactsi    u   email(   u
   extensionsu   python.detailsu   classifiers(1   R   R   R   t   ret   compilet   METADATA_VERSION_MATCHERt   It   NAME_MATCHERR   t   VERSION_MATCHERt   SUMMARY_MATCHERR   R   R   R   R   R   R   t	   __slots__R!   RO   RT   t   common_keysR   t	   none_listt   dictt	   none_dictt   mapped_keysR   R   R   t   propertyR   R   t   setterR   R   R   R   R   R   R   R   R   R   R   RP   R   R   (    (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyR   Y  s   

	,
	+
	'*					
	2	(H   R   t
   __future__R    Rk   t   emailR   R   R   R   t    R   R   t   compatR   R   R   R   R   t   utilR   R	   R   R
   R   t	   getLoggerR   R$   R   R   R   R   t   __all__t   PKG_INFO_ENCODINGR,   R   Rb   Ra   R   R   R'   R   R(   R   R*   R   R)   RT   R[   RI   t   EXTRA_RER   R5   R\   R    R   R   R   R   R]   Rq   R^   R   R   R   R<   R   R?   R@   t   METADATA_FILENAMEt   WHEEL_METADATA_FILENAMEt   LEGACY_METADATA_FILENAMER   (    (    (    s9   /tmp/pip-build-UPPWic/pip/pip/_vendor/distlib/metadata.pyt   <module>	   s   																					J									 i