
    wBf                        d Z ddlmZ ddlZddlZddlmZmZmZ ddl	m
Z
 e
r
ddlmZmZmZ  ej                  e      ZddZd Zdd	Zdd
Zy)zCLI implementation for `conda compare`.

Compare the packages in an environment with the packages listed in an environment file.
    )annotationsN)abspath
expanduser
expandvars)TYPE_CHECKING)ArgumentParser	Namespace_SubParsersActionc                    ddl m} ddlm}m} d}|} |d      } | j
                  	 d|||d|} ||        ||       |j                  dd	d
       |j                  d       |S )N   )dals   )add_parser_jsonadd_parser_prefixz,Compare packages between conda environments.a  
        Examples:

        Compare packages in the current environment with respect
        to 'environment.yml' located in the current working directory::

            conda compare environment.yml

        Compare packages installed into the environment 'myenv' with respect
        to 'environment.yml' in a different directory::

            conda compare -n myenv path/to/file/environment.yml

        )helpdescriptionepilogfilestorez<Path to the environment file that is to be compared against.)actionr   zconda.cli.main_compare.execute)func)compare)
auxlib.ishr   helpersr   r   
add_parseradd_argumentset_defaults)	sub_parserskwargsr   r   r   summaryr   r   ps	            6lib/python3.12/site-packages/conda/cli/main_compare.pyconfigure_parserr#      s    !;<GK	F" 				
 	A AaNNK  
 NN8N9H    c                    ddl m} ddlm} t        j
                  j                  |       s ||       t         || d      j                         d       S )Nr   )
PrefixData)EnvironmentLocationNotFoundT)pip_interop_enabledc                    | j                   S )N)name)xs    r"   <lambda>zget_packages.<locals>.<lambda>H   s
    aff r$   )key)	core.prefix_datar&   
exceptionsr'   ospathisdirsortediter_records)prefixr&   r'   s      r"   get_packagesr6   ?   sF    -877== )&116t4AAC r$   c                n   ddl m} g }d}|D ]  } ||      }|j                  x}| v rW|j                  | |   x}      r2d}|j	                  | d| d|j                   d|j
                   d|j                   	       rd}|j	                  | d	        |s|j	                  d
       t        |      |fS )Nr   )	MatchSpecFTz( found but mismatch. Specification pkg: z, Running pkg: z===z
 not foundzzSuccess. All the packages in the specification file are present in the environment with matching version and build string.)models.match_specr8   r*   matchappendversionbuildint)	active_pkgsspecification_pkgsr8   outputmisspkgpkg_specr*   
active_pkgs	            r"   compare_packagesrG   L   s    -FD! /S>MM!Dk1>>D0A"A*BfDSE J$$.OO#4Bz7I7I6J!JL\L\K]_
 DMMTF*-./ 6	

 t9fr$   c                   ddl m} ddlm} ddlm}m} ddlm} ddl	m
} ddlm} |j                  }	 ||	      s ||	      	 | j                  j                  d	d      d
   }
|
|v r| j                  }n't!        t#        t%        | j                                    }|j'                  | j(                  |t+        j,                               }|j.                  }| j0                  | j(                  |j(                  | _        t3        |	      D ci c]  }|j(                  | }}g }d|j4                  v r||j4                  d   z   }d|j4                  v r||j4                  d   z   }t7        ||      \  }}|j8                  r
 ||       |S t;        dj=                  t?        t@        |                   |S # |$ r  w xY wc c}w )Nr   )context)specs)r'   SpecNotFound)CONDA_SESSION_SCHEMES)is_conda_environmentr   )stdout_jsonz://r   )r*   filename	directorycondapip
)!base.contextrI   envrJ   r/   r'   rK   gateways.connection.sessionrL   gateways.disk.testrM   commonrN   target_prefixr   splitr   r   r   detectr*   r0   getcwdenvironmentr5   r6   dependenciesrG   jsonprintjoinmapstr)argsparserrI   rJ   r'   rK   rL   rM   rN   r5   
url_schemerO   specrU   rD   r@   rA   exitcoderB   s                      r"   executeri   f   s   &FC9#""F')&11YY__UA.q1
..yyHz*TYY*?@AH||X|U;;499#4DI -9,@AS388S=AKA#"""/#2B2B72KK   /#2B2B52II'5GHHf||F O 	diiC()*O#   Bs   B<F4 F>4F;)r   r
   returnr   )rj   ztuple[int, list[str]])rd   r	   re   r   rj   r?   )__doc__
__future__r   loggingr0   os.pathr   r   r   typingr   argparser   r	   r
   	getLogger__name__logr#   r6   rG   ri    r$   r"   <module>ru      sN   
 #  	 3 3  EEg!'T
4)r$   