
    Kui                         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e      Zy)    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                   @    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                    | 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"                                t        j$                  t        j&                  | j(                        }t        j$                  t        j*                  | j(                        }| j(                  j-                  d|       | j(                  j-                  d|       | j(                  j-                  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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_optss      e/root/.openclaw/workspace/chatterbox_venv/lib/python3.12/site-packages/pip/_internal/commands/lock.pyadd_optionszLockCommand.add_options0   s5       "%N
	
 	  !8!8!:;  !E!E!GH  !7!7!9:  !=!=!?@  !3!3!56  !4!4!67  !12  !B!B!DE  !>!>!@A  !6!6!89  !<!<!>?  !;!;!=>  !:!:!<=  !8!8!:;11""KK


 $55..KK

 	'':6''>:''4==9    optionsargsc           
         t         j                  dt                      t         j                  d       t	        j
                  |       t	        j                  |       | j                  |      }| j                  |||j                        }| j                  t                     }t        |j                   dd      }| j                  ||||      }t        |j                         }|D ]	  }	d|	_         | j%                  |||||d| j&                        }
| j)                  |
|||dd|j                  d	
      }| j+                  |       |j-                  |d      }|j.                  dk(  rt1        j2                         }nBt1        |j.                        }t5        |      st         j                  d|       |j6                  }t9        |j:                  j=                         |      }t?        j@                  |jC                               }|j.                  dk(  r%tD        jF                  jI                  |       tL        S jK                  |d       tL        S )NzUsing %szspip lock is currently an experimental command. It may be removed/changed in a future release without prior warning.)r8   sessionr&   installT)deletekindglobally_managedF)temp_build_dirr8   build_trackerr;   finderuse_user_site	verbosityzto-satisfy-only)preparerrB   r8   wheel_cacherC   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_preparerrD   make_resolvertrace_basic_inforesolver   r   cwdr   parentr   r   valuesr   dumpsto_dictsysstdoutwrite
write_textr   )r2   r8   r9   r;   rB   rA   	directoryreqsrF   reqrE   resolverrequirement_setrK   output_file_pathpylockpylock_tomls                    r5   runzLockCommand.run^   s;   z?#45%	
 	**73227;**73++#*#A#A , 

 **+<+>?!'''!
	 $$T7FGD !2!23
  	.C)-C&	. 11$'nn 2 
 %%#!#*#A#A. & 	
 	f%"**4*M#%xxzH#G$7$78'(897$ (..H1((//1H
 mmFNN$45#%JJ[)  ''g'Fr7   )r   N)__name__
__module____qualname____doc__usager6   r
   r   liststrintrn    r7   r5   r   r      sF    0E,:\ P6 Pc Ps P Pr7   r   )rb   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   ro   rM   r   rw   r7   r5   <module>r      sQ    
    = * ( 3 J 1 H 6	8	U$ Ur7   