ó
^\kdc           @  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# 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. d/ d0 d1 f Z' d. d/ d0 d, d1 d* d+ d- f Z( d 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 f Z) d2 d6 d3 d4 d5 f Z* e+ ƒ  Z, e, j- e$ ƒ e, j- e% ƒ e, j- e' ƒ e, j- e) ƒ e j" d7 ƒ Z. d8 „  Z/ d9 „  Z0 i d d: 6d 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 6d4 dM 6d0 dN 6d1 dO 6d) dP 6d( dQ 6d' dR 6d- dS 6d2 dT 6d3 dU 6d5 dV 6d6 dW 6Z1 d/ d, d. f Z2 d0 f Z3 d f Z4 d d% d' d) d( d, d. d/ d1 d- d$ d4 d6 d5 f Z5 d- f Z6 d f Z7 d! d* d d f Z8 e9 ƒ  Z: e j" dX ƒ Z; e< dY „ Z= dZ e9 f d[ „  ƒ  YZ> d\ Z? d] e9 f d^ „  ƒ  YZ@ d S(_   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   PEP426_VERSION_REt   MetadataMissingErrorc           B  s   e  Z d  Z RS(   u   A required metadata is missing(   t   __name__t
   __module__t   __doc__(    (    (    sC   /var/www/testScraper/venv/build/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   (    (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyR       s   t    MetadataUnrecognizedVersionErrorc           B  s   e  Z d  Z RS(   u    Unknown metadata version number.(   R   R   R   (    (    (    sC   /var/www/testScraper/venv/build/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   (    (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyR   (   s   u   Metadatau   PKG_INFO_ENCODINGu   PKG_INFO_PREFERRED_VERSIONu   utf-8u   1.1u
   
       \|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(    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   _version2fieldlistf   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(    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   _has_markert   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(    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   _best_versionr   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(    (    sC   /var/www/testScraper/venv/build/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=   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   __init__÷   s    				c         C  s   t  |  j ƒ |  j d <d  S(   Nu   Metadata-Version(   R0   R:   (   RB   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyRA     s    c         C  s   | j  d | | f ƒ d  S(   Nu   %s: %s
(   t   write(   RB   RD   R4   R+   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   _write_field
  s    c         C  s   |  j  | ƒ S(   N(   t   get(   RB   R4   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   __getitem__  s    c         C  s   |  j  | | ƒ S(   N(   t   set(   RB   R4   R+   (    (    sC   /var/www/testScraper/venv/build/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(    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   __delitem__  s
    c         C  s%   | |  j  k p$ |  j | ƒ |  j  k S(   N(   R:   RM   (   RB   R4   (    (    sC   /var/www/testScraper/venv/build/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   (    (    sC   /var/www/testScraper/venv/build/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   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   _default_value$  s    c         C  s   t  j d | ƒ S(   Nu   
(   t   _LINE_PREFIXR2   (   RB   R+   (    (    sC   /var/www/testScraper/venv/build/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   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   __getattr__,  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(    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   get_fullname7  s    c         C  s   |  j  | ƒ } | t k S(   u+   return True if name is a valid metadata key(   RM   RR   (   RB   R4   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   is_field=  s    c         C  s   |  j  | ƒ } | t k S(   N(   RM   RU   (   RB   R4   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   is_multi_fieldB  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(    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyR>   F  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+   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyR?   N  s    +
c         C  s>   t  j | d d d ƒ} z |  j | | ƒ Wd | j ƒ  Xd S(   u&   Write the metadata fields to filepath.u   wR`   u   utf-8N(   Ra   Rb   t
   write_fileRc   (   RB   Rd   t   skip_unknownRe   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyRG   d  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 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   
u	   
       |N(	   RA   R   RI   RV   RH   t   joinRU   R3   Rg   (   RB   t
   fileobjectRo   Rl   Rm   R+   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyRn   l  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   (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   _setŒ  s    u   keysN(   t   hasattrR   R   (   RB   t   othert   kwargsRr   t   kt   v(    (   RB   sC   /var/www/testScraper/venv/build/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   listRh   R   Ri   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   _UNICODEFIELDSRY   R:   (   RB   R4   R+   Rw   t   project_nameR=   (    (    sC   /var/www/testScraper/venv/build/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    Rg   R!   RV   Rx   R   Ri   (   RB   R4   t   defaultR+   t   rest   val(    (    sC   /var/www/testScraper/venv/build/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€   Ri   R   R   (   R+   Rw   (   R=   (    sC   /var/www/testScraper/venv/build/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!   Rp   R   R
   R=   R   R‚   Rƒ   R„   R…   RI   R    (   RB   t   strictt   missingt   warningst   attrRk   RŒ   R)   t
   controllerRl   R+   (    (   R=   sC   /var/www/testScraper/venv/build/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
   classifieru
   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
   classifieru
   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:   Rp   (	   RB   t   skip_missingt   mapping_1_0t   dataR*   RO   t   mapping_1_2t   ut   mapping_1_1(    (    sC   /var/www/testScraper/venv/build/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   requirementsRl   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   add_requirementsN  s
    c         C  s   t  t |  d ƒ ƒ S(   Nu   Metadata-Version(   Ry   R   (   RB   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyR   Y  s    c         c  s    x |  j  ƒ  D] } | Vq Wd  S(   N(   R   (   RB   R*   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   __iter__\  s    c         C  s!   g  |  j  ƒ  D] } |  | ^ q S(   N(   R   (   RB   R*   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyRm   `  s    c         C  s'   g  |  j  ƒ  D] } | |  | f ^ q S(   N(   R   (   RB   R*   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyR   c  s    c         C  s   d |  j  j |  j |  j f S(   Nu
   <%s %s %s>(   t	   __class__R   R4   R   (   RB   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   __repr__f  s    N(#   R   R   R   R    RF   RA   RH   RJ   RL   RP   RQ   RM   RW   RY   R[   R   R]   R^   R_   R>   R?   RG   Rn   R@   RK   Rˆ   RI   R’   R™   R›   R   Rœ   Rm   R   Rž   (    (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyR7   ë   s>   																	,,;					u   pydist.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   validateRb   R>   t   METADATA_VERSIONt	   GENERATORRx   R   t   decodet   jsont   loadst
   ValueErrorR   (   RB   RC   RD   RE   R=   R•   t   f(    (    sC   /var/www/testScraper/venv/build/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 | ƒ  } |  j j | | ƒ } nQ | | k rÜ t  j |  | ƒ } n0 |  j rú |  j j | ƒ } n |  j j | ƒ } | S(   Nu   common_keysu   mapped_keys(   t   objectt   __getattribute__R    R    RI   R¡   (   RB   R*   t   commont   mappedt   lkt   makert   resultR+   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyR¬   Ü  s     		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(    (    sC   /var/www/testScraper/venv/build/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| |  j | <n� | | k r° t j |  | | ƒ nn | d k rø t | t	 ƒ rø | j
 ƒ  } | rì | j ƒ  } qõ g  } qø n  |  j r| |  j | <n | |  j | <d  S(   Nu   common_keysu   mapped_keysu   keywords(   R·   R«   R¬   R    R    t   NotImplementedErrorR¡   t   __setattr__Rx   R   Rz   Ri   (   RB   R*   R+   R­   R®   R¯   t   _(    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyR¹   û  s*    			c         C  s   t  |  j |  j t ƒ S(   N(   R6   R4   R   R   (   RB   (    (    sC   /var/www/testScraper/venv/build/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¡   t
   setdefaultR4   R   R!   (   RB   R±   t   s(    (    sC   /var/www/testScraper/venv/build/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¡   (   RB   R+   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyR¾   %  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±   t   dt   includeR   R*   t   e(    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyRÂ   ,  s0    					
c         C  s   |  j  r |  j ƒ  S|  j S(   N(   R    t   _from_legacyR¡   (   RB   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt
   dictionaryV  s    	
c         C  s)   |  j  r t ‚ n t |  j |  j ƒ Sd  S(   N(   R    R¸   R   R¡   t   DEPENDENCY_KEYS(   RB   (    (    sC   /var/www/testScraper/venv/build/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+   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyRÊ   c  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!   Rp   R   R·   (	   RB   RE   R=   RŽ   R*   Rµ   Rk   Rv   Rw   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyR¢   j  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�   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyR£   x  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±   (    (    sC   /var/www/testScraper/venv/build/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   lmdRv   t   nkt   kwR   t   okt   authort
   maintainer(    (    sC   /var/www/testScraper/venv/build/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   addRp   (   t   entriesRÃ   RÆ   t   extraRÀ   t   rlistt   rR   (    (    sC   /var/www/testScraper/venv/build/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(    (    sC   /var/www/testScraper/venv/build/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 neededRo   t   ensure_asciit   indenti   t	   sort_keysu   wu   utf-8(   R8   R    R©   R£   R    Rã   RG   Rn   RÇ   R¡   R§   t   dumpR   Ra   Rb   (   RB   RC   RD   t   legacyRo   t	   legacy_mdRÄ   Rª   (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyRG   Ó  s&    
			
c         C  s<   |  j  r |  j  j | ƒ n |  j j d g  ƒ j | ƒ d  S(   Nu   run_requires(   R    R›   R¡   R¼   RÁ   (   RB   Rš   (    (    sC   /var/www/testScraper/venv/build/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   t   metadata_version(   RB   R4   R   (    (    sC   /var/www/testScraper/venv/build/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_keysRy   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ž   (    (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyRŸ   n  s€   

	,
	
	*					
	%	(A   R   t
   __future__R    Ra   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ì   RX   R   R   R$   R   R%   R   R&   RK   RR   R@   t   EXTRA_RER   R0   RT   R   R‚   R„   RU   Rg   RV   R†   R«   Rˆ   R1   R   R6   R7   t   METADATA_FILENAMERŸ   (    (    (    sC   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/metadata.pyt   <module>	   sÚ   																				8
									ÿ �