o
    àej‹  ã                   @   sÄ   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 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 eeƒZG dd„ deƒZdS )é    N)ÚValues)ÚPath)Útomli_w)Úis_valid_pylock_path)Ú
WheelCache)Ú
cmdoptions)ÚRequirementCommandÚwith_cleanup)ÚSUCCESS)Úget_build_tracker)Ú	getLogger)Úget_pip_version)Ú pylock_from_install_requirements)ÚTempDirectoryc                   @   s<   e Zd ZdZdZddd„Zededee	 de
fd	d
„ƒZdS )ÚLockCommandaÖ  
    EXPERIMENTAL - Lock packages and their dependencies from:

    - PyPI (and other indexes) using requirement specifiers.
    - VCS project urls.
    - Local project directories.
    - Local or remote source archives.

    pip also supports locking from "requirements files", which provide an easy
    way to specify a whole environment to be installed.

    The generated lock file is only guaranteed to be valid for the current
    python version and platform.
    zô
      %prog [options] [-e] <local project path> ...
      %prog [options] <requirement specifier> [package-index-options] ...
      %prog [options] -r <requirements file> [package-index-options] ...
      %prog [options] <archive url/path> ...ÚreturnNc                 C   sP  | j  tjdddddddd�¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t 	¡ ¡ | j  t 
¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ t tj| j¡}t tj| j¡}| j d|¡ | j d|¡ | j d| j ¡ d S )	Nz--outputz-oÚoutput_fileÚpathzpylock.tomlz7Lock file name (default=pylock.toml). Use - for stdout.)ÚdestÚmetavarÚtypeÚdefaultÚhelpr   )Úcmd_optsÚ
add_optionr   Ú	PipOptionÚrequirementsÚrequirements_from_scriptsÚconstraintsÚbuild_constraintsÚno_depsÚeditableÚsrcÚignore_requires_pythonÚno_build_isolationÚ
use_pep517Úcheck_build_depsÚconfig_settingsÚrequire_hashesÚprogress_barÚmake_option_groupÚindex_groupÚparserÚpackage_selection_groupÚinsert_option_group)ÚselfÚ
index_optsÚselection_opts© r2   ú[/var/www/html/choboyeo/PHP/venv/lib/python3.10/site-packages/pip/_internal/commands/lock.pyÚadd_options0   sH   ùÿþþzLockCommand.add_optionsÚoptionsÚargsc              
   C   sb  t  dtƒ ¡ t  d¡ t |¡ t |¡ |  |¡}| j|||j	d�}|  
tƒ ¡}t|j ddd�}|  ||||¡}t|jƒ}|D ]}	d|	_qB| j|||||d| jd�}
| j|
|||dd|j	d	d
�}|  |¡ |j|dd�}|jdkryt ¡ }nt|jƒ}t|ƒsˆt  d|¡ |j}t|j ¡ |d�}t  | !¡ ¡}|jdkr¨t"j# $|¡ t&S |j%|dd� t&S )NzUsing %szspip lock is currently an experimental command. It may be removed/changed in a future release without prior warning.)r5   Úsessionr#   ÚinstallT)ÚdeleteÚkindÚglobally_managedF)Útemp_build_dirr5   Úbuild_trackerr7   ÚfinderÚuse_user_siteÚ	verbosityzto-satisfy-only)Úpreparerr>   r5   Úwheel_cacher?   Úignore_installedr#   Úupgrade_strategy)Úcheck_supported_wheelsú-z!%s is not a valid lock file name.)Úbase_dirzutf-8)Úencoding)'ÚloggerÚverboser   Úwarningr   Úcheck_build_constraintsÚcheck_release_control_exclusiveÚget_default_sessionÚ_build_package_finderr#   Úenter_contextr   r   Úno_cleanÚget_requirementsr   Ú	cache_dirÚpermit_editable_wheelsÚmake_requirement_preparerr@   Úmake_resolverÚtrace_basic_infoÚresolver   r   Úcwdr   Úparentr   r   Úvaluesr   ÚdumpsÚto_dictÚsysÚstdoutÚwriteÚ
write_textr
   )r/   r5   r6   r7   r>   r=   Ú	directoryÚreqsrB   ÚreqrA   ÚresolverÚrequirement_setrG   Úoutput_file_pathÚpylockÚpylock_tomlr2   r2   r3   Úrun^   sz   ÿ


ýý
ù	ø



þ
ÿ
þzLockCommand.run)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úusager4   r	   r   ÚlistÚstrÚintrj   r2   r2   r2   r3   r      s    
. r   )r^   Úoptparser   Úpathlibr   Úpip._vendorr   Úpip._vendor.packaging.pylockr   Úpip._internal.cacher   Úpip._internal.clir   Úpip._internal.cli.req_commandr   r	   Úpip._internal.cli.status_codesr
   Ú,pip._internal.operations.build.build_trackerr   Úpip._internal.utils.loggingr   Úpip._internal.utils.miscr   Úpip._internal.utils.pylockr   Úpip._internal.utils.temp_dirr   rk   rI   r   r2   r2   r2   r3   Ú<module>   s     