3
g                 @   s   d dl 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m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ee eedf edddZeedddZeedddZe jddeedddZ dS )    N)Message)
FeedParser)OptionalTuple)pkg_resources)
specifiersversion)Requirement)Distribution)NoneMetadataError)display_path.)requires_pythonversion_inforeturnc             C   s4   | dkrdS t 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)r   r   Zrequires_python_specifierpython_version r   [/var/www/tester-filtro-web/env/lib/python3.6/site-packages/pip/_internal/utils/packaging.pycheck_requires_python   s
    
r   )distr   c             C   s   d}t | tjr&| j|r&| j|}n0| jdr@d}| j|}ntjdt| j d}|dkrht	| |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)r   metadata_namemetadataZfeed_parserr   r   r   r    )   s    


r    c             C   s2   | j dr.x"| jdD ]}|j r|j S qW dS )N	INSTALLERr   )r   get_metadata_linesstrip)r   liner   r   r   get_installerD   s
    
r,   i   )maxsize)
req_stringr   c             C   s   t | S )z5Construct a packaging.Requirement object with caching)r	   )r.   r   r   r   get_requirementL   s    r/   )!	functoolsloggingemail.messager   email.parserr   typingr   r   pip._vendorr   pip._vendor.packagingr   r   "pip._vendor.packaging.requirementsr	   pip._vendor.pkg_resourcesr
   pip._internal.exceptionsr   pip._internal.utils.miscr   	getLogger__name__r!   r   intboolr   r    r,   	lru_cacher/   r   r   r   r   <module>   s"   

