
    .Ph                         d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ  G d de	          Z G d	 d
e          Zdee         defdZdedefdZ G d d          Zg dZdS )    )defaultdict)ClassVarDictListOptionalSet)	BaseLockedDependencyDependencySourceGitMeta	HashModel	InputMetaLockKeyLockMetaMetadataOptionTimeMeta)LockedDependency)Lockfile)StrictModelc                   R    e Zd ZU  e            Zee         ed<   dee	         fdZ
dS )r   
categoriesreturnc                 H      fdt           j                  D             }|S )al  Convert a v2 dependency into a list of v1 dependencies.

        In case a v2 dependency might contain multiple categories, but a v1 dependency
        can only contain a single category, we represent multiple categories as a list
        of v1 dependencies that are identical except for the `category` field. The
        `category` field runs over all categories.c                     g | ]M}t          j        j        j        j        j        j        j        |j        j	        |d k              NS )main)nameversionmanagerplatformdependenciesurlhashcategorysourcebuildoptional)
LockedDependencyV1r   r   r   r   r   r    r!   r#   r$   ).0r"   selfs     c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/conda_lock/lockfile/v2prelim/models.py
<listcomp>z*LockedDependency.to_v1.<locals>.<listcomp>   ss     (
 (
 (
  Y!.HY!{j!V+  (
 (
 (
    )sortedr   )r(   package_entries_per_categorys   ` r)   to_v1zLockedDependency.to_v1   s@    (
 (
 (
 (
 #4?33(
 (
 (
$  ,+r+   N)__name__
__module____qualname__setr   r   str__annotations__r   r&   r.    r+   r)   r   r      sQ         355JC   ,t./ , , , , , ,r+   r   c                       e Zd ZU dZee         ed<   ee         ed<   e	ed<   ddZ
dd
ZddZddZedee         dee         fd            ZdefdZd	S )r      r   packagemetadataotherOptional[Lockfile]r   c                    || S t          |t                    st          | j        j        |j        j        k    r*t          d| j        j         d|j        j         d          d | j        D             }d |j        D             }g }t          t          |	                                          
                    |	                                                    D ]Q}||vs|d         | j        j        vr|                    ||                    6|                    ||                    R|                     |          }t          || j        |j        z            S )	z'
        merge self into other
        NzGCannot merge locked dependencies when the channels are not consistent. z != zr. If the channels are indeed different, then you may need to delete the existing lockfile and relock from scratch.c                 8    i | ]}|                                 |S r5   keyr'   ds     r)   
<dictcomp>z"Lockfile.merge.<locals>.<dictcomp>H   s"    111q111r+   c                 8    i | ]}|                                 |S r5   r>   r@   s     r)   rB   z"Lockfile.merge.<locals>.<dictcomp>I   s"    444!%%''1444r+   r8   r9   )
isinstancer   	TypeErrorr9   channels
ValueErrorr8   r,   r2   keysunion	platformsappend	_toposort)r(   r:   ourstheirsr8   r?   final_packages          r)   mergezLockfile.merge7   sm    =KE8,, 	O=!U^%<<<B#}5B B;@>;RB B B   21DL11144em444 +-#diikk**00??@@ 	* 	*C$#b'1H"H"Hvc{++++tCy)))) w//8VWWWWr+   Nc                 D    |                      | j                  | _        d S N)rN   r8   r(   s    r)   toposort_inplacezLockfile.toposort_inplaceW   s    ~~dl33r+   c                     | j                             d            | j         D ]7}d t          |j                                                  D             |_        8d S )Nc                 *    |                                  S rT   r>   )rA   s    r)   <lambda>z,Lockfile.alphasort_inplace.<locals>.<lambda>\   s     r+   r>   c                     i | ]\  }}||	S r5   r5   )r'   r   specs      r)   rB   z.Lockfile.alphasort_inplace.<locals>.<dictcomp>`   s+       )tTd  r+   )r8   sortr,   r   items)r(   ps     r)   alphasort_inplacezLockfile.alphasort_inplaceZ   sr    //000 	 	A -3AN4H4H4J4J-K-K  ANN	 	r+   c                 2    d | j         D             | _         d S )Nc                 \    g | ])}|j         d k    r|j                            d          '|*S )conda__)r   r   
startswith)r'   r^   s     r)   r*   z<Lockfile.filter_virtual_packages_inplace.<locals>.<listcomp>e   sD     
 
 
I((QV->->t-D-D( (((r+   )r8   rU   s    r)   filter_virtual_packages_inplacez(Lockfile.filter_virtual_packages_inplaced   s(    
 
\
 
 
r+   c                    d | D             }g }t          |          D ]}ddlm} dD ]}t          t                    }i }| D ]@}|j        |k    r|j        |k    rt	          |j                  ||j        <   |||j        <   A ||          }	|	D ];}
|	                    |
          }||j        |k    r&|
                    |           <|S )Nc                     h | ]	}|j         
S r5   )r   r@   s     r)   	<setcomp>z%Lockfile._toposort.<locals>.<setcomp>m   s    111AQZ111r+   r   )toposort)rb   pip)r,   $conda_lock.interfaces.vendored_condari   r   r2   r   r   r   r   getrM   )r8   rL   rQ   r   ri   r   lookuppackagesrA   orderedpackage_namedeps               r)   rN   zLockfile._toposortk   s-   11111	 13y)) 	. 	.HEEEEEE
 , . .$S))8:  ) )AzX-- yG++ %(%8%8F16N'(HQV$$"(6**$+ . .L #,,|44C{ {g-- !((----..2 r+   c                 P    d | j         D             }t          || j                  S )Nc                 @    g | ]}|                                 D ]}|S r5   )r.   )r'   r^   package_entry_per_categorys      r)   r*   z"Lockfile.to_v1.<locals>.<listcomp>   sG     
 
 
./ggii
 
 + '
 
 
 
r+   rE   )r8   
LockfileV1r9   )r(   v1_packagess     r)   r.   zLockfile.to_v1   sC    
 
\
 
 

 ]
 
 
 	
r+   )r:   r;   r   r   )r   N)r/   r0   r1   r   r   intr4   r   r   r   rR   rV   r_   re   staticmethodrN   ru   r.   r5   r+   r)   r   r   1   s         GXc]"####X X X X@4 4 4 4   
 
 
 
 $4 01 $d;K6L $ $ $ \$L
z 
 
 
 
 
 
r+   r   r-   r   c                     t                     dk    sJ t           fd D                       sJ d  D             }t          |          t                     k    sJ t           d         j         d         j         d         j         d         j         d         j         d         j         d         j	        | d         j
         d         j        
  
        S )zeConvert a LockedDependency from v1 to v2.

    This is an inverse to `LockedDependency.to_v1()`.
    r   c              3   x   K   | ]4}|                                 d                                           k    V  5dS )r   Nr>   )r'   rA   r-   s     r)   	<genexpr>z._locked_dependency_v1_to_v2.<locals>.<genexpr>   sV         	
/266888     r+   c                     h | ]	}|j         
S r5   )r"   r@   s     r)   rh   z._locked_dependency_v1_to_v2.<locals>.<setcomp>   s    CCC!*CCCr+   )
r   r   r   r   r   r    r!   r   r#   r$   )lenallr   r   r   r   r   r   r    r!   r#   r$   )r-   r   s   ` r)   _locked_dependency_v1_to_v2r      s    +,,q0000    -       
 DC&BCCCJ z??c">??????)!,1,Q/7,Q/7-a091!4A(+/)!,1+A.5*1-3   r+   lockfile_v1c                     t          t                    }| j        D ]/}||                                                             |           0d |                                D             }t          || j                  S )zConvert a Lockfile from v1 to v2.

    Entries may share the same key if they represent a dependency
    belonging to multiple categories. They must be collected here.
    c                 ,    g | ]}t          |          S r5   )r   )r'   r-   s     r)   r*   z%lockfile_v1_to_v2.<locals>.<listcomp>   s1       ( 	$$@AA  r+   rE   )r   listr8   r?   rM   valuesr   r9   )r   dependencies_for_keyrq   v2_packagess       r)   lockfile_v1_to_v2r      s     EPPTDUDU" 4 4SWWYY'..s3333 ,@,G,G,I,I  K
 %   r+   c                   T    e Zd Z	 	 ddeee                  deee                  fdZdS )UpdateSpecificationNlockedupdatec                 *    |pg | _         |pg | _        d S rT   )r   r   )r(   r   r   s      r)   __init__zUpdateSpecification.__init__   s    
 llr+   )NN)r/   r0   r1   r   r   r   r3   r   r5   r+   r)   r   r      s[         48&*# #./0# c## # # # # #r+   r   )r
   r   r   r   r   r   r   r   r   r   r   N)collectionsr   typingr   r   r   r   r   conda_lock.lockfile.v1.modelsr	   r
   r   r   r   r   r   r   r   r   r&   r   ru   conda_lock.modelsr   r   r   r   __all__r5   r+   r)   <module>r      s   # # # # # # 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Q P P P P P @ @ @ @ @ @ ) ) ) ) ) ), , , , ,+ , , ,:l
 l
 l
 l
 l
{ l
 l
 l
^ "&'9":        F: (    *# # # # # # # #  r+   