
    c3                         d dl mZmZ d dlZd dlmZmZmZ d dlm	Z	m
Z
mZmZ d dlm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 )    )absolute_importprint_functionN)with_file_contentswith_named_file_contentswith_directory_contents)EnvSpec_load_environment_yml_load_requirements_txt!_find_out_of_sync_importable_spec)CondaLockSetc                  ,    d } t          d|            d S )Nc                     t          |           }|J |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S Nfoobar=1.0bazpippyz
poppy==2.0channel1channel2(e91a2263df510c9b188b132b801ba53aa99cc407r	   nameconda_packagespip_packageschannelslogical_hashfilenamespecs     Clib/python3.11/site-packages/anaconda_project/test/test_env_spec.pycheckz(test_load_environment_yml.<locals>.check       $X..yE!!!!"&88888 $;;;;;} 88888 $NNNNNNN    {
name: foo
dependencies:
  - bar=1.0
  - baz
  - pip:
    - pippy
    - poppy==2.0
channels:
  - channel1
  - channel2
    r   r$   s    r#   test_load_environment_ymlr*      <    	O 	O 	O 	 
    r&   c                  ,    d } t          d|            d S )Nc                     t          |           }|J |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S r   r   r    s     r#   r$   z4test_load_environment_yml_with_prefix.<locals>.check1   r%   r&   z
prefix: /opt/foo
dependencies:
  - bar=1.0
  - baz
  - pip:
    - pippy
    - poppy==2.0
channels:
  - channel1
  - channel2
    r(   r)   s    r#   %test_load_environment_yml_with_prefixr.   0   r+   r&   c                  ,    d } t          d|            d S )Nc                     t          |           }|J |j        t          j                            |           k    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nr   r   r   r   )	r	   r   ospathbasenamer   r   r   r   r    s     r#   r$   z0test_load_environment_yml_no_name.<locals>.checkL   s    $X..yBG,,X666666"&88888 $;;;;;} 88888 $NNNNNNNr&   zq
dependencies:
  - bar=1.0
  - baz
  - pip:
    - pippy
    - poppy==2.0
channels:
  - channel1
  - channel2
    r(   r)   s    r#   !test_load_environment_yml_no_namer4   K   s<    	O 	O 	O 
	 
    r&   c                  ,    d } t          d|            d S )Nc                     t          |           }|J |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S Nr    r	   r   r   r   r   r    s     r#   r$   z=test_load_environment_yml_with_broken_sections.<locals>.checkf   o    $X..yE!!!!"b(((( B&&&&}""""""r&   z-
name: foo
dependencies: 42
channels: 57
    r(   r)   s    r#   .test_load_environment_yml_with_broken_sectionsr;   e   s9    # # #   
	    r&   c                  ,    d } t          d|            d S )Nc                     t          |           }|J |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S r7   r9   r    s     r#   r$   z@test_load_environment_yml_with_broken_pip_section.<locals>.checkw   r:   r&   z5
name: foo
dependencies:
 - pip: 42
channels: 57
    r(   r)   s    r#   1test_load_environment_yml_with_broken_pip_sectionr>   v   s9    # # #  
 
    r&   c                  ,    d } t          d|            d S )Nc                     t          |           }|J |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        t          d          k    sJ |j        dk    sJ d S )Ndefaultr8   )MyAppzFramework==0.9.4zLibrary>=0.2z)svn+http://myrepo/svn/MyThing#egg=MyThing)rB   	FrameworkLibraryMyThing(784ba385d4cd468756e3cbc57f33e97afdc38059)r
   r   r   r   r   pip_package_names_setsetr   r    s     r#   r$   z)test_load_requirements_txt.<locals>.check   s    %h//yI%%%%"b((((}""""  %R R 	R 	R 	R)S1]-^-^^^^^ $NNNNNNNr&   a  
MyApp
# Comment; this is a framework
Framework==0.9.4

  # blank line above this indented comment!
 Library>=0.2
-e svn+http://myrepo/svn/MyThing#egg=MyThing
--index-url http://example.com/private-pypi/
--find-links http://example.com/private-packages/
    r(   r)   s    r#   test_load_requirements_txtrI      s<    O O O 
	 
    r&   c                  2    d } t          ddd|            d S )Nc                     t          t          j                            | d                    }|J |j        dk    sJ |j        dk    sJ d S )Nrequirements.txtrA   )abcd)r
   r1   r2   joinr   r   )dirnamer"   s     r#   r$   z3test_load_recursive_requirements_txt.<locals>.check   sZ    %bgll7<N&O&OPPyI%%%% $8888888r&   z&
a
b
-r more-requirements.txt
        z
c
d
)rL   zmore-requirements.txt)r   r)   s    r#   $test_load_recursive_requirements_txtrS      sH    9 9 9 !
&
	
 
	
     r&   c                  .    d } t          dd|            d S )Nc                     t          |           }|J t          |gt          j                            |                     \  }}|J |J d S N)r	   r   r1   r2   rR   )r!   r"   desyncedr   s       r#   r$   z0test_find_in_sync_environment_yml.<locals>.check   s^    $X..<dVRW__U]E^E^__4r&   zenvironment.ymlr'   r   r)   s    r#   !test_find_in_sync_environment_ymlrY      s<         
    r&   c                  .    d } t          dd|            d S )Nc                 b   t          |           }|J t          |j        |j        dd          |j        |j                  }t          |gt          j        	                    |                     \  }}|J |j
        |j
        k    sJ |t          j                            |           k    sJ d S )N   r   r   r   r   )r	   r   r   r   r   r   r   r1   r2   rR   r   r3   )r!   r"   changedrW   r   s        r#   r$   z4test_find_out_of_sync_environment_yml.<locals>.check   s    $X..ty)-)<QRR)@'+'8#'=2 2 2
 =gYX`HaHabb4###$(99999rw''11111111r&   zenvironment.yamlr'   rX   r)   s    r#   %test_find_out_of_sync_environment_ymlr_      s<    2 2 2   
    r&   c                  ,    t          d          } | J d S Nnopenopenope)r	   )r"   s    r#   (test_load_environment_yml_does_not_existrc      s!     00Dr&   c                  <    t          g d          \  } }| J |J d S ra   )r   )r"   r   s     r#   $test_find_out_of_sync_does_not_existre      s3    4RHHLT4r&   c            	          t          dddgddgddgdd	          } t          d
dddgddgddgd| f          }|                                }dddgddddddgigd|k    sJ d S )Nhiqrzooboox1y1r8   r   r   r   r   inherit_from_namesinherit_fromr   zThe Foo SpecrM   rN   rO   rP   xy)rg   )r   descriptionr   r   r   ro   rp   pip)rs   r   rp   packagesr   to_json)rg   r"   jsons      r#   test_to_jsonry      s    	d!$c
$en,$& 
" 
" 
"B -#&*!$c
 #J&.!#( ( (D <<>>D &#J#C: 
 	  
     r&   c                  ~    t          dddgg ddgdd          } |                                 }ddgddgd|k    sJ d S )	Nr   rM   rN   rq   rr   r8   rn   )r   ru   rv   r"   rx   s     r#   -test_to_json_no_description_no_pip_no_inheritr|     se    #&* " #J&( "$ $ $D <<>>Dc
c
;;tCCCCCCr&   c                      t          dddgddgddgd	          } |                                 }ddgd
dgdddddgigd|k    sJ d S )Nr   rM   rN   rO   rP   rq   rr   )rg   hello)r   r   r   r   ro   rg   r~   rt   )r   rp   ru   rv   r{   s     r#   !test_to_json_multiple_inheritancer   %  s    #&*!$c
 #J&5	7 7 7D
 <<>>D #Jw#C: 
   
     r&   c                      t          dddgddgddg          } t          d	g d
dgg d          }|                    |           }d|k    sJ d S )Nr   rM   rN   rO   rP   rq   rr   r]   bar)rM   rN   rh   )rq   rr   zzF  channels:
      x
      y
    + z
  a
  b
+ q
  pip:
      c
    - d)r   	diff_from)spec1spec2diffs      r#   test_diff_fromr   6  ss    Szc
^acf]ghhhEcU]l]l]lmmmE??5!!D\`dddddddr&   c                  8    d fd} t          d|            d S )Nc                    t           j                            |d          }|                     |           t	          |          }|J |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j	        dk    sJ d S )Nz	saved.ymlr   xyzr   r   abcr   r   (ee1be9dc875857a69ccabb96cb45b5b828a6dff9)
r1   r2   rQ   save_environment_ymlr	   r   r   r   r   r   )r"   rR   savedr   s       r#   
check_savez-test_save_environment_yml.<locals>.check_save?  s    Wk22!!%(((%e,,   zU""""#'GGGGG!%<<<<<~!99999!%OOOOOOOr&   c                     t          |           J j        dk    sJ j        dk    sJ j        dk    sJ j        dk    sJ j        dk    sJ t          i fd           d S )Nr   r   r   r   r   c                      |           S rV   r8   )rR   r   r"   s    r#   <lambda>z:test_save_environment_yml.<locals>.check.<locals>.<lambda>X  s    JJtW4M4M r&   )r	   r   r   r   r   r   r   )r!   r"   r   s    @r#   r$   z(test_save_environment_yml.<locals>.checkM  s    $X..yE!!!!"&FFFFF $;;;;;} 88888 $NNNNN$M$M$M$M$MNNNNNr&   z
name: foo
dependencies:
  - xyz
  - bar=1.0
  - baz
  - abc
  - pip:
    - pippy
    - poppy==2.0
channels:
  - channel1
  - channel2
    r(   )r$   r   s    @r#   test_save_environment_ymlr   >  s[    P P PO O O O O 	 
    r&   c                      t          ddgig d          } t          dddgdd	gd
dg|           }d|j        k    sJ d S )Nalla=1.0=1zlinux-32linux-64zosx-64z	osx-arm64zwin-32zwin-64	platformsr   rM   rN   rO   rP   rq   rr   r   r   r   r   lock_set)r   )r   r   conda_packages_for_creater   r"   s     r#   %test_overwrite_packages_with_lock_setr   k  su    UYK0&i&i&ik k kH#&*!$c
 #J$	& & &D D:::::::r&   c                     t          dddgig d          } t          dddgd	d
gddg|           }d|j        k    sJ d|j        k    sJ t	          ddg          |j        k    sJ t	          ddg          |j        k    sJ d S )Nr   r   q=2.0=2r   r   r   rM   rN   rO   rP   rq   rr   r   )rM   rN   )r   r   rh   )r   r   r   r   rH   conda_package_names_set"conda_package_names_for_create_setr   s     r#   test_lock_set_affects_name_setsr   x  s    UY	$:;&i&i&ik k kH#&*!$c
 #J$	& & &D ,,,,,!T%CCCCCSz??d:::::Sz??dEEEEEEEr&   c                     t          ddgig d          } t          dddgdd	gd
dg|           }t          |j        |j        |j        |j        d           }|j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j	        k    sJ |j        |j	        k    sJ d S )Nr   r   r   r   r   rM   rN   rO   rP   rq   rr   r   )
r   r   r   r   r   r   r   r   locked_hashimport_hash)r   with_lock_specwithout_lock_specs      r#   test_lock_set_affects_hashr     s7   UYK0&i&i&ik k kH%-0#J+.*'*Cj&.	0 0 0N
  ^%8/=/L-;-H)7)@)-	/ / / (N,TTTTT+/@/ZZZZZ)->-JJJJJ&.*DDDDD&*;*HHHHH(,=,IIIII%)CCCCCCCr&   c                     t          dddgddgddgd	          } t          | j        | j        | j        | j        d
	          }| j        | j        k    sJ | j        | j        k    sJ |j        |j        k    sJ |j        |j        k    sJ d S )Nr   rM   rN   rO   rP   rq   rr   )r   )r   r   r   r   r   r8   )r   r   r   r   r   r   r   r   )with_platforms_specwithout_platforms_specs     r#   test_platforms_affect_hashr     s    !u25s03Sz,/:,:	< < <
 %*=*B4G4V2E2R.A.J/1	3 3 3 +/B/NNNNN+/B/NNNNN!.2H2TTTTT!.2H2TTTTTTTr&   )#
__future__r   r   r1   ,anaconda_project.internal.test.tmpfile_utilsr   r   r   anaconda_project.env_specr   r	   r
   r   anaconda_project.conda_managerr   r*   r.   r4   r;   r>   rI   rS   rY   r_   rc   re   ry   r|   r   r   r   r   r   r   r   r8   r&   r#   <module>r      s   7 6 6 6 6 6 6 6 				S S S S S S S S S SJ J J J J J J J J J J J 8 7 7 7 7 7  6  6  4  "  $  8  ,  2  >  
    6
D 
D 
D  "e e e* * *Z
; 
; 
;F F FD D D2U U U U Ur&   