§
    è ph†2  ã                   ó¦  — d Z ddl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 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  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/ ddl0m1Z1m2Z2m3Z3  ej4        e5¦  «        Z6e3j7        e3j8        e3j9        gZ:dedefd„Z; G d„ de¦  «        Z<dS )zðContains the RequirementCommand base class.

This class is in a separate module so the commands that do not always
need PackageFinder capability don't unnecessarily import the
PackageFinder machinery and all its vendored dependencies, etc.
é    N)Úpartial)ÚValues)ÚAnyÚListÚOptionalÚTuple)Ú
WheelCache)Ú
cmdoptions)ÚIndexGroupCommand)ÚSessionCommandMixin)ÚCommandErrorÚPreviousBuildDirError)ÚLinkCollector)ÚPackageFinder)ÚSelectionPreferences)ÚTargetPython)Ú
PipSession)ÚBuildTracker)ÚRequirementPreparer)Úinstall_req_from_editableÚinstall_req_from_lineÚ#install_req_from_parsed_requirementÚinstall_req_from_req_string)Úparse_dependency_groups)Úparse_requirements)ÚInstallRequirement)ÚBaseResolver)ÚTempDirectoryÚTempDirectoryTypeRegistryÚtempdir_kindsÚfuncÚreturnc           	      ó–   ‡ ‡— dt           ddfd„Šdt          dt          dt          t                   dt
          t                   fˆˆ fd„}|S )	zNDecorator for common logic related to managing temporary
    directories.
    Úregistryr"   Nc                 óF   — t           D ]}|                      |d¦  «         Œd S )NF)ÚKEEPABLE_TEMPDIR_TYPESÚ
set_delete)r$   Úts     újC:\Users\Daniel\PycharmProjects\Portfolio_Website\.venv\Lib\site-packages\pip\_internal\cli\req_command.pyÚconfigure_tempdir_registryz0with_cleanup.<locals>.configure_tempdir_registry8   s4   € Ý'ð 	*ð 	*ˆAØ×Ò  5Ñ)Ô)Ð)Ð)ð	*ð 	*ó    ÚselfÚoptionsÚargsc                 óž   •— | j         €J ‚|j        r ‰| j         ¦  «         	  ‰| ||¦  «        S # t          $ r  ‰| j         ¦  «         ‚ w xY w©N)Útempdir_registryÚno_cleanr   )r,   r-   r.   r*   r!   s      €€r)   Úwrapperzwith_cleanup.<locals>.wrapper<   s€   ø€ ð Ô$Ð0Ð0Ð0ØÔð 	>Ø&Ð& tÔ'<Ñ=Ô=Ð=ð	Ø�4˜˜g tÑ,Ô,Ð,øÝ$ð 	ð 	ð 	ð 'Ð& tÔ'<Ñ=Ô=Ð=Øð	øøøs	   £0 °A)r   ÚRequirementCommandr   r   r   r   Úint)r!   r3   r*   s   ` @r)   Úwith_cleanupr6   3   sy   øø€ ð
*Õ-Fð *È4ð *ð *ð *ð *ðÝ ðÝ+1ðÝ9=½c¼ðå	•#Œðð ð ð ð ð ð ð  €Nr+   c                   ó¶  ‡ — e Zd Zdededdfˆ fd„Zededefd„¦   «         Ze		 	 d"d	e
ded
ededededee         dedefd„¦   «         Ze		 	 	 	 	 	 	 	 d#dedededee         dedededededee         deeedf                  defd„¦   «         Zdee         dedededee         f
d„Zededdfd„¦   «         Z	 	 d$deded ee         dee         def
d!„Zˆ xZS )%r4   r.   Úkwr"   Nc                 óæ   •—  t          ¦   «         j        |i |¤Ž | j                             t	          j        ¦   «         ¦  «         | j                             t	          j        ¦   «         ¦  «         d S r0   )ÚsuperÚ__init__Úcmd_optsÚ
add_optionr
   Údependency_groupsr2   )r,   r.   r8   Ú	__class__s      €r)   r;   zRequirementCommand.__init__P   sc   ø€ Ø�‰ŒÔ˜$Ð% "Ð%Ð%Ð%àŒ× Ò ¥Ô!=Ñ!?Ô!?Ñ@Ô@Ð@ØŒ× Ò ¥Ô!4Ñ!6Ô!6Ñ7Ô7Ð7Ð7Ð7r+   r-   c                 ó   — d| j         v rdS dS )zEDetermines which resolver should be used, based on the given options.zlegacy-resolverÚlegacyÚ
resolvelib)Údeprecated_features_enabled©r-   s    r)   Údetermine_resolver_variantz-RequirementCommand.determine_resolver_variantV   s   € ð  Ô CÐCð 	Ø�8àˆ|r+   r   Útemp_build_dirÚbuild_trackerÚsessionÚfinderÚuse_user_siteÚdownload_dirÚ	verbosityc	                 ód  — |j         }	|	€J ‚d}
|                      |¦  «        }|dk    r&d|j        v }|rt                               d¦  «         n'd}
d}d|j        v rt                               d¦  «         t          |	|j        ||j        |j        |||j	        ||j
        ||||
|j        ¬¦  «        S )	zQ
        Create a RequirementPreparer instance for the given parameters.
        NFrB   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.Tz;fast-deps has no effect when used with the legacy resolver.)Ú	build_dirÚsrc_dirrK   Úbuild_isolationÚcheck_build_depsrG   rH   Úprogress_barrI   Úrequire_hashesrJ   Ú
lazy_wheelrL   Úlegacy_resolverÚresume_retries)ÚpathrE   Úfeatures_enabledÚloggerÚwarningr   rO   rP   rQ   rR   rS   rV   )ÚclsrF   r-   rG   rH   rI   rJ   rK   rL   Útemp_build_dir_pathrU   Úresolver_variantrT   s                r)   Úmake_requirement_preparerz,RequirementCommand.make_requirement_preparer^   sü   € ð -Ô1ÐØ"Ð.Ð.Ð.Øˆà×9Ò9¸'ÑBÔBÐØ˜|Ò+ð 	Ø$¨Ô(@Ð@ˆJØð Ý—’ð"ñô ð øð #ˆOØˆJØ˜gÔ6Ð6ð Ý—’ØQñô ð õ #Ø)Ø”OØ%Ø#Ô3Ø$Ô5Ø'ØØ Ô-ØØ"Ô1Ø'Ø!ØØ+Ø"Ô1ð
ñ 
ô 
ð 	
r+   FTúto-satisfy-onlyÚpreparerÚwheel_cacheÚignore_installedÚignore_requires_pythonÚforce_reinstallÚupgrade_strategyÚ
use_pep517Úpy_version_info.c                 ód  — t          t          |j        |
¬¦  «        }|                      |¦  «        }|dk    r=ddl}|j        j        j        j         	                    ||||||j
        ||||	|¬¦  «        S ddl}|j        j        j        j         	                    ||||||j
        ||||	|¬¦  «        S )zF
        Create a Resolver instance for the given parameters.
        )Úisolatedrf   rB   r   N)r`   rI   ra   Úmake_install_reqrJ   Úignore_dependenciesrb   rc   rd   re   rg   )r   r   Úisolated_moderE   Ú,pip._internal.resolution.resolvelib.resolverÚ	_internalÚ
resolutionrB   ÚresolverÚResolverrk   Ú(pip._internal.resolution.legacy.resolverrA   )r[   r`   rI   r-   ra   rJ   rb   rc   rd   re   rf   rg   rj   r]   Úpips                  r)   Úmake_resolverz RequirementCommand.make_resolver–   sþ   € õ$ #Ý'ØÔ*Ø!ð
ñ 
ô 
Ðð
 ×9Ò9¸'ÑBÔBÐð ˜|Ò+ð 	Ø?Ð?Ð?Ð?à”=Ô+Ô6Ô?×HÒHØ!ØØ'Ø!1Ø+Ø$+Ô$?Ø!1Ø'=Ø /Ø!1Ø /ð Iñ ô ð ð 	8Ð7Ð7Ð7àŒ}Ô'Ô.Ô7×@Ò@ØØØ#Ø-Ø'Ø 'Ô ;Ø-Ø#9Ø+Ø-Ø+ð Añ 
ô 
ð 	
r+   c                 ó˜  — g }|j         D ]E}t          |d|||¬¦  «        D ].}t          ||j        d¬¦  «        }|                     |¦  «         Œ/ŒF|D ]E}	t          |	d|j        |j        dt          |dd¦  «        ¬¦  «        }|                     |¦  «         ŒF|j        rIt          |j        ¦  «        D ]4}	t          |	|j        |j        d¬¦  «        }|                     |¦  «         Œ5|j        D ]D}	t          |	d|j        |j        t          |dd¦  «        ¬	¦  «        }|                     |¦  «         ŒE|j        D ]l}t          ||||¬
¦  «        D ]V}t          ||j        |j        d|j        r|j                             d¦  «        nd¬¦  «        }|                     |¦  «         ŒWŒmt!          d„ |D ¦   «         ¦  «        rd|_        |s€|j        sy|j        sr|j        skd| j        i}
|j        rAt)           dj        di t-          |
d                     |j        ¦  «        ¬¦  «        ¤Ž¦  «        ‚t)           dj        di |
¤Ž¦  «        ‚|S )zS
        Parse command-line arguments into the corresponding requirements.
        T)Ú
constraintrI   r-   rH   F)ri   Úuser_suppliedNÚconfig_settings)Ú
comes_fromri   rf   rw   rx   )ri   rf   rw   )rw   ri   rf   rx   )rI   r-   rH   )ri   rf   rw   rx   c              3   ó$   K  — | ]}|j         V — Œd S r0   )Úhas_hash_options)Ú.0Úreqs     r)   ú	<genexpr>z6RequirementCommand.get_requirements.<locals>.<genexpr>  s%   è è € Ð<Ð<¨ˆsÔ#Ð<Ð<Ð<Ð<Ð<Ð<r+   Ú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   rl   Úappendr   rf   Úgetattrr>   r   r   Ú	editablesr   Úrequirementsr-   ÚgetÚanyrS   r   Ú
find_linksr   ÚformatÚdictÚjoin)r,   r.   r-   rI   rH   r‡   ÚfilenameÚ
parsed_reqÚ
req_to_addr}   Úoptss              r)   Úget_requirementsz#RequirementCommand.get_requirementsÑ   s^  € ð 24ˆØÔ+ð 	0ð 	0ˆHÝ0ØØØØØðñ ô ð 0ð 0�
õ AØØ$Ô2Ø"'ðñ ô �
ð
 ×#Ò# JÑ/Ô/Ð/Ð/ð0ð ð 		,ð 		,ˆCÝ.ØØØ Ô.Ø"Ô-Ø"Ý '¨Ð1BÀDÑ IÔ Iðñ ô ˆJð ×Ò 
Ñ+Ô+Ð+Ð+àÔ$ð 	0Ý.¨wÔ/HÑIÔIð 0ð 0�Ý8ØØ$Ô2Ø&Ô1Ø"&ð	ñ ô �
ð ×#Ò# JÑ/Ô/Ð/Ð/àÔ$ð 	,ð 	,ˆCÝ2ØØ"Ø Ô.Ø"Ô-Ý '¨Ð1BÀDÑ IÔ Iðñ ô ˆJð ×Ò 
Ñ+Ô+Ð+Ð+ð  Ô,ð 	0ð 	0ˆHÝ0Ø °À'ðñ ô ð 0ð 0�
õ AØØ$Ô2Ø&Ô1Ø"&ð &Ô-ð"˜
Ô*×.Ò.Ð/@ÑAÔAÐAà!ð
ñ 
ô 
�
ð ×#Ò# JÑ/Ô/Ð/Ð/ð0õ" Ð<Ð<¨|Ð<Ñ<Ô<Ñ<Ô<ð 	*Ø%)ˆGÔ"ð ð	àÔ ð	ð Ô#ð	ð Ô(ð		ð ˜DœIÐ&ˆDØÔ!ð Ý"ðEð >Ü>Dðð å˜t¨3¯8ª8°GÔ4FÑ+GÔ+GÐHÑHÔHðð ñô ð õ #ð5ð .Ü.4ð=ð =Ø7;ð=ð =ñô ð ð
 Ðr+   c                 óx   — | j         }|                     ¦   «         }|rt                               |¦  «         dS dS )zE
        Trace basic information about the provided objects.
        N)Úsearch_scopeÚget_formatted_locationsrY   Úinfo)rI   r”   Ú	locationss      r)   Útrace_basic_infoz#RequirementCommand.trace_basic_info6  sG   € ð Ô*ˆØ ×8Ò8Ñ:Ô:ˆ	Øð 	#Ý�KŠK˜	Ñ"Ô"Ð"Ð"Ð"ð	#ð 	#r+   Útarget_pythonc                 ó¢   — t          j        ||¬¦  «        }t          d|j        |j        |j        |¬¦  «        }t          j        |||¬¦  «        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.
        rD   T)Úallow_yankedÚformat_controlÚallow_all_prereleasesÚprefer_binaryrc   )Úlink_collectorÚselection_prefsr™   )r   Úcreater   rœ   Úprerž   r   )r,   r-   rH   r™   rc   rŸ   r    s          r)   Ú_build_package_finderz(RequirementCommand._build_package_finderA  si   € õ 'Ô-¨g¸wÐGÑGÔGˆÝ.ØØ"Ô1Ø")¤+Ø!Ô/Ø#9ð
ñ 
ô 
ˆõ Ô#Ø)Ø+Ø'ð
ñ 
ô 
ð 	
r+   )Nr   )NFTFFr_   NN)NN)Ú__name__Ú
__module__Ú__qualname__r   r;   Ústaticmethodr   ÚstrrE   Úclassmethodr   r   r   r   Úboolr   r5   r   r^   r	   r   r   rt   r   r   r’   r˜   r   r£   Ú__classcell__)r?   s   @r)   r4   r4   O   s¶  ø€ € € € € ð8˜cð 8¨ð 8°ð 8ð 8ð 8ð 8ð 8ð 8ð ð¨Fð °sð ð ð ñ „\ðð ð '+Øð5
ð 5
à%ð5
ð ð5
ð $ð	5
ð
 ð5
ð ð5
ð ð5
ð ˜s”mð5
ð ð5
ð 
ð5
ð 5
ð 5
ñ „[ð5
ðn ð -1Ø#Ø!%Ø',Ø %Ø 1Ø%)Ø59ð8
ð 8
à%ð8
ð ð8
ð ð	8
ð
 ˜jÔ)ð8
ð ð8
ð ð8
ð !%ð8
ð ð8
ð ð8
ð ˜T”Nð8
ð " %¨¨S¨¤/Ô2ð8
ð 
ð8
ð 8
ð 8
ñ „[ð8
ðtcà�3Œiðcð ðcð ð	cð
 ðcð 
Ð Ô	!ðcð cð cð cðJ ð# ð #°4ð #ð #ð #ñ „\ð#ð 15Ø15ð
ð 
àð
ð ð
ð   Ô-ð	
ð
 !)¨¤ð
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r+   r4   )=Ú__doc__ÚloggingÚ	functoolsr   Úoptparser   Útypingr   r   r   r   Úpip._internal.cacher	   Úpip._internal.clir
   Úpip._internal.cli.index_commandr   r   Úpip._internal.exceptionsr   r   Úpip._internal.index.collectorr   Ú"pip._internal.index.package_finderr   Ú$pip._internal.models.selection_prefsr   Ú"pip._internal.models.target_pythonr   Úpip._internal.network.sessionr   Ú,pip._internal.operations.build.build_trackerr   Ú pip._internal.operations.preparer   Úpip._internal.req.constructorsr   r   r   r   Ú&pip._internal.req.req_dependency_groupr   Úpip._internal.req.req_filer   Úpip._internal.req.req_installr   Úpip._internal.resolution.baser   Úpip._internal.utils.temp_dirr   r   r    Ú	getLoggerr¤   rY   Ú	BUILD_ENVÚEPHEM_WHEEL_CACHEÚ	REQ_BUILDr&   r6   r4   r‚   r+   r)   ú<module>rÆ      sŠ  ððð ð €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -à *Ð *Ð *Ð *Ð *Ð *Ø (Ð (Ð (Ð (Ð (Ð (Ø =Ð =Ð =Ð =Ð =Ð =Ø VÐ VÐ VÐ VÐ VÐ VØ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø <Ð <Ð <Ð <Ð <Ð <Ø EÐ EÐ EÐ EÐ EÐ EØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø EÐ EÐ EÐ EÐ EÐ EØ @Ð @Ð @Ð @Ð @Ð @ðð ð ð ð ð ð ð ð ð ð ð ð KÐ JÐ JÐ JÐ JÐ JØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø <Ð <Ð <Ð <Ð <Ð <Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜8Ñ	$Ô	$€ð ÔØÔ#ØÔðÐ ð�sð ˜sð ð ð ð ð8L
ð L
ð L
ð L
ð L
Ð*ñ L
ô L
ð L
ð L
ð L
r+   