
    )h5                         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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e      Zy)    N)Values)Path)List)
WheelCache)
cmdoptions)RequirementCommandwith_cleanup)SUCCESS)Pylockis_valid_pylock_file_name)get_build_tracker)check_legacy_setup_py_options)	getLogger)get_pip_version)TempDirectoryc                   @    e Zd ZdZdZd	dZededee	   de
fd       Zy)
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                 H   | j                   j                  t        j                  ddddddd             | j                   j                  t        j                                | j                   j                  t        j
                                | j                   j                  t        j                                | j                   j                  t        j                                | j                   j                  t        j                                | j                   j                  t        j                                | j                   j                  t        j                                | j                   j                  t        j                                | j                   j                  t        j                                | j                   j                  t        j                                | j                   j                  t        j                                | j                   j                  t        j                                | j                   j                  t        j                                 | j                   j                  t        j"                                | j                   j                  t        j$                                | j                   j                  t        j&                                | j                   j                  t        j(                                t        j*                  t        j,                  | j.                        }| j.                  j1                  d|       | j.                  j1                  d| j                          y )	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constraintsno_depspreeditablesrcignore_requires_pythonno_build_isolation
use_pep517no_use_pep517check_build_depsconfig_settings	no_binaryonly_binaryprefer_binaryrequire_hashesprogress_barmake_option_groupindex_groupparserinsert_option_group)self
index_optss     N/var/www/html/venv/lib/python3.12/site-packages/pip/_internal/commands/lock.pyadd_optionszLockCommand.add_options1   sN       "%N
	
 	  !8!8!:;  !7!7!9:  !3!3!56  !12  !4!4!67  !12  !B!B!DE  !>!>!@A  !6!6!89  !9!9!;<  !<!<!>?  !;!;!=>  !5!5!78  !7!7!9:  !9!9!;<  !:!:!<=  !8!8!:;11""KK


 	'':6''4==9    optionsargsc                 x   t         j                  dt                      t         j                  d       | j	                  |      }| j                  |||j                        }| j                  t                     }t        |j                   dd      }| j                  ||||      }t        ||       t        |j                        }|D ]	  }	d|	_         | j!                  |||||d| j"                        }
| j%                  |
|||dd|j                  d	|j&                  
	      }| j)                  |       |j+                  |d      }|j,                  dk(  rt/        j0                         }nBt/        |j,                        }t3        |      st         j                  d|       |j4                  }t7        j8                  |j:                  j=                         |      j?                         }|j,                  dk(  r%t@        jB                  jE                  |       tH        S jG                  |d       tH        S )NzUsing %szspip lock is currently an experimental command. It may be removed/changed in a future release without prior warning.)r:   sessionr&   installT)deletekindglobally_managedF)temp_build_dirr:   build_trackerr=   finderuse_user_site	verbosityzto-satisfy-only)	preparerrD   r:   wheel_cacherE   ignore_installedr&   upgrade_strategyr(   )check_supported_wheels-z!%s is not a valid lock file name.)base_dirzutf-8)encoding)%loggerverboser   warningget_default_session_build_package_finderr&   enter_contextr   r   no_cleanget_requirementsr   r   	cache_dirpermit_editable_wheelsmake_requirement_preparerrF   make_resolverr(   trace_basic_inforesolver   r   cwdr   parentr   from_install_requirementsr    valuesas_tomlsysstdoutwrite
write_textr
   )r5   r:   r;   r=   rD   rC   	directoryreqsrH   reqrG   resolverrequirement_setrM   output_file_pathpylock_tomls                   r7   runzLockCommand.run\   s-   z?#45%	
 **73++#*#A#A , 

 **+<+>?!'''!
	 $$T7FGD%gt4 !2!23
  	.C)-C&	. 11$'nn 2 
 %%#!#*#A#A.)) & 

 	f%"**4*M#%xxzH#G$7$78,-=>7$ (..H66((//1H

') 	 #%JJ[)  ''g'Fr9   )r   N)__name__
__module____qualname____doc__usager8   r	   r   r   strintrm    r9   r7   r   r      sF    0E):V N6 Nc Ns N Nr9   r   ) rb   optparser   pathlibr   typingr   pip._internal.cacher   pip._internal.clir   pip._internal.cli.req_commandr   r	   pip._internal.cli.status_codesr
   pip._internal.models.pylockr   r   ,pip._internal.operations.build.build_trackerr   pip._internal.req.req_installr   pip._internal.utils.loggingr   pip._internal.utils.miscr   pip._internal.utils.temp_dirr   rn   rO   r   ru   r9   r7   <module>r      sT    
    * ( 3 I J 2 7	8	P$ Pr9   