o
    ©„jc  ã                   @   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 ¡ ¡ | 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Ú	only_depsÚeditableÚsrcÚignore_requires_pythonÚno_build_isolationÚ
use_pep517Úcheck_build_depsÚconfig_settingsÚrequire_hashesÚno_require_hashesÚprogress_barÚmake_option_groupÚindex_groupÚparserÚpackage_selection_groupÚinsert_option_group)ÚselfÚ
index_optsÚselection_opts© r4   úY/var/www/html/django_cbt/venv/lib/python3.10/site-packages/pip/_internal/commands/lock.pyÚadd_options0   sL   ùÿþþzLockCommand.add_optionsÚoptionsÚargsc              
   C   s^  t  dtƒ ¡ t  d¡ t |¡ t |¡ t |¡ |  |¡}| j	|||j
d�}|  tƒ ¡}t|j ddd�}|  ||||¡}t|jƒ}| j|||||d| jdd�}	| j|	|||dd|j
d	d
�}
|  |¡ |
j|dd�}|jdkrwt ¡ }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.)r7   Úsessionr$   ÚinstallT)ÚdeleteÚkindÚglobally_managedF)Útemp_build_dirr7   Úbuild_trackerr9   ÚfinderÚuse_user_siteÚ	verbosityÚallow_editableszto-satisfy-only)Úpreparerr@   r7   Úwheel_cacherA   Ú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Ú(check_only_deps_option_does_not_conflictÚget_default_sessionÚ_build_package_finderr$   Úenter_contextr   r   Úno_cleanÚget_requirementsr   Ú	cache_dirÚmake_requirement_preparerrB   Úmake_resolverÚtrace_basic_infoÚresolver   r   Úcwdr   Úparentr   r   Úvaluesr   ÚdumpsÚto_dictÚsysÚstdoutÚwriteÚ
write_textr
   )r1   r7   r8   r9   r@   r?   Ú	directoryÚreqsrE   rD   ÚresolverÚrequirement_setrJ   Úoutput_file_pathÚpylockÚpylock_tomlr4   r4   r5   Úrun`   sz   ÿ



ýý
ø
ø



þ
ÿ
þzLockCommand.run)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úusager6   r	   r   ÚlistÚstrÚintrl   r4   r4   r4   r5   r      s    
0 r   )ra   Ú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   rm   rL   r   r4   r4   r4   r5   Ú<module>   s     