
^Wc           @  s  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,   Z- e- j. e%  e- j. e&  e- j. e(  e- j. e*  e j" d8  Z/ d9   Z0 d:   Z1 i d d; 6d d< 6d d= 6d d> 6d% d? 6d d@ 6d dA 6d  dB 6d! dC 6d" dD 6d# dE 6d+ dF 6d, dG 6d$ dH 6d& dI 6d' dJ 6d- dK 6d/ dL 6d0 dM 6d5 dN 6d1 dO 6d2 dP 6d* dQ 6d) dR 6d( dS 6d. dT 6d3 dU 6d4 dV 6d6 dW 6d7 dX 6Z2 d0 d- d/ f Z3 d1 f Z4 d f Z5 d d& d( d* d) d- d/ d0 d2 d. d% d5 d7 d6 f Z6 d. f Z7 d  f Z8 d" d+ d d f Z9 e:   Z; e j" dY  Z< e= dZ  Z> d[ e: f d\     YZ? d] Z@ d^ ZA d_ e: f d`     YZB d S(a   u   Implementation of the Metadata for Python packages PEPs.

Supports all metadata formats (1.0, 1.1, 1.2, and 2.0 experimental).
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__(    (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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   (    (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR       s   t    MetadataUnrecognizedVersionErrorc           B  s   e  Z d  Z RS(   u    Unknown metadata version number.(   R   R   R   (    (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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   (    (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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"   extra\s*==\s*("([^"]+)"|'([^']+)')c         C  sP   |  d k r t  S|  d k r  t S|  d k r0 t S|  d k r@ t St |    d  S(   Nu   1.0u   1.1u   1.2u   2.0(   t   _241_FIELDSt   _314_FIELDSt   _345_FIELDSt   _426_FIELDSR   (   t   version(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   _version2fieldlistg   s    c   	      C  s  d   } g  } xB |  j    D]4 \ } } | g  d d f k rC q n  | j |  q Wd d d d g } x | D] } | t k r d | k r | j d  n  | t k r d | k r | j d  n  | t k r d | k r | j d  n  | t k rm d | k rm | j d  qm qm Wt |  d k r1| d St |  d k rRt	 d	   n  d | k oj| | t
  } d | k o| | t  } d | k o| | t  } t |  t |  t |  d k rt	 d
   n  | r | r | r t | k r t Sn  | 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(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   _has_markeru   s    u   UNKNOWNu   1.0u   1.1u   1.2u   2.0i   i    u   Unknown metadata setu(   You used incompatible 1.1/1.2/2.0 fieldsN(   t   itemst   Nonet   appendR   t   removeR   R   R   t   lenR   t   _314_MARKERSt   _345_MARKERSt   _426_MARKERSt   intt   PKG_INFO_PREFERRED_VERSION(	   t   fieldsR   R   t   keyt   valuet   possible_versionst   is_1_1t   is_1_2t   is_2_0(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   _best_versions   sB    	&u   metadata_versionu   nameu   versionu   platformu   supported_platformu   summaryu   descriptionu   keywordsu	   home_pageu   authoru   author_emailu
   maintaineru   maintainer_emailu   licenseu
   classifieru   download_urlu   obsoletes_distu   provides_distu   requires_distu   setup_requires_distu   requires_pythonu   requires_externalu   requiresu   providesu	   obsoletesu   project_urlu   private_versionu   obsoleted_byu	   extensionu   provides_extrau   [^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   subt   replace(   t   nameR   t   for_filename(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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(    ua  The legacy metadata of a release.

    Supports versions 1.0, 1.1 and 1.2 (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   mappingR=   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   __init__   s    				c         C  s   t  |  j  |  j d <d  S(   Nu   Metadata-Version(   R0   R:   (   RB   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyRA     s    c         C  s   | j  d | | f  d  S(   Nu   %s: %s
(   t   write(   RB   RD   R4   R+   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   _write_field  s    c         C  s   |  j  |  S(   N(   t   get(   RB   R4   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   __getitem__  s    c         C  s   |  j  | |  S(   N(   t   set(   RB   R4   R+   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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_nameR:   t   KeyError(   RB   R4   t
   field_name(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   __delitem__  s
    c         C  s%   | |  j  k p$ |  j |  |  j  k S(   N(   R:   RM   (   RB   R4   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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_FIELDSR3   t   lowert   _ATTR2FIELDRI   (   RB   R4   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyRM     s    c         C  s    | t  k s | t k r g  Sd S(   Nu   UNKNOWN(   t   _LISTFIELDSt   _ELEMENTSFIELD(   RB   R4   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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_2R2   t   _LINE_PREFIX_1_2(   RB   R+   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   _remove_line_prefix*  s    c         C  s$   | t  k r |  | St |   d  S(   N(   RT   t   AttributeError(   RB   R4   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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(   R6   (   RB   t   filesafe(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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(   RM   RR   (   RB   R4   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   is_fieldA  s    c         C  s   |  j  |  } | t k S(   N(   RM   RU   (   RB   R4   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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   openR?   t   close(   RB   t   filepatht   fp(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR>   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
   d S(   u,   Read the metadata values from a file object.u   metadata-versionu   Metadata-Versionu   ,u   UNKNOWNN(   R   R:   RR   RU   t   get_allt   _LISTTUPLEFIELDSR    t   tuplet   splitRK   RA   (   RB   t   fileobt   msgt   fieldt   valuesR+   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR?   R  s    +
c         C  s>   t  j | d d d } z |  j | |  Wd | j   Xd S(   u&   Write the metadata fields to filepath.u   wRb   u   utf-8N(   Rc   Rd   t
   write_fileRe   (   RB   Rf   t   skip_unknownRg   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyRG   h  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(
   RA   R   RI   RV   RH   t   joinRU   RX   R3   Ri   (   RB   t
   fileobjectRq   Rn   Ro   R+   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyRp   p  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(   RT   RK   RM   (   R*   R+   (   RB   (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   _set  s    u   keysN(   t   hasattrR   R   (   RB   t   othert   kwargsRt   t   kt   v(    (   RB   sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR@     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   %r: %r is not valid (field %r)u(   %r: %r is not a valid version (field %r)u   DescriptionN(   RM   RV   t
   isinstancet   listRj   R   Rk   t   stripRU   t   loggert   isEnabledFort   loggingt   WARNINGR
   R=   t   _PREDICATE_FIELDSR    t   is_valid_matchert   warningt   _VERSIONS_FIELDSt   is_valid_constraint_listt   _VERSION_FIELDSt   is_valid_versiont   _UNICODEFIELDSR[   R:   (   RB   R4   R+   Ry   t   project_nameR=   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyRK     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(   RM   R:   t   _MISSINGRW   R   RU   R    Ri   R!   RV   Rz   R   Rk   (   RB   R4   t   defaultR+   t   rest   val(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyRI     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   Rk   R   R   (   R+   Ry   (   R=   (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   are_valid_constraints  s    u   Wrong value for %r: %s(   u   Nameu   Version(   u	   Home-pageu   AuthorN(   RA   R!   Rr   R   R
   R=   R   R   R   R   R   RI   R    (   RB   t   strictt   missingt   warningst   attrRm   R   R)   t
   controllerRn   R+   (    (   R=   sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   check  s2    

	"c   	      C  s  |  j    d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ f } i  } x; | D]3 \ } } | sf | |  j k rD |  | | | <qD qD W|  d d k r#dA dB dC dD dE dF dG dH f } x | D]l \ } } | s | |  j k r | d& k r |  | | | <qg  |  | D] } d, j |  ^ q | | <q q Wn` |  d d- k rdI dJ dK f } x> | D]3 \ } } | sk| |  j k rI|  | | | <qIqIWn  | S(L   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).
        u   metadata_versionu   Metadata-Versionu   nameu   Nameu   versionu   Versionu   summaryu   Summaryu	   home_pageu	   Home-pageu   authoru   Authoru   author_emailu   Author-emailu   licenseu   Licenseu   descriptionu   Descriptionu   keywordsu   Keywordsu   platformu   Platformu   classifiersu
   Classifieru   download_urlu   Download-URLu   1.2u   requires_distu   Requires-Distu   requires_pythonu   Requires-Pythonu   requires_externalu   Requires-Externalu   provides_distu   Provides-Distu   obsoletes_distu   Obsoletes-Distu   project_urlu   Project-URLu
   maintaineru
   Maintaineru   maintainer_emailu   Maintainer-emailu   ,u   1.1u   providesu   Providesu   requiresu   Requiresu	   obsoletesu	   Obsoletes(   u   metadata_versionu   Metadata-Version(   u   nameu   Name(   u   versionu   Version(   u   summaryu   Summary(   u	   home_pageu	   Home-page(   u   authoru   Author(   u   author_emailu   Author-email(   u   licenseu   License(   u   descriptionu   Description(   u   keywordsu   Keywords(   u   platformu   Platform(   u   classifiersu
   Classifier(   u   download_urlu   Download-URL(   u   requires_distu   Requires-Dist(   u   requires_pythonu   Requires-Python(   u   requires_externalu   Requires-External(   u   provides_distu   Provides-Dist(   u   obsoletes_distu   Obsoletes-Dist(   u   project_urlu   Project-URL(   u
   maintaineru
   Maintainer(   u   maintainer_emailu   Maintainer-email(   u   providesu   Provides(   u   requiresu   Requires(   u	   obsoletesu	   Obsoletes(   RA   R:   Rr   (	   RB   t   skip_missingt   mapping_1_0t   dataR*   RO   t   mapping_1_2t   ut   mapping_1_1(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   todict  sP    
		4	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(    (   RB   t   requirementsRn   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   add_requirementsU  s
    c         C  s   t  t |  d   S(   Nu   Metadata-Version(   R{   R   (   RB   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR   `  s    c         c  s    x |  j    D] } | Vq Wd  S(   N(   R   (   RB   R*   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   __iter__c  s    c         C  s!   g  |  j    D] } |  | ^ q S(   N(   R   (   RB   R*   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyRo   g  s    c         C  s'   g  |  j    D] } | |  | f ^ q S(   N(   R   (   RB   R*   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR   j  s    c         C  s   d |  j  j |  j |  j f S(   Nu
   <%s %s %s>(   t	   __class__R   R4   R   (   RB   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   __repr__m  s    N(#   R   R   R   R    RF   RA   RH   RJ   RL   RP   RQ   RM   RW   R[   R]   R   R_   R`   Ra   R>   R?   RG   Rp   R@   RK   R   RI   R   R   R   R   R   Ro   R   R   (    (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR7      s>   																	,,;					u   pydist.jsonu   metadata.jsont   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 d> d 6d? d 6d@ d	 6Z d
 Z d Z i e dA f d 6e dB f d 6e	 dC f d 6e
 dD f d	 6Z dE Z dF dF dF d d  Z e dG  Z dF e f Z dF 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" 6dH d$ 6dI d 6Z [ [ d&   Z dF d'  Z d(   Z e d)    Z  e d*    Z! e! j" d+    Z! dF dF 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 d 6d7 d	 6d8 d9 6d! d" 6Z* d:   Z+ dF dF e, e- d;  Z. d<   Z/ d=   Z0 RS(J   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 exclusiveRE   R=   u   rbu   metadata_versionu	   generatoru   utf-8RD   (   R8   R    R9   t   _legacyt   _dataR=   t   _validate_mappingR   R7   t   validateRd   R>   t   METADATA_VERSIONt	   GENERATORRz   R   t   decodet   jsont   loadst
   ValueErrorR   (   RB   RC   RD   RE   R=   R   t   f(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyRF     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  }	 |	 ru| d k r|	 j d	 |  } qu| d k rH|	 j d
  }	 |	 rr|	 j | |  } qrqu|	 j d  }	 |	 ru|	 j | |  } qu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    RI   R   (
   RB   R*   t   commont   mappedt   lkt   makert   resultR+   t   sentinelt   d(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR     sB    				c         C  so   | |  j  k rk |  j  | \ } } | p. |  j | k rk | j |  } | sh t d | | f   qh qk n  d  S(   Nu*   %r is an invalid value for the %r property(   t   SYNTAX_VALIDATORSR=   t   matchR   (   RB   R*   R+   R=   t   patternt
   exclusionst   m(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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__Rz   R   R|   Rk   (   RB   R*   R+   R   R   R   t   _R   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR     s>    				c         C  s   t  |  j |  j t  S(   N(   R6   R4   R   R   (   RB   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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   R4   R   R!   (   RB   R   t   s(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   providesB  s    	c         C  s*   |  j  r | |  j  d <n | |  j d <d  S(   Nu   Provides-Distu   provides(   R   R   (   RB   R+   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR   M  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   RI   R   t   extendR"   R   t   get_requirements(
   RB   t   reqtsR   R   R   R   t   includeR   R*   t   e(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR   T  s0    					
c         C  s   |  j  r |  j   S|  j S(   N(   R   t   _from_legacyR   (   RB   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt
   dictionary~  s    	
c         C  s)   |  j  r t  n t |  j |  j  Sd  S(   N(   R   R   R   R   t   DEPENDENCY_KEYS(   RB   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   dependencies  s    		c         C  s&   |  j  r t  n |  j j |  d  S(   N(   R   R   R   R@   (   RB   R+   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR     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   , (	   RI   R   R   t   MANDATORY_KEYSR   R!   Rr   R   R   (	   RB   RE   R=   R   R*   R   Rm   Rx   Ry   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR     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   R=   (   RB   R   R   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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(   RB   R   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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   RI   R   (
   RB   R   t   lmdRx   t   nkt   kwR   t   okt   authort
   maintainer(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR     s2    

		
	u   Nameu   Versionu   Licenseu   Summaryu   Descriptionu   descriptionc         C  s   d   } |  j  r |  j s" t  t   } |  j  } x: |  j j   D]) \ } } | | k 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   ;(   RK   RI   t   addRr   (   t   entriesR   R   t   extraR   t   rlistt   rR   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   process_entries  s"    	
	$u   Provides-Extrau   Requires-Distu   Setup-Requires-Dist(   R   R   R   R7   t   LEGACY_MAPPINGR   t   run_requirest   meta_requirest   build_requirest   dev_requiresR   t   sorted(   RB   R   R   t   nmdR   R   t   r1t   r2(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt
   _to_legacy  s    				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 neededRq   t   ensure_asciit   indenti   t	   sort_keysu   wu   utf-8(   R8   R    R   R   R   R   RG   Rp   R   R   R   t   dumpR   Rc   Rd   (   RB   RC   RD   t   legacyRq   t	   legacy_mdR   R   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyRG     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   insertRK   R   (   RB   R   R   t   alwayst   entryt   rset(    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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)>(   R4   R   R   R   RX   (   RB   R4   R   (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/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(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    RF   RK   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   RG   R   R   (    (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyR   v  s   

	,
	)
	'*					
	%	(C   R   t
   __future__R    Rc   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   RZ   RY   R   R   R$   R   R%   R   R&   RK   RR   R@   t   EXTRA_RER   R0   RT   R   R   R   RU   Ri   RV   R   R   R   R1   R   R6   R7   t   METADATA_FILENAMEt   WHEEL_METADATA_FILENAMER   (    (    (    sm   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/metadata.pyt   <module>	   s   																				8
									 