
}«‘_   ã               @   s¯   d  d l  m Z d  d l m Z d  d l Z d  d l Z d  d l m Z d  d l 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 S)é    )Úabsolute_import)Ú
FeedParserN)Ú
specifiers)Úversion)Úpkg_resources)Ú
exceptionsc             C   sW   |  d k r d St  j |  ƒ } t j d j t t t j d d … ƒ ƒ ƒ } | | k S)aG  
    Check if the python version in use match the `requires_python` specifier.

    Returns `True` if the version of python in use matches the requirement.
    Returns `False` if the version of python in use does not matches the
    requirement.

    Raises an InvalidSpecifier if `requires_python` have an invalid format.
    NTÚ.é   )	r   ÚSpecifierSetr   ÚparseÚjoinÚmapÚstrÚsysÚversion_info)Úrequires_pythonÚrequires_python_specifierÚpython_version© r   ú2/tmp/pip-build-3_sjtvrs/pip/pip/utils/packaging.pyÚcheck_requires_python   s
    
.r   c             C   sN   t  |  t j ƒ r. |  j d ƒ r. |  j d ƒ S|  j d ƒ rJ |  j d ƒ Sd  S)NÚMETADATAzPKG-INFO)Ú
isinstancer   ÚDistInfoDistributionÚhas_metadataÚget_metadata)Údistr   r   r   r   %   s
    r   c             C   sÛ   t  |  ƒ } t ƒ  } | j | ƒ | j ƒ  } | j d ƒ } yN t | ƒ sŠ t j d |  j | d j	 t
 t t j d  d … ƒ ƒ f ƒ ‚ WnI t j k
 rÖ } z& t j d |  j | | f ƒ d  SWYd  d  } ~ Xn Xd  S)NzRequires-Pythonz4%s requires Python '%s' but the running Python is %sr   r	   z7Package %s has an invalid Requires-Python entry %s - %s)r   r   ÚfeedÚcloseÚgetr   r   ÚUnsupportedPythonVersionÚproject_namer   r   r   r   r   r   ÚInvalidSpecifierÚloggerÚwarning)r   ÚmetadataÚfeed_parserÚpkg_info_dictr   Úer   r   r   Úcheck_dist_requires_python-   s"    	0r)   )Ú
__future__r   Úemail.parserr   Úloggingr   Zpip._vendor.packagingr   r   Úpip._vendorr   Úpipr   Ú	getLoggerÚ__name__r#   r   r   r)   r   r   r   r   Ú<module>   s   