+
    ڀi2                    Z  a  0 t $ ^ RIHt ^ RIHt ^ RIHtHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHt ^ R	IHtHt ^ R
IHt ^ RIHtHtHtHt ^ RIHt ^ RIHt ^RI H!t!H"t" ^RI#H#t# ^RI$H$t$ ^RI%H%t% ]'       d   ^ RI&H't' ^ RIH(t(H)t)H*t*H+t+ ^ RI,H-t- ^ RI.H/t/ Rt0R]1R&   R5t2R]1R&   Rt3R]1R&   ]33t4R]1R&   RR/t5R]1R&    ! R R ]4      t6 ! R! R"]4      t7 ! R# R$]74      t8 ! R% R&]4      t9 ! R' R(]4      t:R) R* lt;R+ R, lt<R-]	Pz                  3R. R/ llt>R0 R1 lt? ! R2 R3]4      t@R4# )6    )annotations)Path)TYPE_CHECKING	Annotated)context)dashlist)yaml_safe_dump)CondaValueError)Channel)EnvironmentEnvironmentConfig)EnvironmentSpecBase)	BaseModelFieldValidationErrorfield_validator)	YAMLError)ParserError)CondaLockfilesParserErrorCondaLockfilesValidationError)	load_yaml)records_from_conda_urls)validate_urls)Iterable)AnyClassVarFinalLiteral)PathType)PackageRecordzrattler-lock-v6r   FORMATALIASESz	pixi.lockPIXI_LOCK_FILEDEFAULT_FILENAMESpypiPACKAGE_TYPE_MAPPINGc                  &    ] tR t^6t$ RtR]R&   RtR# )RattlerLockV6Channelz/A channel specification in a rattler lock file.strurl N__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r+       ?lib/python3.14/site-packages/conda_lockfiles/rattler_lock/v6.pyr(   r(   6   s
    9	Hr4   r(   c                      ] tR t^<t$ RtRtR]R&   RtR]R&   ]! RR4      ]	R 4       4       t
]R R l4       t]R	 R
 l4       tRtR# )RattlerLockV6PackageReferencez:A reference to a package in an environment (just the URL).N
str | Nonecondar%   c                Z   V'       gN   VP                   P                  R4      '       g-   VP                   P                  R4      '       g   \        R4      hV'       dN   VP                   P                  R4      '       d-   VP                   P                  R4      '       d   \        R4      hV# )z1Ensure at least one package manager is specified.r9   r%   *Either 'conda' or 'pypi' must be specifiedz4Either 'conda' or 'pypi' must be specified, not both)dataget
ValueError)clsvalueinfos   &&&r5   check_at_least_one0RattlerLockV6PackageReference.check_at_least_oneB   so     TYY]]733DIIMM&<Q<QIJJTYY]]7++		f0E0ESTTr4   c                   V ^8  d   QhRR/# )   returnzLiteral['conda', 'pypi']r+   )formats   "r5   __annotate__*RattlerLockV6PackageReference.__annotate__P   s     K K6 Kr4   c                	h    V P                   '       d   R # V P                  '       d   R# \        R4      h)r9   r%   r;   r9   r%   r>   selfs   &r5   package_type*RattlerLockV6PackageReference.package_typeO   s&    :::YYYIJJr4   c                   V ^8  d   QhRR/# )rE   rF   r)   r+   )rG   s   "r5   rH   rI   Z   s     K KS Kr4   c                	    V P                   '       d   V P                   # V P                  '       d   V P                  # \        R 4      h)r;   rK   rL   s   &r5   r*   !RattlerLockV6PackageReference.urlY   s4    :::::YYY99IJJr4   r+   )r-   r.   r/   r0   r1   r9   r2   r%   r   classmethodrB   propertyrN   r*   r3   r+   r4   r5   r7   r7   <   sf    DE:D*Wf%  & K K K Kr4   r7   c                      ] tR t^ct$ RtRtR]R&   RtR]R&   RtR]R&   Rt	R]R&   Rt
R]R	&   RtR]R
&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   RtR# )RattlerLockV6Packagez;Full package definition with metadata in the packages list.Nr8   sha256md5licenselicense_familyz
int | Nonesize	timestampzlist[str] | Nonedepends
constrainsfeaturestrack_featurespython_site_packages_pathr+   )r-   r.   r/   r0   r1   rW   r2   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   r3   r+   r4   r5   rV   rV   c   sy    E FJCGZ!%NJ%D* Iz  $G$#'J 'Hj'+N$+,0z0r4   rV   c                  0    ] tR t^tt$ RtR]R&   R]R&   RtR# )RattlerLockV6Environmentz4An environment specification in a rattler lock file.zlist[RattlerLockV6Channel]channelszAnnotated[dict[str, list[RattlerLockV6PackageReference]], Field(description='Mapping of platforms to package references (package URLs)')]packagesr+   Nr,   r+   r4   r5   rc   rc   t   s    >(( r4   rc   c                  d    ] tR t^~t$ Rt^tR]R&   R]R&   R]R&   ]! R4      ]R 4       4       t	R	t
R
# )RattlerLockV6z-The root structure of a rattler lock v6 file.zTAnnotated[int, Field(le=6, ge=6, description='Lock file format version, must be 6')]versionzAnnotated[dict[str, RattlerLockV6Environment], Field(description='Mapping of environment names to environment specifications')]environmentszhAnnotated[list[RattlerLockV6Package], Field(description='Complete list of packages with full metadata')]re   c                *    RV9  d   \        R4      hV# )z"Ensure default environment exists.defaultz.Lock file must contain a 'default' environment)r>   )r?   r@   s   &&r5   check_default_envRattlerLockV6.check_default_env   s     E!MNNr4   r+   N)r-   r.   r/   r0   r1   rh   r2   r   rS   rl   r3   r+   r4   r5   rg   rg   ~   sN    7
 	
   
  
 ^$  %r4   rg   c                    V ^8  d   QhRRRR/# )rE   recordr    rF   rV   r+   )rG   s   "r5   rH   rH      s     "* "*} "*1E "*r4   c                    RV P                   /p. ROpV F#  pV P                  VR4      ;p'       g   K  WAV&   K%  	  \        R/ VB # )z
Convert a conda PackageRecord to a RattlerLockV6Package Pydantic model.

:param record: Conda package record
:return: RattlerLockV6Package with metadata
r9   N)
rW   rX   r]   r^   r_   r`   rY   rZ   r[   ra   r+   )r*   r=   rV   )ro   kwargsfieldsfieldr<   s   &    r5   _record_to_packagert      sU     vzz"FF$ ::eT**4** 5M   )&))r4   c                    V ^8  d   QhRRRR/# )rE   envsIterable[Environment]rF   rg   r+   )rG   s   "r5   rH   rH      s     5 5*? 5M 5r4   c                   \        V 4      pV F  p\        V\        4       K  	  . p\        R V 4       4       Uu/ uF  qD. bK  	  pp\	        4       p\        R V 4       R R7       Fx  w  rtWT,          P                  \        VP                  R7      4       VP                  V9   d   KC  VP                  \        V4      4       VP                  VP                  4       Kz  	  V^ ,          pVP                  P                   Uu. uF  p\        VR7      NK  	  p	p\        WR7      p
\        ^RV
/VR	7      # u upi u upi )
z
Create a RattlerLockV6 lockfile from conda Environment objects.

:param envs: Iterable of conda Environment objects
    (typically multiple platforms)
:return: RattlerLockV6 Pydantic model instance
c              3  8   "   T F  qP                   x  K  	  R # 5iNplatform).0envs   & r5   	<genexpr>2rattler_lock_v6_from_conda_envs.<locals>.<genexpr>   s     +MHSLLHs   c              3  `   "   T F$  qP                    F  q"VP                  3x  K  	  K&  	  R # 5irz   )explicit_packagesr|   )r}   r~   pkgs   &  r5   r   r      s%     R<Q<QSs||	<Q	   ,.c                :    V ^ ,          P                   V ^,          3# )r   )name)pkg_platforms   &r5   <lambda>1rattler_lock_v6_from_conda_envs.<locals>.<lambda>   s    ,q/"6"6Q!Hr4   )key)r9   r*   )rd   re   rk   )rh   ri   re   )listr   r!   sortedsetappendr7   r*   rt   addconfigrd   r(   rc   rg   )rv   env_listr~   re   r|   	platformsseenr   channelrd   default_envs   &          r5   rattler_lock_v6_from_conda_envsr      s1    DzH c6"  ,.H%++MH+M%MA%M"%M  A 5DRRH 	""#@sww#OP 77d?*3/0  1+CADATATUATg$1ATHU +HQK - AA4 Vs   D7D<rk   c               (    V ^8  d   QhRRRRRRRR/# )rE   lockfilerg   r   r)   r|   rF   r   r+   )rG   s   "r5   rH   rH      s0     2 22
2 2 	2r4   c           
     V  a	 V P                   P                  VR4      ;p'       g.   \        RV R\        \	        V P                   4      4       24      hVP
                  p\        \        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      R7      p/ p/ pVP                  P                  VR
4       F  o	S	P                  '       d=   \        V	3R lV P                   4       4      P                  4       VS	P                  &   KQ   \        S	P                  ,          pTP!                  T. 4      P#                  S	P                  4       K  	  \%        \&        P(                  VV\+        V\&        P,                  R7      VR	7      #   \         d    \        RS	P                   24      hi ; i)z
Render lockfile as a conda environment

:param lockfile: RattlerLockV6 lockfile model
:param name: Environment name to extract
:param platform: Platform to extract packages for
:return: Conda Environment object
NzEnvironment 'z%' not found.
Available environments: c              3  `   "   T F$  p\        VP                  4      P                  x  K&  	  R # 5irz   )r   r*   canonical_name)r}   r   s   & r5   r   /rattler_lock_v6_to_conda_env.<locals>.<genexpr>
  s     S(www{{+::(r   )rd   c              3  `   <"   T F#  qP                   SP                   8X  g   K  Vx  K%  	  R # 5irz   r   )r}   r   refs   & r5   r   r     s$      .0GGsww4F0s   .
.zUnknown package type: )dry_run)prefixr|   r   r   external_packagesr+   )ri   r=   r>   r   r   rd   r   tuplere   r9   next
model_dumpr*   r&   rN   KeyError
setdefaultr   r   r   target_prefixr   r   )
r   r   r|   environmentrd   r   r   r   r   r   s
   &&&      @r5   rattler_lock_v6_to_conda_envr      s    $0044T4@@K@D6 "''/x7L7L0M'N&OQ
 	

 ##HS(SS(SSF
 46.0##''"5999)- .'00. *jl cgg&
N*3+;+;< ((b188A 6 $$1w
 , 	  N #9#:J:J9K!LMMNs   F$F(c                    V ^8  d   QhRRRR/# )rE   rv   rw   rF   r)   r+   )rG   s   "r5   rH   rH   )  s      4  r4   c                    \        V 4      p \        VP                  RRR7      4      #   \         d   p\	        RT 24      ThRp?ii ; i)z*Export Environment to rattler lock format.Tpython)exclude_nonemodez5Failed to export environment to rattler lock format: N)r   r	   r   r   r
   )rv   r   es   &  r5   multiplatform_exportr   )  sc    .t4H
!   
 	
  CA3G
	s   ) AAAc                      ] tR tRt$ RtR]R&   R R ltR R ltR	 R
 lt]	R R l4       t
]	R R l4       t]	R R l4       tR R ltRtR# )RattlerLockV6Loaderi9  TzClassVar[bool]detection_supportedc                   V ^8  d   QhRR/# )rE   pathr   r+   )rG   s   "r5   rH    RattlerLockV6Loader.__annotate__<  s     1 1X 1r4   c                	P    \        V4      P                  4       V n        R V n        R # rz   )r   resolver   _model)rM   r   s   &&r5   __init__RattlerLockV6Loader.__init__<  s    J&&(	,0r4   c                   V ^8  d   QhRR/# rE   rF   boolr+   )rG   s   "r5   rH   r   @  s     	& 	&D 	&r4   c                    V P                   P                  4       '       g   \        RV P                    24      hV P                  4       # )zx
Attempts to validate loaded data as a rattler lock v6 specification.

:raises ValueError: Raised when validation fails
zFile not found: )r   existsr>   _validate_modelrL   s   &r5   
can_handleRattlerLockV6Loader.can_handle@  s=     yy!!/		{;<<##%%r4   c                   V ^8  d   QhRR/# r   r+   )rG   s   "r5   rH   r   K  s     E E Er4   c                     \         P                  V P                  4      V n        R#   \         d   p\        YP                  4      ThRp?ii ; i)zm
Attempt to load model

:returns: indicates successful load
:raises ValueError: raised when validation fails
TN)rg   model_validate_datar   r   r   r   rM   r   s   & r5   r   #RattlerLockV6Loader._validate_modelK  sD    	E'66tzzBDK 	E/99=1D	Es   $( AA		Ac                   V ^8  d   QhRR/# )rE   rF   zdict[str, Any]r+   )rG   s   "r5   rH   r   Y  s     : :~ :r4   c                	~     \        V P                  4      #   \         d   p\        YP                  4      hR p?ii ; irz   )r   r   r   r   r   s   & r5   r   RattlerLockV6Loader._dataX  s5    	:TYY'' 	:+Ayy99	:s    <7<c                   V ^8  d   QhRR/# )rE   rF   r   r+   )rG   s   "r5   rH   r   `  s     S S[ Sr4   c                	     V P                   f   V P                  4        \        V P                   4      #   \         d   p\	        RT 24      ThR p?ii ; i)Nz 

Unable to create environment: )r   r   r   r>   r
   r   s   & r5   r~   RattlerLockV6Loader.env_  sU    	S{{"$$&/<< 	S!$Fqc"JKQRR	Ss   25 A AAc                   V ^8  d   QhRR/# )rE   rF   ztuple[str, ...]r+   )rG   s   "r5   rH   r   i  s     R R_ Rr4   c                    V P                   f   V P                  4        \        \        V P                   P                  R,          P
                  P                  4       4      4      # )z$Platforms declared in this lockfile.rk   )r   r   r   r   ri   re   keysrL   s   &r5   available_platforms'RattlerLockV6Loader.available_platformsh  sH     ;;  "VDKK44Y?HHMMOPQQr4   c                    V ^8  d   QhRRRR/# )rE   r|   r)   rF   r   r+   )rG   s   "r5   rH   r   o  s     L L L Lr4   c                    WP                   9  d,   \        RV: RRP                  V P                   4       24      h\        V P                  VR7      # )z?Return the Environment for a specific platform in the lockfile.z	Platform z' not in lockfile. Available platforms: z, r{   )r   r>   joinr   r   )rM   r|   s   &&r5   env_forRattlerLockV6Loader.env_foro  sU    333H< (((,		$2J2J(K'LN  ,DKK(KKr4   )r   r   N)r-   r.   r/   r0   r   r2   r   r   r   rT   r   r~   r   r   r3   r+   r4   r5   r   r   9  si    *..1	&E : : S S R RL Lr4   r   N)pixizpixi-lock-v6)A__conditional_annotations__
__future__r   pathlibr   typingr   r   conda.base.contextr   conda.common.ior   conda.common.serializer	   conda.exceptionsr
   conda.models.channelr   conda.models.environmentr   r   conda.plugins.typesr   pydanticr   r   r   r   ruamel.yamlr   ruamel.yaml.parserr   
exceptionsr   r   r   r   r   collections.abcr   r   r   r   r   conda.common.pathr   conda.models.recordsr    r!   r2   r"   r#   r$   r&   r(   r7   rV   rc   rg   rt   r   subdirr   r   r   )r   s   @r5   <module>r      s   " "  + & $ 1 , ( C 3 G G ! * Q ! = )(44*2 " ! * ) $ # +, 5 , F e 9 $KI $KN18 1"y I 2"*J5t NN2j =L- =Lr4   