
    c&                     (   d Z ddlmZmZ ddlZddl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
Zd Zd Zd Zd)dZd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd  Z(d! Z)d" Z*d# Z+d$ Z,d% Z-d& Z.d' Z/dS )*z-Commands related to the environments section.    )absolute_importprint_functionN)execv)joinexists)load_project)project_ops)console_utils)	conda_apic                     | r't          | j                   |t          |           dS t          j        |            dS )Nr      )printstatus_descriptionr
   print_status_errors)statussuccess_messages     Rlib/python3.11/site-packages/anaconda_project/internal/cli/environment_commands.py_handle_statusr      sL     f'((( 	#/"""q)&111q    c                     t          |           }t          j        ||||          }t          |d                    |                    S )zHAdd an environment with packages from specified channels to the project.)namepackageschannelsz)Added environment {} to the project file.)r   r	   add_env_specr   format)project_dirr   r   r   projectr   s         r   r   r   !   sI    ;''G%gD8V^___F&"M"T"TUY"Z"Z[[[r   c                     t          |           }t          j        ||          }t          |d                    |                    S )z5Remove an environment with packages from the project.)r   z-Removed environment {} from the project file.)r   r	   remove_env_specr   r   )r   r   r   r   s       r   r   r   (   sD    ;''G(t<<<F&"Q"X"XY]"^"^___r   c                 l    t          |           }t          j        |||          }t          |          S )zSave an environment.yml file.)r   filename)r   r	   export_env_specr   )r   r   r!   r   r   s        r   r"   r"   /   s4    ;''G(thOOOF&!!!r   Fc                     t          |           } t          j        | ||||          }d                    |          }|d|z  }n	d|d|d}t	          ||          S )zAdd packages to the project.)env_spec_namer   r   pip, Nz#Added packages to project file: %s.zAdded packages to environment  in project file: .)r   r	   add_packagesr   r   )r   environmentr   r   r%   r   package_listr   s           r   r)   r)   6   s    7##G%g[S[fntwxxxF99X&&L p?<Pp VaU`U`bnbnbno&/222r   c                     t          |           } t          j        | |||          }d                    |          }|d|z  }n	d|d|d}t	          ||          S )z!Remove packages from the project.)r$   r   r%   r&   Nz'Removed packages from project file: %s.z"Removed packages from environment r'   r(   )r   r	   remove_packagesr   r   )r   r*   r   r%   r   r+   r   s          r   r-   r-   B   s    7##G(V^dghhhF99X&&L tC|Tt ZeYdYdfrfrfrs&/222r   c                     t          |           } t          j        | ||          }d                    |          }|d|z  }n	d|d|d}t	          ||          S )zAdd platforms to the project.r$   	platformsr&   Nz$Added platforms to project file: %s.zAdded platforms to environment r'   r(   )r   r	   add_platformsr   r   r   r*   r0   r   r+   r   s         r   r1   r1   N   s~    7##G&wkU^___F99Y''L q@LQq WbVaVacococop&/222r   c                     t          |           } t          j        | ||          }d                    |          }|d|z  }n	d|d|d}t	          ||          S )z"Remove platforms from the project.r/   r&   Nz(Removed platforms from project file: %s.z#Removed platforms from environment r'   r(   )r   r	   remove_platformsr   r   r2   s         r   r4   r4   Z   s~    7##G)'XabbbF99Y''L uDUu [fZeZegsgsgst&/222r   c                     t          |           }t          j        |          rdS t          d                    |                      t          j        |j                                                   dS )z!List environments in the project.r   zEnvironments for project: {}
r   )r   r
   print_project_problemsr   r   print_names_and_descriptions	env_specsvalues)r   r   s     r   list_env_specsr:   f   si    ;''G+G44 q	
*
1
1+
>
>???.w/@/G/G/I/IJJJ1r   c                 ~   t          |           }t          j        |          rdS ||j        }|j                            |d          }|0t          d                    |          t          j	                   dS t          d                    |j
                             t          d                    t          |j                            d           |j        r]t          d	                    |j
                             t          d                    t          |j                            d           d
S )z4List the packages for an environment in the project.r   N/Project doesn't have an environment called '{}'filez%Conda packages for environment '{}':



endz#Pip packages for environment '{}':
r   )r   r
   r6   default_env_spec_namer8   getr   r   sysstderrr   r   sortedconda_packagespip_packagesr   r*   r   envs       r   list_packagesrL   p   s$   ;''G+G44 q 43



T
2
2C
 ?FF{SSZ]Zdeeeeq	
2
9
9#(
C
CDDD	$))F3-..
/
/V<<<<
 ?4;;CHEEFFFdiis/0011v>>>>1r   c                    t          |           }t          j        |          rdS ||j        }|j                            |d          }|0t          d                    |          t          j	                   dS t          d                    |j
                             t          d                    t          |j                            d           d	S )
z5List the platforms for an environment in the project.r   Nr<   r=   z Platforms for environment '{}':
r?   r@   rA   r   )r   r
   r6   rC   r8   rD   r   r   rE   rF   r   r   rG   r0   rJ   s       r   list_platformsrN      s    ;''G+G44 q 43



T
2
2C
 ?FF{SSZ]Zdeeeeq	
-
4
4SX
>
>???	$))F3=))
*
*77771r   c                     t          |           }t          j        |          rdS t          j        ||          }t          |          S )zLock dependency versions.r   r$   )r   r
   r6   r	   lockr   r   r$   r   r   s       r   rQ   rQ      sJ    ;''G+G44 qg]CCCF&!!!r   c                     t          |           }t          j        |          rdS t          j        ||          }t          |          S )zUpdate dependency versions.r   rP   )r   r
   r6   r	   updater   rR   s       r   rT   rT      J    ;''G+G44 q}EEEF&!!!r   c                     t          |           }t          j        |          rdS t          j        ||          }t          |          S )zUnlock dependency versions.r   rP   )r   r
   r6   r	   unlockr   rR   s       r   rW   rW      rU   r   c                 N    t          | j        | j        | j        | j                  S )z>Start the add-environment command and return exit status code.)r   	directoryr   r   channelargss    r   main_addr]      s    	4=$,OOOr   c                 6    t          | j        | j                  S )zAStart the remove-environment command and return exit status code.)r   rY   r   r[   s    r   main_remover_      s    4>49555r   c                 B    t          | j        | j        | j                  S )z>Start the export env spec command and return exit status code.)r"   rY   r   r!   r[   s    r   main_exportra      s    4>49dmDDDr   c                 Z    t          | j        | j        | j        | j        | j                  S )z;Start the add-packages command and return exit status code.)r)   rY   env_specr   rZ   r%   r[   s    r   main_add_packagesrd      s$    t}dlTXT\]]]r   c                 N    t          | j        | j        | j        | j                  S )z>Start the remove-packages command and return exit status code.)r-   rY   rc   r   r%   r[   s    r   main_remove_packagesrf      s    4>4=$-RRRr   c                 B    t          | j        | j        | j                  S )z<Start the add-platforms command and return exit status code.)r1   rY   rc   r0   r[   s    r   main_add_platformsrh      s    GGGr   c                 B    t          | j        | j        | j                  S )z?Start the remove-platforms command and return exit status code.)r4   rY   rc   r0   r[   s    r   main_remove_platformsrj      s    DNDM4>JJJr   c                 *    t          | j                  S )z@Start the list environments command and return exit status code.)r:   rY   r[   s    r   main_list_env_specsrl      s    $.)))r   c                 6    t          | j        | j                  S )z<Start the list packages command and return exit status code.)rL   rY   rc   r[   s    r   main_list_packagesrn      s    777r   c                 6    t          | j        | j                  S )z=Start the list platforms command and return exit status code.)rN   rY   rc   r[   s    r   main_list_platformsrp      s    $.$-888r   c                 6    t          | j        | j                  S )z5Lock dependency versions and return exit status code.)rQ   rY   r   r[   s    r   	main_lockrr      s    	***r   c                 6    t          | j        | j                  S )z7Update dependency versions and return exit status code.)rT   rY   r   r[   s    r   main_updatert          $.$),,,r   c                 6    t          | j        | j                  S )z7Unlock dependency versions and return exit status code.)rW   rY   r   r[   s    r   main_unlockrw      ru   r   c                     t          | j                  sL| j        d         }t          |j        |j        z             }t          j        | j        ||j                   dS dS )zoCreate a project bootstrap env, if it doesn't exist.

    Input:
        project(project.Project): project
    zbootstrap-env)prefixpkgsr   N)	r   bootstrap_env_prefixr8   listrH   rI   r   creater   )r   rc   command_line_packagess      r   create_bootstrap_envr      sp     '.// v$_5 $X%<x?T%T U U <CXckctuuuuuuv vr   c                     t          j                    dk    rd}nd}t          | j        |d          }t	          |t
          j                   dS )znRun the current command in a project bootstrap env.

    Input:
        project(project.Project): project
    WindowsScriptsbinzanaconda-projectN)platformsystemr   r{   r   rE   argv)r   
script_diranaconda_project_execs      r   run_on_bootstrap_envr      sT     I% 


 !=zK]^^	
*****r   )N)F)0__doc__
__future__r   r   rE   r   osr   os.pathr   r   *anaconda_project.internal.cli.project_loadr   anaconda_projectr	   anaconda_project.internal.clir
   anaconda_project.internalr   r   r   r   r"   r)   r-   r1   r4   r:   rL   rN   rQ   rT   rW   r]   r_   ra   rd   rf   rh   rj   rl   rn   rp   rr   rt   rw   r   r    r   r   <module>r      s   4 3 6 6 6 6 6 6 6 6 



                        C C C C C C ( ( ( ( ( ( 7 7 7 7 7 7 / / / / / /   \ \ \` ` `" " "	3 	3 	3 	3	3 	3 	3	3 	3 	3	3 	3 	3    *   " " "" " "" " "P P P
6 6 6
E E E
^ ^ ^
S S S
H H H
K K K
* * *
8 8 8
9 9 9
+ + +
- - -
- - -
	v 	v 	v+ + + + +r   