
    DIez                    H   d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	Z	ddl
mZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ej        d             Zd Zd Zd Z G d d          Zd Z  e	j!                    efdd            Z" G d d          Z#dS )zHelpers for testing the solver.    )annotationsNTemporaryDirectory   )context)Solver)PackagesNotFoundErrorResolvePackageNotFoundUnsatisfiableError)Channel)	MatchSpec)PackageRecord   )helpersc                    t          t          d|            } |t          j                  \  }}t	          |                                          S )z<Get the index data of the ``helpers.get_index_r_*`` helpers.get_index_r_)getattrr   r   subdirlistvalues)num	get_indexindex_s       <lib/python3.11/site-packages/conda/testing/solver_helpers.pyindex_packagesr      sG     !5!5!566Iy((HE1    c                N    | j         j         d| j         d| j         d| j         S )Nz::-channelnameversionbuild)records    r   package_stringr&   $   s1    n!RRV[RR6>RRFLRRRr   c                    d | D             S )z3Transforms package container in package string set.c                ,    h | ]}t          |          S  )r&   .0r%   s     r   	<setcomp>z%package_string_set.<locals>.<setcomp>*   s     :::vN6"":::r   r)   packagess    r   package_string_setr/   (   s    ::::::r   c                    d | D             S )z/Transforms package container into a dictionary.c                    i | ]
}|j         |S r)   r"   r*   s     r   
<dictcomp>z package_dict.<locals>.<dictcomp>/   s    777FFK777r   r)   r-   s    r   package_dictr4   -   s    77h7777r   c                  x    e Zd ZdZdZej        fdZd ZddZ	ddd	Z
ddd
Zed             Zd Zd Zd ZdS )SimpleEnvironmentzHelper environment object.)r$   build_numberdependslicensemd5r"   sha256sizer   	timestampr#   track_featuresfeaturesc                    t          j        |          | _        | j        dz  | _        | j        dz  | _        || _        || _        g | _        g | _        d S )Nprefixchannels)	pathlibPath_path_prefix_path_channels_path_solver_classsubdirsinstalled_packagesrepo_packages)selfpathsolver_classrI   s       r   __init__zSimpleEnvironment.__init__E   sZ    \$''
 J1"j:5)"$ @Br   c                R   g }|                                   | j                                        D ]T\  }}|                     ||           t	          t          | j        |z                      }|                    |           U|                     | j	        | j
        |||          S )zCWrites ``repo_packages`` to the disk and creates a solver instance.)rA   rI   rB   specs_to_addspecs_to_remove)_write_installed_packages_channel_packagesitems_write_repo_packagesr   strrG   appendrH   rF   rI   )rL   addremoverB   channel_namer.   r!   s          r   solverzSimpleEnvironment.solverQ   s    &&(((&*&<&B&B&D&D 	% 	%"L(%%lH===c$"5"DEEFFGOOG$$$$!!$L" " 
 
 	
r   r)   Fc                z    |                      ||                                          }|r|S t          |          S )N)rY   rZ   )r\   solve_final_stater/   )rL   rY   rZ   as_specsr.   s        r   solver_transactionz$SimpleEnvironment.solver_transactiona   s>    ;;3v;66HHJJ 	O!(+++r   r_   c               0    |                      ||          S )N)rY   r_   r`   rL   r_   specss      r   installzSimpleEnvironment.installg   s    &&58&DDDr   c               0    |                      ||          S )N)rZ   r_   rc   rd   s      r   rZ   zSimpleEnvironment.removej   s    &&eh&GGGr   c                V    t          | j        t                    r| j        S d| j        iS )z<Helper that unfolds the ``repo_packages`` into a dictionary.test)
isinstancerK   dictrL   s    r   rT   z#SimpleEnvironment._channel_packagesm   s0     d($// 	&%%*++r   c                      fdt          |                                          D             }d|vrt          j        |d<   |S )zHTurn record into data, to be written in the JSON environment/repo files.c                .    i | ]\  }}|j         v ||S r)   )REPO_DATA_KEYS)r+   keyvaluerL   s      r   r3   z3SimpleEnvironment._package_data.<locals>.<dictcomp>v   s7     
 
 
Ud))) )))r   r   )varsrU   r   r   )rL   r%   datas   `  r   _package_datazSimpleEnvironment._package_datat   sZ    
 
 
 
"6ll0022
 
 

 4$^DNr   c           	        | j         sd S | j        dz  }|                    dd           | j         D ]j}||j         d|j         d|j         dz  }|                     |          }|j        j        |d<   |                    t          j
        |                     k|dz  }|                    d                    d	gt          t          | j                   R                      d S )
Nz
conda-metaT)exist_okparentsr   z.jsonr!   history
z==> 2000-01-01 00:00:00 <==)rJ   rF   mkdirr"   r#   r$   rt   r!   
write_textjsondumpsjoinmapr&   )rL   
conda_metar%   record_pathrecord_datahistory_paths         r   rS   z+SimpleEnvironment._write_installed_packages   s   & 	F&5
$555- 	< 	<FRRfnRRv|RRRR  ,,V44K%+^%8K	"""4:k#:#:;;;;!I-II1)@AA  	
 	
 	
 	
 	
r   c           
     $   t          j        t                    }|D ]*}|                     |          ||j                 |j        <   +t          | j                                      t          |	                                                    sJ | j        D ]y}| j
        |z  |z  }|                    dd           |                    d                              t          j        d|i|                    |i           d                     zdS )z#Write packages to the channel path.T)rw   rv   zrepodata.jsonr   )infor.   N)collectionsdefaultdictrk   rt   r   fnsetrI   
issupersetkeysrG   rz   joinpathr{   r|   r}   get)rL   r[   r.   package_datar%   r   subdir_paths          r   rV   z&SimpleEnvironment._write_repo_packages   s,    #.t44 	P 	PF595G5G5O5OL'	224<  ++C0A0A0C0C,D,DEEEEEl 	 	F-<vEKdT:::  11<<
 %f! %1$4$4VR$@$@	  	 	 	 		 	r   N)r)   r)   F)__name__
__module____qualname____doc__ro   r   rI   rO   r\   r`   rf   rZ   propertyrT   rt   rS   rV   r)   r   r   r6   r6   2   s        $$N  4;? 
B 
B 
B 
B
 
 
 , , , , (- E E E E E ', H H H H H , , X,	 	 	
 
 
0    r   r6   c                 "    t          d          S Nzconda-test-repo-)rA   r   r)   r   r   empty_prefixr      s    %78888r   returnc              #  |   K   t                      5 }t          ||           V  d d d            d S # 1 swxY w Y   d S N)r   r6   )rN   rA   s     r   temp_simple_envr      s      	 66555556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   155c                  f   e Zd ZdZed8d            Zed             Z ej        d          d             Z	 ej                    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" Z#d# Z$d$ Z%d% Z&d& Z'd' Z(ej)        *                    d()          d*             Z+ej)        *                    d()          d+             Z,ej)        *                    d,)          d-             Z-d. Z.d/ Z/d0 Z0d1 Z1d2 Z2d3 Z3d4 Z4d5 Z5d6 Z6d7S )9SolverTestsz>Tests for :py:class:`conda.core.solve.Solver` implementations.r   type[Solver]c                    t           )zClass under test.)NotImplementedErrorrl   s    r   rN   zSolverTests.solver_class   s
     "!r   c                    i S r   r)   rl   s    r   tests_to_skipzSolverTests.tests_to_skip   s    	r   T)autousec                    | j                                         D ]'\  }}|j        j        |v rt	          j        |           (d S r   )r   rU   noder"   pytestskip)rL   requestreason	skip_lists       r   
skip_testszSolverTests.skip_tests   sP    !%!3!9!9!;!; 	$ 	$FI| I--F###	$ 	$r   c              #     K   t          d          5 }t          || j                  | _        | j        V  d | _        d d d            d S # 1 swxY w Y   d S r   )r   r6   rN   env)rL   tmpdirs     r   r   zSolverTests.env   s      '9::: 	f(1BCCDH(NNNDH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   +AAAc                t    |D ]3t          fd|                                D                       rc S 4d S )Nc              3  F   K   | ]\  }}t          |          |k    V  d S r   )r   )r+   rp   rq   r%   s      r   	<genexpr>z3SolverTests.find_package_in_list.<locals>.<genexpr>   s6      RRZS%763''50RRRRRRr   )allrU   )rL   r.   kwargsr%   s      @r   find_package_in_listz SolverTests.find_package_in_list   sW     	 	FRRRR6<<>>RRRRR 	 	r   c                    t          | j        j        t                    r,d|vrt	          d          | j        j        |d                  }n| j        j        } | j        |fi |S )Nr!   zDRepo has multiple channels, the `channel` argument must be specified)rj   r   rK   rk   
ValueErrorr   )rL   r   r.   s      r   find_packagezSolverTests.find_package   sv    dh,d33 	.&& Z   x-fY.?@HHx-H(t(<<V<<<r   c                    t          |j        t                    sJ |j        t          u r)t          d |j        j        D                       |k    sJ dS dS )zHelper to assert that a :py:class:`conda.exceptions.UnsatisfiableError`
        instance as a the specified set of unsatisfiable specifications.
        c              3  Z   K   | ]&}t          t          t          |                    V  'd S r   )tupler   rW   )r+   entriess     r   r   z3SolverTests.assert_unsatisfiable.<locals>.<genexpr>   sE        18E#c7++,,     r   N)
issubclasstyper   sortedrq   unsatisfiable)rL   exc_infor   s      r   assert_unsatisfiablez SolverTests.assert_unsatisfiable   s     (-);<<<<<=...  <DN<X         /. r   c                z    t          d          |_        |                                t                      k    sJ d S )Nr   )r   rK   rf   r   rL   r   s     r   
test_emptyzSolverTests.test_empty   s5    *1--{{}}%%%%%%r   c                l    t          d          |_        |                    ddd          h dk    sJ d S )Nr   
iopro 1.4*python 2.7*
numpy 1.7*>   test::tk-8.5.13-0test::system-5.8-1test::zlib-1.2.7-0test::python-2.7.5-0test::readline-6.2-0test::sqlite-3.7.13-0test::openssl-1.0.1c-0test::pip-1.3.1-py27_1test::unixodbc-2.3.1-0test::numpy-1.7.1-py27_0test::iopro-1.4.3-np17py27_p0test::distribute-0.6.36-py27_1r   rK   rf   r   s     r   test_iopro_mklzSolverTests.test_iopro_mkl   sU    *1--{{<EE J
 J
 J
 
 
 
 
 
 
r   c                    t          d          |_        |                    dddt          d                    h dk    sJ d S )Nr   r   r   r   mklr>   >   r   r   r   test::mkl-rt-11.0-p0r   r   r   r   r   r   test::numpy-1.7.1-py27_p0r   r   r   rK   rf   r   r   s     r   test_iopro_nomklzSolverTests.test_iopro_nomkl  se    *1--{{-yPU7V7V7V
 

 
 

 
 
 
 
 
r   c                    t          d          |_        |                    d          |                    dt          d                    k    sJ d S )Nr   r   zmkl 11*r   r   r   s     r   test_mklzSolverTests.test_mkl  s_    *1--{{5!!S[[y666&
 &
 
 
 
 
 
 
r   c                    t          d          |_        |                    d          |                    dt          d                    k    sJ d S )Nr   
accelerater   r   r   r   s     r   test_acceleratezSolverTests.test_accelerate  s_    *1--{{<((CKK)5999-
 -
 
 
 
 
 
 
r   c                    t          d          |_        |                    dddt          d          d          }|D ]}|j        d	v rd|j        v sJ d
t          |          v sJ dt          |          v sJ d S )Nr   scipyr   r   r   r   Tra   )numpyr   r   ztest::scipy-0.12.0-np17py27_p0)r   rK   rf   r   r"   r?   r/   )rL   r   recordsr%   s       r   test_scipy_mklzSolverTests.test_scipy_mkl#  s    *1--++U+++  
 
  	0 	0F{000////*.@.I.IIIII/3Eg3N3NNNNNNNr   c                    t          d          |_        |                    ddd          }t          |          dk    sJ d|v sJ d S )Nr   zanaconda 1.5.0r   r   k   test::scipy-0.12.0-np17py27_0)r   rK   rf   lenrL   r   r   s      r   test_anaconda_nomklzSolverTests.test_anaconda_nomkl4  sV    *1--++.|LL7||s"""".'999999r   c                    t          d          |_        |                    ddd          h dk    sJ |                    dddt          d                    h dk    sJ d S )	Nr   iopror   
numpy 1.5*>   test::numpy-1.5.1-py27_4r   r   r   r   r   r   r   r   r   test::iopro-1.4.3-np15py27_p0r   r   r   >   test::numpy-1.5.1-py27_p4r   r   r   r   r   r   r   r   r   r   r   r   r   r   s     r   test_pseudo_booleanzSolverTests.test_pseudo_boolean:  s    *1--{{7M<@@ E
 E
 E
 
 
 
 
 {{]L)52Q2Q2Q
 

 
 

 
 
 
 
 
r   c                   t          d          |_        t          j        t                    5 }|                    dd           d d d            n# 1 swxY w Y   |                     |ddg           t          j        t                    5 }|                    dd           d d d            n# 1 swxY w Y   |                     |g d           t          j        t          t          f          5 }|                    dd           d d d            n# 1 swxY w Y   |j	        t          u r3t          t          t          |j        j                            d	gk    sJ d S d S )
Nr   r   zscipy 0.12.0b1)	numpy=1.5)zscipy==0.12.0b1znumpy[version='1.6.*|1.7.*']	python 3*))r   nosez
python=3.3)r   zpython[version='2.6.*|2.7.*'])zpython=3
numpy 1.6*znumpy[version='1.5.*,1.6.*'])r   rK   r   raisesr   rf   r   r
   r	   r   r   r   rW   rq   bad_depsrL   r   r   s      r   test_unsat_from_r1zSolverTests.test_unsat_from_r1]  s)   *1--]-.. 	8(KK&6777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8!!C	
 	
 	
 ]-.. 	3(KKk222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3!!  	
 	
 	
 ]24IJKK 	4xKKl333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4=222#c8>#:;;<<.A     32 s5   AAAB00B47B43DDDc                ~   t          j        ddg          t          j        ddg          t          j        dd          t          j        dd	          g|_        t          j        t
                    5 }|                    dd           d d d            n# 1 swxY w Y   |                     |d
dg           d S )Nac >=1,<2r"   r8   bc >=2,<3c1.0r"   r#   2.0)r   c[version='>=1,<2']r  c[version='>=2,<3']r   r%   rK   r   r   r   rf   r   r   s      r   test_unsat_simplezSolverTests.test_unsat_simple|  s   Nj\:::Nj\:::NU333NU333	
 ]-.. 	"(KKS!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"!!,,	
 	
 	
 	
 	
s   7BB!Bc                p    t          d          |_        |                    d          }d|v sJ d|v sJ d S )Nr   zanaconda 1.4.0ztest::anaconda-1.4.0-np17py33_0ztest::freetype-2.4.10-0r   r   s      r   test_get_distszSolverTests.test_get_dists  sL    *1--++.//0G;;;;(G333333r   c                   t          j        dddg          t          j        ddg          t          j        dd          t          j        dd	          t          j        dd
g          g|_        t          j        t
                    5 }|                    ddd           d d d            n# 1 swxY w Y   |                     |g d           d S )Nr   dc <1.3.0r  r  r  1.3.6r  1.2.8	c >=0.8.0c=1.3.6))r   c[version='<1.3.0'])r   r  c[version='>=0.8.0']r  r  r  r  r   s      r   test_unsat_shortest_chain_1z'SolverTests.test_unsat_shortest_chain_1  s2   Nc:->???NcU333N   N   Nk];;;
 ]-.. 	-(KK	3,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-!!  	
 	
 	
 	
 	
   B22B69B6c                   t          j        dddg          t          j        ddg          t          j        dd          t          j        dd	          t          j        dd
g          g|_        t          j        t
                    5 }|                    ddd           d d d            n# 1 swxY w Y   |                     |g d           d S )Nr   r  r  r  r  r  r  r  r  r  r  ))r   r  )r   r  r  r  r  r  r   s      r   test_unsat_shortest_chain_2z'SolverTests.test_unsat_shortest_chain_2  s2   Nc;-?@@@NcU333N   N   Nj\:::
 ]-.. 	-(KK	3,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-!!  	
 	
 	
 	
 	
r  c           
        t          j        dddg          t          j        ddg          t          j        dd          t          j        dd	          t          j        d
dg          t          j        ddg          t          j        dd
g          g|_        t          j        t
                    5 }|                    ddd           d d d            n# 1 swxY w Y   |                     |g d           d S )Nr   fer  r  r  r  r  r  r  r  r  r  ))r   r   r  r  r  r  r   s      r   test_unsat_shortest_chain_3z'SolverTests.test_unsat_shortest_chain_3  sY   Nc3Z888NcU333N   N   Nk];;;Nj\:::NcU333
 ]-.. 	-(KK	3,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-!!  	
 	
 	
 	
 	
s   :CC"%C"c           
        t          j        ddg          t          j        d          t          j        d          t          j        ddddg	          t          j        dd
ddg	          g|_        t          j        t
                    5 }|                    dd           d d d            n# 1 swxY w Y   |                     |ddg           d S )Nr   z	py =3.7.1r  py_req_1r2   py_req_2pyz3.7.1r"   r#   r8   z3.6.1py=3.6.1)r   zpy=3.7.1)r'  r  r   s      r   test_unsat_shortest_chain_4z'SolverTests.test_unsat_shortest_chain_4  s+   Nk];;;N
+++N
+++N7Z4L   N7Z4L  

 ]-.. 	)(KKZ(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)!!!	
 	
 	
 	
 	
s   B22B69B6c           
        t          j        ddg          t          j        ddg          t          j        dddg          t          j        d	d
          t          j        ddg          t          j        dddg          t          j        d	d
          g|_        t          j        t
                    5 }|                    dd           d d d            n# 1 swxY w Y   |                     |ddg           d S )Nr   r  r  r   r  r  d >=1,<2r&  r  r  r   r  r  d >=2,<3)r   r  r  )r   r
  r  r   s      r   test_unsat_chainzSolverTests.test_unsat_chain  sC    NcU333Nj\:::NUZLIIINU333Nj\:::NUZLIIINU333
 ]-.. 	"(KKS!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"!!1,	
 	
 	
 	
 	
s   ;CC"%C"c                :   t          j        dddg          t          j        dddg          t          j        dddg          t          j        dddg          t          j        d	ddg          t          j        d	ddg          t          j        d
d          t          j        d
d          t          j        d
d          g	|_        |                    ddd          }t	          d |D                       sJ t	          d |D                       sJ |                    dd	d          }t	          d |D                       sJ t	          d |D                       sJ |                    dd	d          }t	          d |D                       sJ t	          d |D                       sJ t          j        t                    5 }|                    ddd	           d d d            n# 1 swxY w Y   |                     |g d           d S )Nr   r  r*  r&  r  r+  r  zd >=3,<4r  r  r  z3.0Tra   c              3  B   K   | ]}|j         d k    o
|j        dk    V  dS r   r  Nr  r+   ks     r   r   z;SolverTests.test_unsat_any_two_not_three.<locals>.<genexpr>  4      KKA16S=7QY%%7KKKKKKr   c              3  B   K   | ]}|j         d k    o
|j        dk    V  dS r  r  Nr  r0  s     r   r   z;SolverTests.test_unsat_any_two_not_three.<locals>.<genexpr>  r2  r   c              3  B   K   | ]}|j         d k    o
|j        dk    V  dS r   r  Nr  r0  s     r   r   z;SolverTests.test_unsat_any_two_not_three.<locals>.<genexpr>!  r2  r   c              3  B   K   | ]}|j         d k    o
|j        dk    V  dS )r  r  Nr  r0  s     r   r   z;SolverTests.test_unsat_any_two_not_three.<locals>.<genexpr>"  r2  r   c              3  B   K   | ]}|j         d k    o
|j        dk    V  dS r  r  Nr  r0  s     r   r   z;SolverTests.test_unsat_any_two_not_three.<locals>.<genexpr>%  r2  r   c              3  B   K   | ]}|j         d k    o
|j        dk    V  dS )r  r  Nr  r0  s     r   r   z;SolverTests.test_unsat_any_two_not_three.<locals>.<genexpr>&  r2  r   ))r   zd[version='>=1,<2|>=2,<3'])r  zd[version='>=1,<2|>=3,<4'])r  zd[version='>=2,<3|>=3,<4'])	r   r%   rK   rf   anyr   r   r   r   )rL   r   	installedr   s       r   test_unsat_any_two_not_threez(SolverTests.test_unsat_any_two_not_three  s    NUZLIIINUZLIIINUZLIIINUZLIIINUZLIIINUZLIIINU333NU333NU333

 KKS4K88	KKKKKKKKKKKKKKKKKKKKKKS4K88	KKKKKKKKKKKKKKKKKKKKKKS4K88	KKKKKKKKKKKKKKKKKKKK]-.. 	'(KKS#&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'!!  	
 	
 	
 	
 	
s   G88G<?G<c                   t          j        dddg          t          j        ddg          t          j        ddg          t          j        dd	          t          j        dd
	          g|_        t          j        t
                    5 }|                    d           d d d            n# 1 swxY w Y   |                     |ddg           d S )Nr   r  r  r  r*  r+  r  r  r  r  )r  zd[version='>=1,<2'])r  zd[version='>=2,<3']r  r   s      r   test_unsat_expand_singlez$SolverTests.test_unsat_expand_single3  s   Nc3Z888Nj\:::Nj\:::NU333NU333
 ]-.. 	(KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!!,,	
 	
 	
 	
 	
s   B00B47B4c                V   t          j        dddg          t          j        ddg          t          j        dd          g|_        t          j        t
                    5 }|                    dd           d d d            n# 1 swxY w Y   |                     |dd	g           d S )
Nr   r  r  r  r  r  r  )r   r  )r  r  r   s      r   test_unsat_missing_depz"SolverTests.test_unsat_missing_depE  s    Nc3Z888Nj\:::NU333

 ]-.. 	"(KKS!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"!!	
 	
 	
 	
 	
s   #BB
B
c                <   t          j        t          t          f          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          t          f          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nnotarealpackage 2.0*z	numpy 1.5)r   r   r
   r	   rf   r   s     r   test_nonexistentzSolverTests.test_nonexistentU  s   ]24IJKK 	0 	0KK.///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0]24IJKK 	% 	%KK$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s#   AA
A.BBBc           	        t          d          t          j        dddddg          t          j        ddddd	g          gz   |_        |                    dd          }d
|v sJ d|v sJ |                    d	d          }d|v sJ d|v sJ  |j        dg|                    dd          R  |k    sJ  |j        dg|                    d	d          R  |k    sJ |                    d          |k    sJ d S )Nr   	mypackager  hash12_0zlibpng 1.2.*)r"   r#   r$   r=   r8   hash15_0r   zlibpng 1.5.*ztest::libpng-1.2.50-0ztest::mypackage-1.0-hash12_0ztest::libpng-1.5.13-1ztest::mypackage-1.0-hash15_0Tra   r   r   r%   rK   rf   )rL   r   
records_12
records_15s       r   test_timestamps_and_depsz$SolverTests.test_timestamps_and_deps[  s{   *1--N  '(   N  '(  1
 
" [[==
&*4444-;;;;[[==
&*4444-;;;;
 CKQckk.4k&P&PQQQ    CKQckk.4k&P&PQQQ   
 {{;'':555555r   c           
        t          d          t          j        ddg d          t          j        ddddg          t          j        d	ddd
g          t          j        d	dddg          gz   |_        |                    d          h dk    sJ |                    d          h dk    sJ |                    d	          h dk    sJ t          d          t          j        ddddg          t          j        ddg d          t          j        d	dddg          t          j        d	dddg          gz   |_        |                    d          h dk    sJ t          j        t          t          f          5  |                    d
           d d d            n# 1 swxY w Y   |                    d          h dk    sJ |                    d	          h dk    sJ d S )Nr   rF  r  )r   python 3.3*rC  r&  z1.1r   rN  anotherpackagezmypackage 1.1r  >   r   r   r   test::python-3.3.2-0r   test::mypackage-1.1-0r   r   test::pip-1.3.1-py33_1test::nose-1.3.0-py33_0test::distribute-0.6.36-py33_1zanotherpackage 1.0>   r   r   r   rP  r   rQ  r   r   rR  rS  test::anotherpackage-1.0-0rT  >   r   r   r   rP  r   rQ  r   r   rR  rS  test::anotherpackage-2.0-0rT  zmypackage 1.0>   r   r   r   rP  r   test::mypackage-1.0-0r   r   rR  rS  rT  >   r   r   r   rP  r   rW  r   r   rR  rS  rU  rT  >   r   r   r   rP  r   rW  r   r   rR  rS  rV  rT  )	r   r   r%   rK   rf   r   r   r
   r   r   s     r   test_nonexistent_depsz!SolverTests.test_nonexistent_deps  s   *1--N GGG  
 N /  
 N%1  
 N%-  !1
 
. {{;'' ,
 ,
 ,
 
 
 
 
 {{/00 5
 5
 5
 
 
 
 
 {{+,, 1
 1
 1
 
 
 
 
  +1--N /  
 N GGG  
 N%1  
 N%-  !1
 
. {{;'' ,
 ,
 ,
 
 
 
 
 ]24FGHH 	) 	)KK(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	){{/00 5
 5
 5
 
 
 
 
" {{+,, 1
 1
 1
 
 
 
 
 
 
s   F%%F),F)c                    t          d          t          j        dddgd          t          j        dddgd          gz   |_        |                    dd           d S )	Nr   rF  r  rN  feature)r"   r#   r8   r?   )r"   r#   r8   r>   zfeature 1.0rI  r   s     r   !test_install_package_with_featurez-SolverTests.test_install_package_with_feature  s~    *1--N &"	   N&(	  1
 
 	K/////r   c                   t          d          t          fdt          d          D                       }t          d |j        D                       }t          j        |d|j                            dd          d||j	                            dd          |j
                            dd          	          }t          d          |gz   |_        |                    d
          }d|vsJ d|v sJ d S )Nz#channel-1::scipy==0.11.0=np17py33_3c              3  F   K   | ]}                     |          |V  d S r   )match)r+   precgood_rec_matchs     r   r   zCSolverTests.test_unintentional_feature_downgrade.<locals>.<genexpr>&  sJ       
 
.2F2Ft2L2L

 
 
 
 
 
r   r   c              3  D   K   | ]}|                     d           |V  dS )r   N)
startswith)r+   r  s     r   r   zCSolverTests.test_unintentional_feature_downgrade.<locals>.<genexpr>)  s3      RRqALL<Q<QRRRRRRRr   ri   _3_x0r   )r!   r$   r7   r8   r   urlzscipy 0.11.0ztest::scipy-0.11.0-np17py33_x0ztest::scipy-0.11.0-np17py33_3)r   nextr   r   r8   r   from_objectsr$   replacer   re  rK   rf   )rL   r   good_recr   bad_recr   r`  s         @r   $test_unintentional_feature_downgradez0SolverTests.test_unintentional_feature_downgrade   s%   
 ##HII 
 
 
 
+A..
 
 
 
 
 RRH$4RRRRR,.((u55{""4//$$T511
 
 
 +1--	9++n--/w>>>>.'999999r   c                "   t          d          t          j        ddg          t          j        ddg          gz   |_        |                    dd          |                    d          cxk    r|                    d          k    sn J d S )Nr   package1package2r  rI  r   s     r   test_circular_dependenciesz&SolverTests.test_circular_dependencies9  s    *1--N#   N#  	1
 	
 KK
J//{{:&&' ' ' '{{:&&' ' ' ' ' ' ' 'r   c                j    t          d          |_        |                    dd          h dk    sJ d S )Nr   z
pytz 2012dr   >
   test::pytz-2012d-py33_0r   r   r   rP  r   r   r   rR  rT  r   r   s     r   test_irrational_versionz#SolverTests.test_irrational_versionJ  sP    *1--{{<55 :
 :
 :
 
 
 
 
 
 
r   c                   t          d          |_        |                    ddd          h dk    sJ |                    dddt          d                    h dk    sJ |xj        t	          j        d	d
dg d          t	          j        ddddddgd          gz  c_        |                    dd          h dk    sJ |                    ddt          d                    h dk    sJ d S )Nr   zpython 2.6*r   zscipy 0.11*>   test::numpy-1.6.2-py26_4test::scipy-0.11.0-np16py26_3r   r   r   test::python-2.6.8-6r   r   r   test::pip-1.3.1-py26_1test::distribute-0.6.36-py26_1r   r   >   test::numpy-1.6.2-py26_p4test::scipy-0.11.0-np16py26_p3r   r   r   r   rv  r   r   r   rw  rx  pandasz0.12.0
np16py27_0)dateutilr   r   pytz)r"   r#   r$   r8   r   z1.6.2py27_p5r   zmkl-rt 11.0z
python 2.7)r"   r#   r$   r7   r8   r?   zpandas 0.12.0 np16py27_0r   >   test::numpy-1.6.2-py27_4r   r   r   r   r   r   r   r   test::six-1.3.0-py27_0test::pytz-2013b-py27_0test::dateutil-2.1-py27_1r   test::pandas-0.12.0-np16py27_0>   test::numpy-1.6.2-py27_p4r   r   r   r   r   r   r   r   r   r  r  r  r   r  )r   rK   rf   r   r   r%   r   s     r   test_no_featureszSolverTests.test_no_featuresY  s   *1--{{=,FF K
 K
 K
 
 
 
 
 {{<	QV8W8W8W
 

 
 

 
 
 
" 	N "  	
 
 
 N!  
 
 

 	
0 {{5}EE J
 J
 J
 
 
 
 
  {{&yPU7V7V7V
 

 
 

 
 
 
 
 
r   z7CONDA_CHANNEL_PRIORITY does not seem to have any effect)r   c                ^   i |_         g |j         d<   t          d          |j         d<   |                     dddd          }|j         d                             |           |                    dd	           d
|                    ddd          v sJ |                    dd           d|                    ddd          v sJ t          t          |j                                                             |_         |                    dd	           d|                    ddd          v sJ d S )Nz	channel-Ar   	channel-1r{  z0.10.1
np17py27_0r    CONDA_CHANNEL_PRIORITYTruez#channel-A::pandas-0.11.0-np16py27_0r   r   Falsez#channel-1::pandas-0.11.0-np16py27_1)	rK   r   r   rX   setenvrf   rk   reversedrU   )rL   monkeypatchr   pandas_0s       r   test_channel_priority_1z#SolverTests.test_channel_priority_1  sx   
 )++&)7):):+&$$	 % 
 
 	+&--h777 	3V<<<4m\9
 9
 
 
 
 
 	3W===4m\9
 9
 
 
 
 
 !#*;*A*A*C*C!D!DEE3V<<<4m\9
 9
 
 
 
 
 
 
r   c                   i |_         t          j        dddg          t          j        dddg          t          j        dd          g|j         d<   t          j        dd	dg          t          j        dd	dg          t          j        dd          t          j        dd	          g|j         d
<   |                    dd           |                    ddd          }t          d |D                       sJ t          d |D                       sJ |                    dd           |                    ddd          }t          d |D                       sJ t          d |D                       sJ |                    dd           t          j        t                    5 }|                    dd           d d d            n# 1 swxY w Y   | 	                    |dg           d S )Nr   r  r  r&  r  r  r  r  r  z	channel-2r  r  Tra   c              3  B   K   | ]}|j         d k    o
|j        dk    V  dS r/  r  r0  s     r   r   z:SolverTests.test_unsat_channel_priority.<locals>.<genexpr>
  4      IIA16S=7QY%%7IIIIIIr   c              3  B   K   | ]}|j         d k    o
|j        dk    V  dS r4  r  r0  s     r   r   z:SolverTests.test_unsat_channel_priority.<locals>.<genexpr>  r  r   r  c              3  B   K   | ]}|j         d k    o
|j        dk    V  dS r6  r  r0  s     r   r   z:SolverTests.test_unsat_channel_priority.<locals>.<genexpr>  r  r   c              3  B   K   | ]}|j         d k    o
|j        dk    V  dS r9  r  r0  s     r   r   z:SolverTests.test_unsat_channel_priority.<locals>.<genexpr>  r  r   r	  )
rK   r   r%   r  rf   r;  r   r   r   r   )rL   r  r   r   r   s        r   test_unsat_channel_priorityz'SolverTests.test_unsat_channel_priority  s   
  N  
 N#  
 N  *
+&$ N  
 N#  
 N   N  *
+&* 	3V<<<++c3+66IIIIIIIIIIIIIIIIIIII3W===++c3+66IIIIIIIIIIIIIIIIIIII3V<<<]-.. 	"(KKS!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"!!(-I,JKKKKKs   .GGGzWThere is some weird global state making this test fail when the whole test suite is runc                   t          d          |_        |                    ddd          }t          |          h dk    sJ ||_        |                    d          h dk    sJ |                    d          h d	k    sJ d S )
Nr   r{  r   Tra   >   test::pandas-0.11.0-np17py27_1r   r   r   r   r   r   r   r   r  r  r   r  r   r   >   r   r   r   r   r   r   r   r   r  r  r   r  r   r   r   >   r   r   r   r   r   r   r   r   r  r  r  r   )r   rK   rf   r/   rJ   rZ   r   s      r   test_removezSolverTests.test_remove  s    
 +1--++h+EE!'** /
 /
 /
 
 
 
 
$ ")zz(## (
 (
 (
 
 
 
 
  zz'"" '
 '
 '
 
 
 
 
 
 
r   c           
        |xj         t          j        dd          t          j        dd          t          j        ddddg          t          j        ddd	          gz  c_         |                    dd          d
dhk    sJ d S )NrZ  r"   r>   rm  r"   r?   rn  r  )r"   r#   r?   r8   r  )r"   r#   r?   ztest::package2-2.0-0test::feature-1.0-0rK   r   r%   rf   r   s     r   test_surplus_features_1z#SolverTests.test_surplus_features_1Q  s    N(   N"   N"#	   N"  
 	
* {{:y11"!6
 
 
 
 
 
 
r   c                   |xj         t          j        dd          t          j        dd          t          j        dddddg          t          j        ddd	d
          gz  c_         |                    dd          ddhk    sJ d S )NrZ  r  rm  r  rn  r  r   )r"   r#   r7   r?   r8   r   )r"   r#   r7   r?   ztest::package2-1.0-0r  r  r   s     r   test_surplus_features_2z#SolverTests.test_surplus_features_2l  s    N(   N"   N"#   N"	  !
 	
. {{:y11"!6
 
 
 
 
 
 
r   c                   |xj         t          j        ddddg          t          j        dddg          t          j        ddg          t          j        d	          gz  c_         |                    d          h d
k    sJ d S )Nr   r  r  zc==2r&  r  r  r  r2   >   test::a-2.0-0test::b-1.0-0test::c-1.0-0r  r   s     r   >test_get_reduced_index_broadening_with_unsatisfiable_early_depzJSolverTests.test_get_reduced_index_broadening_with_unsatisfiable_early_dep  s    
 	N
 f   N  
 N   N  '
 	
. {{3 $
 $
 $
 
 
 
 
 
 
r   c           
        |xj         t          j        ddddg          t          j        dddg          t          j        ddg          t          j        dd	
          t          j        dd
          gz  c_         |                    dd          D ]S}|j        dk    r|j        dk    sJ d|j                     +|j        dk    r|j        dk    sJ d|j                     Td S )Ntopr  middlezbottom==1.5r&  r  bottomr  z1.5r  z2.5Tra   z"top version should be 2.0, but is z%bottom version should be 2.5, but is )rK   r   r%   rf   r"   r#   )rL   r   r%   s      r   4test_get_reduced_index_broadening_preferred_solutionz@SolverTests.test_get_reduced_index_broadening_preferred_solution  sU    	N "=1   N!
  
 N!
   N   N  -
 	
6 kk%$k77 	L 	LF{e##Ne+++HHH ,+++((Ne+++K6>KK ,++	L 	Lr   c                
   |xj         t          j        dd          t          j        d          gz  c_         |                    dd          }t	          |          dk    sJ |d         j        t          j        k    sJ d S )	Nrm  noarch)r"   r   r2   Tra   r   r   )rK   r   r%   rf   r   r   r   r   s      r   4test_arch_preferred_over_noarch_when_otherwise_equalz@SolverTests.test_arch_preferred_over_noarch_when_otherwise_equal  s    N   N  
 	
 ++j4+887||q    qz GN222222r   c                    |xj         t          j        ddd          t          j        dd          gz  c_         |                    dd          }t	          |          d	k    sJ |d
         j        dk    sJ d S )Nrm  r  r  r"   r#   r   r  r  Tra   r   r   rK   r   r%   rf   r   r   r   s      r   4test_noarch_preferred_over_arch_when_version_greaterz@SolverTests.test_noarch_preferred_over_arch_when_version_greater  s    N  
 N  

 
	
 ++j4+887||q    qz H,,,,,,r   c                   |xj         t          j        dd          t          j        ddd          t          j        ddg          gz  c_         |                    dd	
          }|                     |d          }|j        dk    sJ d S )Nrm  r  r  r  r  r  rn  r  Tra   r2   rK   r   r%   rf   r   r   rL   r   r   rm  s       r   8test_noarch_preferred_over_arch_when_version_greater_depzDSolverTests.test_noarch_preferred_over_arch_when_version_greater_dep  s    N   N  
 N#  
 	
 ++j4+88,,W:,FF(******r   c                    |xj         t          j        dd          t          j        ddd          gz  c_         |                    dd          }t	          |          dk    sJ |d         j        dk    sJ d S )	Nrm  r   r"   r7   r   r  r"   r7   r   Tra   r  r   s      r   2test_noarch_preferred_over_arch_when_build_greaterz>SolverTests.test_noarch_preferred_over_arch_when_build_greater  s    N   N  

 
	
 ++j4+887||q    qz H,,,,,,r   c                   |xj         t          j        dd          t          j        ddd          t          j        ddg          gz  c_         |                    dd	
          }|                     |d          }|j        dk    sJ d S )Nrm  r   r  r   r  r  rn  r  Tra   r2   r  r  s       r   6test_noarch_preferred_over_arch_when_build_greater_depzBSolverTests.test_noarch_preferred_over_arch_when_build_greater_dep  s    N   N  
 N#  
 	
 ++j4+88,,W:,FF(******r   N)r   r   )7r   r   r   r   r   rN   r   r   fixturer   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r(  r,  r=  r?  rA  rD  rL  rX  r[  rk  ro  rr  r  markxfailr  r  r  r  r  r  r  r  r  r  r  r  r)   r   r   r   r      s       HH" " " X"   X V^D!!!$ $ "!$
 V^    
	= 	= 	=  & & &
 
 
"
 
 
(
 
 

 
 
O O O": : :!
 !
 !
F  >
 
 
"4 4 4
 
 
4
 
 
4
 
 
6
 
 
,
 
 
,#
 #
 #
J
 
 
$
 
 
 % % %&6 &6 &6PI
 I
 I
V0 0 0$: : :2
 
 
"
 
 
[
 [
 [
z [WXX!
 !
 YX!
F [WXX;L ;L YX;Lz [:   3
 3
	 3
j
 
 
6
 
 
: 
  
  
D&L &L &LP3 3 3- - - + + +(- - - + + + + +r   r   )r   r6   )$r   
__future__r   r   	functoolsr|   rC   tempfiler   r   base.contextr   
core.solver   
exceptionsr	   r
   r   models.channelr   models.match_specr   models.recordsr    r   	lru_cacher   r&   r/   r4   r6   r   r  r   r   r)   r   r   <module>r     s   & % " " " " " "           ' ' ' ' ' '  " " " " " "               
 % $ $ $ $ $ ) ) ) ) ) ) * * * * * *            S S S; ; ;
8 8 8
y y y y y y y yx9 9 9 !' 6 6 6 6 6
o+ o+ o+ o+ o+ o+ o+ o+ o+ o+r   