a
    ‡ÀàgG@  ã                   @   s²  d 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
 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 ddlmZ ddlmZmZ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&�rZddl'm(Z( ddl)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl#m8Z8m9Z9 e :e;¡Z<G dd„ deƒZ=G dd„ de
e=ƒZ>e$j?e$j@e$jAgZBdd „ ZCG d!d"„ d"e>ƒZDdS )#a  Contains the Command base classes that depend on PipSession.

The classes in this module are in a separate module so the commands not
needing download / PackageFinder capability don't unnecessarily import the
PackageFinder machinery and all its vendored dependencies, etc.
é    N)Úpartial)ÚPY2)Ú
cmdoptions)ÚCommand)ÚCommandContextMixIn)ÚCommandErrorÚPreviousBuildDirError)ÚLinkCollector)ÚPackageFinder)ÚSelectionPreferences)Ú
PipSession)ÚRequirementPreparer)Úinstall_req_from_editableÚinstall_req_from_lineÚ#install_req_from_parsed_requirementÚinstall_req_from_req_string)Úparse_requirements)Úpip_self_version_check)Útempdir_kinds)ÚMYPY_CHECK_RUNNING)ÚValues)ÚAnyÚListÚOptionalÚTuple)Ú
WheelCache)ÚTargetPython)ÚInstallRequirement)ÚRequirementTracker)ÚBaseResolver)ÚTempDirectoryÚTempDirectoryTypeRegistryc                       s>   e Zd ZdZ‡ fdd„Zedd„ ƒZdd„ Zdd	d
„Z‡  Z	S )ÚSessionCommandMixinzE
    A class mixin for command classes needing _build_session().
    c                    s   t t| ƒ ¡  d | _d S ©N)Úsuperr"   Ú__init__Ú_session)Úself©Ú	__class__© úV/var/www/sistema_ama/venv/lib/python3.9/site-packages/pip/_internal/cli/req_command.pyr%   6   s    zSessionCommandMixin.__init__c                 C   sL   g }t |ddƒs*t |ddƒ}|r*| |¡ t |ddƒ}|rD| |¡ |pJdS )z7Return a list of index urls from user-provided options.Úno_indexFÚ	index_urlNÚextra_index_urls)ÚgetattrÚappendÚextend)ÚclsÚoptionsÚ
index_urlsÚurlÚurlsr*   r*   r+   Ú_get_index_urls;   s    

z#SessionCommandMixin._get_index_urlsc                 C   s0   | j du r*|  |  |¡¡| _ | j dus*J ‚| j S )zGet a default-managed session.N)r&   Úenter_contextÚ_build_session)r'   r3   r*   r*   r+   Úget_default_sessionJ   s    
z'SessionCommandMixin.get_default_sessionNc                 C   s´   |j rtj |j ¡sJ ‚t|j r0tj |j d¡nd |d ur>|n|j|j|  |¡d�}|j	rb|j	|_
|jrp|j|_	|jsz|rŽ|d ur†|n|j|_|jr¤|j|jdœ|_|j |j_|S )NÚhttp)ÚcacheÚretriesÚtrusted_hostsr4   )r;   Úhttps)Ú	cache_dirÚosÚpathÚisabsr   Újoinr=   r>   r7   ÚcertÚverifyÚclient_certÚtimeoutÚproxyÚproxiesÚno_inputÚauthZ	prompting)r'   r3   r=   rH   Úsessionr*   r*   r+   r9   U   s,    ÿù
ÿþz"SessionCommandMixin._build_session)NN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r%   Úclassmethodr7   r:   r9   Ú__classcell__r*   r*   r(   r+   r"   1   s   
r"   c                   @   s   e Zd ZdZdd„ ZdS )ÚIndexGroupCommandz–
    Abstract base class for commands with the index_group options.

    This also corresponds to the commands that permit the pip version check.
    c                 C   sh   t |dƒsJ ‚|js|jrdS | j|dtd|jƒd�}|� t||ƒ W d  ƒ n1 sZ0    Y  dS )z€
        Do the pip version check if not disabled.

        This overrides the default behavior of not doing the check.
        r,   Nr   é   )r=   rH   )ÚhasattrÚdisable_pip_version_checkr,   r9   ÚminrH   r   )r'   r3   rM   r*   r*   r+   Úhandle_pip_version_check…   s    
ýz*IndexGroupCommand.handle_pip_version_checkN)rN   rO   rP   rQ   rY   r*   r*   r*   r+   rT   }   s   rT   c                    s   dd„ ‰ ‡ ‡fdd„}|S )zNDecorator for common logic related to managing temporary
    directories.
    c                 S   s   t D ]}|  |d¡ qd S )NF)ÚKEEPABLE_TEMPDIR_TYPESÚ
set_delete)ÚregistryÚtr*   r*   r+   Úconfigure_tempdir_registry¨   s    z0with_cleanup.<locals>.configure_tempdir_registryc                    sP   | j d usJ ‚|jrˆ | j ƒ zˆ| ||ƒW S  tyJ   ˆ | j ƒ ‚ Y n0 d S r#   )Útempdir_registryÚno_cleanr   )r'   r3   Úargs©r^   Úfuncr*   r+   Úwrapper­   s    

zwith_cleanup.<locals>.wrapperr*   )rc   rd   r*   rb   r+   Úwith_cleanup£   s    re   c                	       sb   e Zd Z‡ fdd„Zedd„ ƒZeddd„ƒZeddd„ƒZdd„ Z	edd„ ƒZ
ddd„Z‡  ZS )ÚRequirementCommandc                    s*   t t| ƒj|i |¤Ž | j t ¡ ¡ d S r#   )r$   rf   r%   Úcmd_optsÚ
add_optionr   r`   )r'   ra   Úkwr(   r*   r+   r%   Á   s    zRequirementCommand.__init__c                 C   s(   t rd| jv rdS dS d| jv r$dS dS )zEDetermines which resolver should be used, based on the given options.ú2020-resolverÚlegacyzlegacy-resolver)r   Úfeatures_enabledÚdeprecated_features_enabled©r3   r*   r*   r+   Údetermine_resolver_variantÇ   s    

z-RequirementCommand.determine_resolver_variantNc                 C   s|   |j }|dusJ ‚|  |¡}	|	dkr>d|jv }
|
rVt d¡ nd}
d|jv rVt d¡ t||j||j|||j||j	||
d�S )zQ
        Create a RequirementPreparer instance for the given parameters.
        Nrj   z	fast-depszÊpip is using lazily downloaded wheels using HTTP range requests to obtain dependency information. This experimental feature is enabled through --use-feature=fast-deps and it is not ready for production.Fz;fast-deps has no effect when used with the legacy resolver.)Ú	build_dirÚsrc_dirÚdownload_dirÚbuild_isolationÚreq_trackerrM   Úprogress_barÚfinderÚrequire_hashesÚuse_user_siteÚ
lazy_wheel)
rB   ro   rl   ÚloggerÚwarningr   rq   rs   ru   rw   )r2   Útemp_build_dirr3   rt   rM   rv   rx   rr   Ztemp_build_dir_pathÚresolver_variantry   r*   r*   r+   Úmake_requirement_preparerØ   s6    

ÿ
ÿõz,RequirementCommand.make_requirement_preparerFTúto-satisfy-onlyc                 C   s†   t t|j|
d�}|  |¡}|dkrTddl}|jjjjj	||||||j
||||	|d�S ddl}|jjjjj	||||||j
||||	|d�S )zF
        Create a Resolver instance for the given parameters.
        )ÚisolatedÚ
use_pep517rj   r   N)Úpreparerrv   Úwheel_cacheÚmake_install_reqrx   Úignore_dependenciesÚignore_installedÚignore_requires_pythonÚforce_reinstallÚupgrade_strategyÚpy_version_info)r   r   Úisolated_modero   Z,pip._internal.resolution.resolvelib.resolverÚ	_internalÚ
resolutionÚ
resolvelibÚresolverÚResolverr…   Z(pip._internal.resolution.legacy.resolverrk   )r2   r‚   rv   r3   rƒ   rx   r†   r‡   rˆ   r‰   r�   rŠ   r„   r}   Úpipr*   r*   r+   Úmake_resolver
  sF    ý
õõz RequirementCommand.make_resolverc              	   C   sT  g }|j D ]6}t|d|||d�D ]}t||jdd�}| |¡ q q
|D ]$}	t|	d|j|jdd�}| |¡ qF|jD ]"}	t|	d|j|jd�}| |¡ qr|j	D ]8}t||||d�D ]"}t||j|jdd�}| |¡ q°qœt
d	d
„ |D ƒƒrîd|_|�sP|j�sP|j	�sPd| ji}
|j�r<tdjf i t|
d |j¡d�¤Žƒ‚ntdjf i |
¤Žƒ‚|S )zS
        Parse command-line arguments into the corresponding requirements.
        T)Z
constraintrv   r3   rM   F)r€   Úuser_suppliedN)r€   r�   r“   )r“   r€   r�   )rv   r3   rM   c                 s   s   | ]}|j V  qd S r#   )Zhas_hash_options)Ú.0Úreqr*   r*   r+   Ú	<genexpr>|  ó    z6RequirementCommand.get_requirements.<locals>.<genexpr>ÚnamezXYou must give at least one requirement to {name} (maybe you meant "pip {name} {links}"?)ú )ÚlinkszHYou must give at least one requirement to {name} (see "pip help {name}"))Úconstraintsr   r   r‹   r0   r   r�   Ú	editablesr   ÚrequirementsÚanyrw   r˜   Ú
find_linksr   ÚformatÚdictrD   )r'   ra   r3   rv   rM   r�   ÚfilenameZ
parsed_reqZ
req_to_addr•   Úoptsr*   r*   r+   Úget_requirementsE  sp    
ý
ýý
ü
þ
ü
þÿÿÿz#RequirementCommand.get_requirementsc                 C   s    | j }| ¡ }|rt |¡ dS )zE
        Trace basic information about the provided objects.
        N)Úsearch_scopeZget_formatted_locationsrz   Úinfo)rv   r¥   Ú	locationsr*   r*   r+   Útrace_basic_info�  s    z#RequirementCommand.trace_basic_infoc                 C   s6   t j||d�}td|j|j|j|d�}tj|||d�S )zÛ
        Create a package finder appropriate to this requirement command.

        :param ignore_requires_python: Whether to ignore incompatible
            "Requires-Python" values in links. Defaults to False.
        rn   T)Zallow_yankedÚformat_controlZallow_all_prereleasesÚprefer_binaryr‡   )Úlink_collectorÚselection_prefsÚtarget_python)r	   Úcreater   r©   Úprerª   r
   )r'   r3   rM   r­   r‡   r«   r¬   r*   r*   r+   Ú_build_package_finder™  s    ûýz(RequirementCommand._build_package_finder)N)NFTFFr   NN)NN)rN   rO   rP   r%   Ústaticmethodro   rR   r~   r’   r¤   r¨   r°   rS   r*   r*   r(   r+   rf   ¿   s,   
	 ø1        ô:H
  ûrf   )ErQ   ÚloggingrA   Ú	functoolsr   Zpip._vendor.sixr   Úpip._internal.clir   Zpip._internal.cli.base_commandr   Z!pip._internal.cli.command_contextr   Úpip._internal.exceptionsr   r   Zpip._internal.index.collectorr	   Z"pip._internal.index.package_finderr
   Z$pip._internal.models.selection_prefsr   Zpip._internal.network.sessionr   Z pip._internal.operations.preparer   Zpip._internal.req.constructorsr   r   r   r   Zpip._internal.req.req_filer   Z!pip._internal.self_outdated_checkr   Úpip._internal.utils.temp_dirr   Úpip._internal.utils.typingr   Úoptparser   Útypingr   r   r   r   Úpip._internal.cacher   Ú"pip._internal.models.target_pythonr   Úpip._internal.req.req_installr   Úpip._internal.req.req_trackerr   Zpip._internal.resolution.baser   r    r!   Ú	getLoggerrN   rz   r"   rT   Ú	BUILD_ENVÚEPHEM_WHEEL_CACHEÚ	REQ_BUILDrZ   re   rf   r*   r*   r*   r+   Ú<module>   sH   
L ý