
0c@_                 @   s  d  d l  m Z d  d l Z d  d l m Z d  d l m Z d  d l m Z m	 Z	 d  d l
 m Z d  d l m Z d  d l m Z e r d  d	 l m Z m Z d  d
 l m Z d  d l m Z e j e  Z d d   Z d d   Z d d   Z d d   Z d S)    )absolute_importN)
FeedParser)pkg_resources)
specifiersversion)NoneMetadataError)display_path)MYPY_CHECK_RUNNING)OptionalTuple)Message)Distributionc             C   sJ   |  d k r d St  j |   } t j d j t t |    } | | k S)a  
    Check if the given Python version matches a "Requires-Python" specifier.

    :param version_info: A 3-tuple of ints representing a Python
        major-minor-micro version to check (e.g. `sys.version_info[:3]`).

    :return: `True` if the given Python version satisfies the requirement.
        Otherwise, return `False`.

    :raises InvalidSpecifier: If `requires_python` has an invalid format.
    NT.)r   SpecifierSetr   parsejoinmapstr)requires_pythonversion_infoZrequires_python_specifierpython_version r   </tmp/pip-build-jynh7p1z/pip/pip/_internal/utils/packaging.pycheck_requires_python   s
    !r   c             C   s   d } t  |  t j  r9 |  j |  r9 |  j |  } nF |  j d  r` d } |  j |  } n t j d t |  j   d } | d k r t	 |  |   t
   } | j |  | j   S)z
    :raises NoneMetadataError: if the distribution reports `has_metadata()`
        True but `get_metadata()` returns None.
    METADATAzPKG-INFOzNo metadata found in %s N)
isinstancer   DistInfoDistributionhas_metadataget_metadataloggerwarningr   locationr   r   feedclose)distmetadata_namemetadatafeed_parserr   r   r   r   ,   s    	r   c             C   s7   t  |   } | j d  } | d k	 r3 t |  } | S)z_
    Return the "Requires-Python" metadata for a distribution, or None
    if not present.
    zRequires-PythonN)r   getr   )r%   pkg_info_dictr   r   r   r   get_requires_pythonG   s
    r+   c             C   sC   |  j  d  r? x- |  j d  D] } | j   r | j   Sq Wd S)N	INSTALLERr   )r   get_metadata_linesstrip)r%   liner   r   r   get_installerX   s
    r0   )
__future__r   loggingemail.parserr   Zpip._vendorr   Zpip._vendor.packagingr   r   Zpip._internal.exceptionsr   Zpip._internal.utils.miscr   Zpip._internal.utils.typingr	   Ztypingr
   r   email.messager   Zpip._vendor.pkg_resourcesr   	getLogger__name__r    r   r   r+   r0   r   r   r   r   <module>   s    