
    si                     L   S r SSKJr  SSKrSSKrSSKrSSKrSSKJr  SSK	r	SSK
Jr  SSKJr  SSKJr  SS	KJrJrJr  SS
KJr  SSKJr  SSKJr  SSKJr  \R8                  S 5       rS rS rS r  " S S5      r!S r"\	RF                  " 5       \4SS jj5       r$ " S S5      r%g)zHelpers for testing the solver.    )annotationsNTemporaryDirectory   )context)json)Solver)PackagesNotFoundErrorResolvePackageNotFoundUnsatisfiableError)Channel)	MatchSpec)PackageRecord   )helpersc                    [        [        SU  35      nU" [        R                  5      u  p#[	        UR                  5       5      $ )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.13/site-packages/conda/testing/solver_helpers.pyindex_packagesr      s8     <u!56I(HE    c                    U R                   R                   SU R                   SU R                   SU R                   3$ )Nz::-channelnameversionbuild)records    r   package_stringr'   &   s7    nn!!""V[[M6>>2B!FLL>RRr   c                D    U  Vs1 s H  n[        U5      iM     sn$ s  snf )z3Transforms package container in package string set.)r'   packagesr&   s     r   package_string_setr+   *   s    19:vN6":::s   c                F    U  Vs0 s H  oR                   U_M     sn$ s  snf )z/Transforms package container into a dictionary.r#   r)   s     r   package_dictr.   /   s!    .67hFKKh777s   c                      \ rS rSrSrSr\R                  4S jrS r	SS jr
SS.S	 jrSS.S
 jr\S 5       rS rS rS rSrg)SimpleEnvironment4   zHelper environment object.)r%   build_numberdependslicensemd5r#   sha256sizer   	timestampr$   track_featuresfeaturesc                    [         R                  " U5      U l        U R                  S-  U l        U R                  S-  U l        X l        X0l        / U l        / U l        g )Nprefixchannels)	pathlibPath_path_prefix_path_channels_path_solver_classsubdirsinstalled_packagesrepo_packages)selfpathsolver_classrD   s       r   __init__SimpleEnvironment.__init__G   sS    \\$'
 JJ1"jj:5)"$ @Br   c                @   / nU R                  5         U R                  R                  5        HH  u  pEU R                  XE5        [	        [        U R                  U-  5      5      nUR                  U5        MJ     U R                  U R                  U R                  UUUS9$ )zCWrites ``repo_packages`` to the disk and creates a solver instance.)r<   rD   r=   specs_to_addspecs_to_remove)_write_installed_packages_channel_packagesitems_write_repo_packagesr   strrB   appendrC   rA   rD   )rG   addremover=   channel_namer*   r"   s          r   solverSimpleEnvironment.solverS   s    &&(&*&<&<&B&B&D"L%%l=c$"5"5"DEFGOOG$ 'E !!$$LL" " 
 	
r   Fc                d    U R                  XS9R                  5       nU(       a  U$ [        U5      $ )N)rU   rV   )rX   solve_final_stater+   )rG   rU   rV   as_specsr*   s        r   solver_transaction$SimpleEnvironment.solver_transactionc   s.    ;;3;6HHJO!(++r   r\   c                    U R                  X!S9$ )N)rU   r\   r]   rG   r\   specss      r   installSimpleEnvironment.installi   s    &&5&DDr   c                    U R                  X!S9$ )N)rV   r\   ra   rb   s      r   rV   SimpleEnvironment.removel   s    &&e&GGr   c                t    [        U R                  [        5      (       a  U R                  $ SU R                  0$ )z<Helper that unfolds the ``repo_packages`` into a dictionary.test)
isinstancerF   dictrG   s    r   rP   #SimpleEnvironment._channel_packageso   s4     d(($//%%%**++r   c                    [        U5      R                  5        VVs0 s H  u  p#X R                  ;   d  M  X#_M     nnnSU;  a  [        R                  US'   U$ s  snnf )zHTurn record into data, to be written in the JSON environment/repo files.r   )varsrQ   REPO_DATA_KEYSr   r   )rG   r&   keyvaluedatas        r   _package_dataSimpleEnvironment._package_datav   sd     #6l002
2
))) CJ2 	 

 4$^^DN
s
   AAc           	        U R                   (       d  g U R                  S-  nUR                  SSS9  U R                    H}  nXR                   SUR                   SUR
                   S3-  nU R                  U5      nUR                  R                  US'   UR                  [        R                  " U5      5        M     US-  nUR                  SR                  S	/[        [        U R                   5      Q75      5        g )
Nz
conda-metaT)exist_okparentsr    z.jsonr"   history
z==> 2000-01-01 00:00:00 <==)rE   rA   mkdirr#   r$   r%   rt   r"   
write_textr   dumpsjoinmapr'   )rG   
conda_metar&   record_pathrecord_datahistory_paths         r   rO   +SimpleEnvironment._write_installed_packages   s    &&&&5
$5--F}Afnn-=Qv||nERR  ,,V4K%+^^%8%8K	"""4::k#:; . "I-II1)@)@A	
r   c           
        [         R                  " [        5      nU H-  nU R                  U5      X4R                     UR
                  '   M/     [        U R                  5      R                  [        UR                  5       5      5      (       d   eU R                   Hn  nU R                  U-  U-  nUR                  SSS9  UR                  S5      R                  [        R                  " SU0UR!                  U0 5      S.5      5        Mp     g)z#Write packages to the channel path.T)rx   rw   zrepodata.jsonr   )infor*   N)collectionsdefaultdictrk   rt   r   fnsetrD   
issupersetkeysrB   r{   joinpathr|   r   r}   get)rG   rW   r*   package_datar&   r   subdir_paths          r   rR   &SimpleEnvironment._write_repo_packages   s     #..t4F595G5G5OL'		2  4<< ++C0A0A0C,DEEEEllF--<vEKdT:  1<<

 %f! %1$4$4VR$@		 #r   )rB   r@   rA   rC   rE   rF   rD   N) r   F)__name__
__module____qualname____firstlineno____doc__rp   r   rD   rJ   rX   r]   rd   rV   propertyrP   rt   rO   rR   __static_attributes__r   r   r   r0   r0   4   s^    $N  4;?? 
B
 , (- E ', H , ,	
0r   r0   c                     [        SS9$ Nzconda-test-repo-)r<   r   r   r   r   empty_prefixr      s    %788r   c              #  n   #    [        5        n[        X5      v   S S S 5        g ! , (       d  f       g = f7fN)r   r0   )rI   r<   s     r   temp_simple_envr      s      	655 
s   5$	5
25c                  :   \ rS rSrSr\S8S j5       r\S 5       r\R                  " SS9S 5       r
\R                  " 5       S 5       rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S  r#S! r$S" r%S# r&S$ r'S% r(S& r)\RT                  RW                  S'S(9S) 5       r,\RT                  RW                  S'S(9S* 5       r-\RT                  RW                  S+S(9S, 5       r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6r8g7)9SolverTests   z>Tests for :py:class:`conda.core.solve.Solver` implementations.c                    [         e)zClass under test.)NotImplementedErrorrl   s    r   rI   SolverTests.solver_class   s
     "!r   c                    0 $ r   r   rl   s    r   tests_to_skipSolverTests.tests_to_skip   s    	r   T)autousec                    U R                   R                  5        H7  u  p#UR                  R                  U;   d  M!  [        R
                  " U5        M9     g r   )r   rQ   noder#   pytestskip)rG   requestreason	skip_lists       r   
skip_testsSolverTests.skip_tests   s<    !%!3!3!9!9!;F||  I-F# "<r   c              #     #    [        SS9 n[        XR                  5      U l        U R                  v   S U l        S S S 5        g ! , (       d  f       g = f7fr   )r   r0   rI   env)rG   tmpdirs     r   r   SolverTests.env   s=     '9:f(1B1BCDH((NDH ;::s   
A0A	A
AAc                p   ^ U H/  m[        U4S jUR                  5        5       5      (       d  M-  Ts  $    g )Nc              3  F   >#    U  H  u  p[        TU5      U:H  v   M     g 7fr   )r   ).0rq   rr   r&   s      r   	<genexpr>3SolverTests.find_package_in_list.<locals>.<genexpr>   s     R>ZS763'50>s   !)allrQ   )rG   r*   kwargsr&   s      @r   find_package_in_list SolverTests.find_package_in_list   s)    FR6<<>RRR r   c                   [        U R                  R                  [        5      (       a.  SU;  a  [	        S5      eU R                  R                  US      nOU R                  R                  nU R
                  " U40 UD6$ )Nr"   zDRepo has multiple channels, the `channel` argument must be specified)rj   r   rF   rk   
ValueErrorr   )rG   r   r*   s      r   find_packageSolverTests.find_package   sq    dhh,,d33& Z  xx--fY.?@Hxx--H((<V<<r   c                    [        UR                  [        5      (       d   eUR                  [        L a-  [        S UR                  R
                   5       5      U:X  d   egg)zHelper to assert that a :py:class:`conda.exceptions.UnsatisfiableError`
instance as a the specified set of unsatisfiable specifications.
c              3  T   #    U  H  n[        [        [        U5      5      v   M      g 7fr   )tupler   rS   )r   entriess     r   r   3SolverTests.assert_unsatisfiable.<locals>.<genexpr>   s#      <XE#c7+,,<Xs   &(N)
issubclasstyper   sortedrr   unsatisfiable)rG   exc_infor   s      r   assert_unsatisfiable SolverTests.assert_unsatisfiable   sa     (--);<<<<==.. <DNN<X<X   /r   c                `    [        S5      Ul        UR                  5       [        5       :X  d   eg )Nr   )r   rF   rd   r   rG   r   s     r   
test_emptySolverTests.test_empty   s%    *1-{{}%%%r   c                Z    [        S5      Ul        UR                  SSS5      1 Sk:X  d   eg )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   rF   rd   r   s     r   test_iopro_mklSolverTests.test_iopro_mkl   s4    *1-{{<E J
 
 	
 
r   c           	     j    [        S5      Ul        UR                  SSS[        SS95      1 Sk:X  d   eg )Nr   r   r   r   mklr9   >   r   r   r   test::mkl-rt-11.0-p0r   r   r   r   r   r   test::numpy-1.7.1-py27_p0r   r   r   rF   rd   r   r   s     r   test_iopro_nomklSolverTests.test_iopro_nomkl  s>    *1-{{-yPU7V


 	
 
r   c                    [        S5      Ul        UR                  S5      UR                  S[        SS95      :X  d   eg )Nr   r   zmkl 11*r   r   r   s     r   test_mklSolverTests.test_mkl  s?    *1-{{5!S[[y6&
 
 	
 
r   c                    [        S5      Ul        UR                  S5      UR                  S[        SS95      :X  d   eg )Nr   
accelerater   r   r   r   s     r   test_accelerateSolverTests.test_accelerate  s?    *1-{{<(CKK)59-
 
 	
 
r   c           	         [        S5      Ul        UR                  SSS[        SS9SS9nU H'  nUR                  S	;   d  M  SUR
                  ;   a  M'   e   S
[        U5      ;   d   eS[        U5      ;   d   eg )Nr   scipyr   r   r   r   Tr_   )numpyr   r   ztest::scipy-0.12.0-np17py27_p0)r   rF   rd   r   r#   r:   r+   )rG   r   recordsr&   s       r   test_scipy_mklSolverTests.test_scipy_mkl%  s    *1-++U+  
 F{{00///  +.@.IIII/3Eg3NNNNr   c                |    [        S5      Ul        UR                  SSS5      n[        U5      S:X  d   eSU;   d   eg )Nr   zanaconda 1.5.0r   r   k   test::scipy-0.12.0-np17py27_0)r   rF   rd   lenrG   r   r   s      r   test_anaconda_nomklSolverTests.test_anaconda_nomkl6  sB    *1-++.|L7|s""".'999r   c           	         [        S5      Ul        UR                  SSS5      1 Sk:X  d   eUR                  SSS[        SS95      1 Sk:X  d   eg )	Nr   iopror   
numpy 1.5*>   r   r   r   r   r   r   r   r   r   test::numpy-1.5.1-py27_4test::iopro-1.4.3-np15py27_p0r   r   r   >   r   r   r   r   r   r   r   r   r   r   test::numpy-1.5.1-py27_p4r  r   r   r   s     r   test_pseudo_booleanSolverTests.test_pseudo_boolean<  sd    *1-{{7M<@ E
 
 	
 
 {{]L)52Q


 	
 
r   c                   [        S5      Ul        [        R                  " [        5       nUR                  SS5        S S S 5        U R                  WSS/5        [        R                  " [        5       nUR                  SS5        S S S 5        U R                  U/ SQ5        [        R                  " [        [        45       nUR                  SS5        S S S 5        UR                  [        L a5  [        [        [        UR                  R                  5      5      S	/:X  d   eg g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ny= f)
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   rF   r   raisesr   rd   r   r   r
   r   r   r   rS   rr   bad_depsrG   r   r   s      r   test_unsat_from_r1SolverTests.test_unsat_from_r1_  s   *1-]]-.(KK&67 /!!C	
 ]]-.(KKk2 /!!	
 ]]24IJKxKKl3 L==22#c8>>#:#:;<.A    3/ /. /. LKs#   D'4D8E	'
D58
E	
Ec                j   [         R                  " SS/S9[         R                  " SS/S9[         R                  " SSS9[         R                  " SS	S9/Ul        [        R                  " [
        5       nUR                  SS5        S S S 5        U R                  WS
S/5        g ! , (       d  f       N#= f)Nac >=1,<2r#   r3   bc >=2,<3c1.0r#   r$   2.0)r  c[version='>=1,<2']r  c[version='>=2,<3']r   r&   rF   r   r  r   rd   r   r  s      r   test_unsat_simpleSolverTests.test_unsat_simple~  s    NNj\:NNj\:NNU3NNU3	
 ]]-.(KKS! /!!,,	
 /.s   4B$$
B2c                f    [        S5      Ul        UR                  S5      nSU;   d   eSU;   d   eg )Nr   zanaconda 1.4.0ztest::anaconda-1.4.0-np17py33_0ztest::freetype-2.4.10-0r   r   s      r   test_get_distsSolverTests.test_get_dists  s:    *1-++./0G;;;(G333r   c           	        [         R                  " SSS/S9[         R                  " SS/S9[         R                  " SSS9[         R                  " SS	S9[         R                  " SS
/S9/Ul        [        R                  " [
        5       nUR                  SSS5        S S S 5        U R                  W/ SQ5        g ! , (       d  f       N#= f)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_1'SolverTests.test_unsat_shortest_chain_1  s    NNc:->?NNcU3NN NN NNk];
 ]]-.(KK	3, /!!	
 /.   
B;;
C	c           	        [         R                  " SSS/S9[         R                  " SS/S9[         R                  " SSS9[         R                  " SS	S9[         R                  " SS
/S9/Ul        [        R                  " [
        5       nUR                  SSS5        S S S 5        U R                  W/ SQ5        g ! , (       d  f       N#= f)Nr  r)  r-  r  r  r  r+  r  r,  r*  r.  ))r  r0  )r  r)  r/  r1  r2  r"  r  s      r   test_unsat_shortest_chain_2'SolverTests.test_unsat_shortest_chain_2  s    NNc;-?@NNcU3NN NN NNj\:
 ]]-.(KK	3, /!!	
 /.r5  c                   [         R                  " SSS/S9[         R                  " SS/S9[         R                  " SSS9[         R                  " SS	S9[         R                  " S
S/S9[         R                  " SS/S9[         R                  " SS
/S9/Ul        [        R                  " [
        5       nUR                  SSS5        S S S 5        U R                  W/ SQ5        g ! , (       d  f       N#= f)Nr  fer  r  r  r+  r  r,  r)  r-  r*  r.  ))r  r;  r/  r1  r2  r"  r  s      r   test_unsat_shortest_chain_3'SolverTests.test_unsat_shortest_chain_3  s    NNc3Z8NNcU3NN NN NNk];NNj\:NNcU3
 ]]-.(KK	3, /!!	
 /.s   4C%%
C3c           
        [         R                  " SS/S9[         R                  " SS9[         R                  " SS9[         R                  " SSSS/S	9[         R                  " SS
SS/S	9/Ul        [        R                  " [
        5       nUR                  SS5        S S S 5        U R                  WSS/5        g ! , (       d  f       N#= f)Nr  z	py =3.7.1r  py_req_1r-   py_req_2pyz3.7.1r#   r$   r3   z3.6.1py=3.6.1)r  zpy=3.7.1)rC  r"  r  s      r   test_unsat_shortest_chain_4'SolverTests.test_unsat_shortest_chain_4  s    NNk];NN
+NN
+NN7Z4L NN7Z4L

 ]]-.(KKZ( /!!!	
 /.s   B;;
C	c                   [         R                  " SS/S9[         R                  " SS/S9[         R                  " SSS/S9[         R                  " S	SS
9[         R                  " SS/S9[         R                  " SSS/S9[         R                  " S	SS
9/Ul        [        R                  " [
        5       nUR                  SS5        S S S 5        U R                  WSS/5        g ! , (       d  f       N#= f)Nr  r  r  r  r  r  d >=1,<2rB  r)  r  r;  r  r  d >=2,<3)r  r  r  )r;  r!  r"  r  s      r   test_unsat_chainSolverTests.test_unsat_chain  s     NNcU3NNj\:NNUZLINNU3NNj\:NNUZLINNU3
 ]]-.(KKS! /!!1,	
 /.s   5C%%
C3c                   [         R                  " SSS/S9[         R                  " SSS/S9[         R                  " SSS/S9[         R                  " SSS/S9[         R                  " S	SS/S9[         R                  " S	SS/S9[         R                  " S
SS9[         R                  " S
SS9[         R                  " S
SS9/	Ul        UR                  SSSS9n[	        S U 5       5      (       d   e[	        S U 5       5      (       d   eUR                  SS	SS9n[	        S U 5       5      (       d   e[	        S U 5       5      (       d   eUR                  SS	SS9n[	        S U 5       5      (       d   e[	        S U 5       5      (       d   e[
        R                  " [        5       nUR                  SSS	5        S S S 5        U R                  W/ SQ5        g ! , (       d  f       N#= f)Nr  r  rG  rB  r  rH  r  zd >=3,<4r  r)  r  z3.0Tr_   c              3  j   #    U  H)  oR                   S :H  =(       a    UR                  S:H  v   M+     g7fr  r  Nr  r   ks     r   r   ;SolverTests.test_unsat_any_two_not_three.<locals>.<genexpr>  '     KA66S=7QYY%%77   13c              3  j   #    U  H)  oR                   S :H  =(       a    UR                  S:H  v   M+     g7fr  r  Nr  rN  s     r   r   rP     rQ  rR  c              3  j   #    U  H)  oR                   S :H  =(       a    UR                  S:H  v   M+     g7fr  r  Nr  rN  s     r   r   rP  #  rQ  rR  c              3  j   #    U  H)  oR                   S :H  =(       a    UR                  S:H  v   M+     g7f)r  r  Nr  rN  s     r   r   rP  $  rQ  rR  c              3  j   #    U  H)  oR                   S :H  =(       a    UR                  S:H  v   M+     g7fr  r  Nr  rN  s     r   r   rP  '  rQ  rR  c              3  j   #    U  H)  oR                   S :H  =(       a    UR                  S:H  v   M+     g7f)r  r  Nr  rN  s     r   r   rP  (  rQ  rR  ))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&   rF   rd   anyr   r  r   r   )rG   r   	installedr   s       r   test_unsat_any_two_not_three(SolverTests.test_unsat_any_two_not_three  s    NNUZLINNUZLINNUZLINNUZLINNUZLINNUZLINNU3NNU3NNU3

 KKS4K8	KKKKKKKKKKKKKKS4K8	KKKKKKKKKKKKKKS4K8	KKKKKKKKKKKK]]-.(KKS#& /!!	
 /.s   +G
G*c           	        [         R                  " SSS/S9[         R                  " SS/S9[         R                  " SS/S9[         R                  " SSS	9[         R                  " SS
S	9/Ul        [        R                  " [
        5       nUR                  S5        S S S 5        U R                  WSS/5        g ! , (       d  f       N#= f)Nr  r  r  r  rG  rH  r)  r  r  r  )r  zd[version='>=1,<2'])r  zd[version='>=2,<3']r"  r  s      r   test_unsat_expand_single$SolverTests.test_unsat_expand_single5  s    NNc3Z8NNj\:NNj\:NNU3NNU3
 ]]-.(KK /!!,,	
 /.s   
B99
Cc                D   [         R                  " SSS/S9[         R                  " SS/S9[         R                  " SSS9/Ul        [        R                  " [
        5       nUR                  SS5        S S S 5        U R                  WSS	/5        g ! , (       d  f       N#= f)
Nr  r  r  r  r  r  r  )r  r  )r  r"  r  s      r   test_unsat_missing_dep"SolverTests.test_unsat_missing_depG  s    NNc3Z8NNj\:NNU3

 ]]-.(KKS! /!!	
 /.s   !B
Bc                0   [         R                  " [        [        45         UR	                  S5        S S S 5        [         R                  " [        [        45         UR	                  S5        S S S 5        g ! , (       d  f       NI= f! , (       d  f       g = f)Nnotarealpackage 2.0*z	numpy 1.5)r   r  r   r
   rd   r   s     r   test_nonexistentSolverTests.test_nonexistentW  sa    ]]24IJKKK./ L]]24IJKKK$ LK LKKKs   A6B6
B
Bc           
        [        S5      [        R                  " SSSSS/S9[        R                  " SSSSS	/S9/-   Ul        UR	                  SS5      nS
U;   d   eSU;   d   eUR	                  S	S5      nSU;   d   eSU;   d   eUR                  " S/UR	                  SSS9Q76 U:X  d   eUR                  " S/UR	                  S	SS9Q76 U:X  d   eUR	                  S5      U:X  d   eg )Nr   	mypackager  hash12_0zlibpng 1.2.*)r#   r$   r%   r8   r3   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_0Tr_   r   r   r&   rF   rd   )rG   r   
records_12
records_15s       r   test_timestamps_and_deps$SolverTests.test_timestamps_and_deps]  s.   *1-NN  '( NN  '(1
 
" [[=
&*444-;;;[[=
&*444-;;;
 KKQckk.4k&PQ	
 KKQckk.4k&PQ	

 {{;':555r   c           
        [        S5      [        R                  " SS/ SQS9[        R                  " SSSS/S9[        R                  " S	SSS
/S9[        R                  " S	SSS/S9/-   Ul        UR	                  S5      1 Sk:X  d   eUR	                  S5      1 Sk:X  d   eUR	                  S	5      1 Sk:X  d   e[
        R                  " S5        [        S5      [        R                  " SSSS/S9[        R                  " SS/ SQS9[        R                  " S	SSS/S9[        R                  " S	SSS/S9/-   Ul        UR	                  S5      1 Sk:X  d   e[        R                  " [        [        45         UR	                  S
5        S S S 5        UR	                  S5      1 Sk:X  d   eUR	                  S	5      1 Sk:X  d   eg ! , (       d  f       NA= f)Nr   rj  r  )r  python 3.3*rf  rB  z1.1r  rs  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   ru  r   rv  r   r   rw  rx  test::anotherpackage-1.0-0ry  >   r   r   r   ru  r   rv  r   r   rw  rx  test::anotherpackage-2.0-0ry  zmypackage 1.0>   r   r   r   ru  r   test::mypackage-1.0-0r   r   rw  rx  ry  >   r   r   r   ru  r   r|  r   r   rw  rx  rz  ry  >   r   r   r   ru  r   r|  r   r   rw  rx  r{  ry  )r   r   r&   rF   rd   timesleepr   r  r   r   r   s     r   test_nonexistent_deps!SolverTests.test_nonexistent_deps  s   *1-NN G
 NN /
 NN%1
 NN%-!1
 
. {{;' ,
 
 	
 
 {{/0 5
 
 	
 
 {{+, 1
 
 	
 
  	

1 +1-NN /
 NN G
 NN%1
 NN%-!1
 
. {{;' ,
 
 	
 
 ]]24FGHKK( I{{/0 5
 
 	
 
" {{+, 1
 
 	
 
' IHs   9G
Gc           	         [        S5      [        R                  " SSS/SS9[        R                  " SSS/SS9/-   Ul        UR	                  SS5        g )	Nr   rj  r  rs  feature)r#   r$   r3   r:   )r#   r$   r3   r9   zfeature 1.0rm  r   s     r   !test_install_package_with_feature-SolverTests.test_install_package_with_feature  s_    *1-NN &"	 NN&(	1
 
 	K/r   c                  ^ [        S5      m[        U4S j[        S5       5       5      n[        S UR                   5       5      n[
        R                  " USUR                  R                  SS5      SUUR                  R                  SS5      UR                  R                  SS5      S	9n[        S5      U/-   Ul        UR                  S
5      nSU;  d   eSU;   d   eg )Nz#channel-1::scipy==0.11.0=np17py33_3c              3  X   >#    U  H  nTR                  U5      (       d  M  Uv   M!     g 7fr   )match)r   precgood_rec_matchs     r   r   CSolverTests.test_unintentional_feature_downgrade.<locals>.<genexpr>+  s$      
.T.2F2Ft2LDD.s   *	*r   c              3  T   #    U  H  oR                  S 5      (       a  M  Uv   M      g7f)r   N)
startswith)r   r)  s     r   r   r  .  s     R$4qLL<Q$4s   (	(ri   _3_x0r   )r"   r%   r2   r3   r   urlzscipy 0.11.0ztest::scipy-0.11.0-np17py33_x0ztest::scipy-0.11.0-np17py33_3)r   nextr   r   r3   r   from_objectsr%   replacer   r  rF   rd   )rG   r   good_recr  bad_recr   r  s         @r   $test_unintentional_feature_downgrade0SolverTests.test_unintentional_feature_downgrade%  s    
 ##HI 
+A.
 
 RH$4$4RR,,..((u5{{""4/$$T51
 +1-	9++n-/w>>>.'999r   c                    [        S5      [        R                  " SS/S9[        R                  " SS/S9/-   Ul        UR	                  SS5      UR	                  S5      s=:X  a  UR	                  S5      :X  d    e   eg )Nr   package1package2r  rm  r   s     r   test_circular_dependencies&SolverTests.test_circular_dependencies>  s    *1-NN# NN#	1
 	
 KK
J/{{:&'{{:&'	
'	
'r   c                X    [        S5      Ul        UR                  SS5      1 Sk:X  d   eg )Nr   z
pytz 2012dr  >
   r   r   r   ru  r   r   r   rw  test::pytz-2012d-py33_0ry  r   r   s     r   test_irrational_version#SolverTests.test_irrational_versionO  s1    *1-{{<5 :
 
 	
 
r   c                   [        S5      Ul        UR                  SSS5      1 Sk:X  d   eUR                  SSS[        SS95      1 Sk:X  d   eU=R                  [        R
                  " S	S
S/ SQS9[        R
                  " SSSSSS/SS9/-  sl        UR                  SS5      1 Sk:X  d   eUR                  SS[        SS95      1 Sk:X  d   eg )Nr   zpython 2.6*r  zscipy 0.11*>   r   r   r   test::python-2.6.8-6r   r   r   test::pip-1.3.1-py26_1test::numpy-1.6.2-py26_4test::scipy-0.11.0-np16py26_3test::distribute-0.6.36-py26_1r   r   >   r   r   r   r   r  r   r   r   r  test::numpy-1.6.2-py26_p4r  test::scipy-0.11.0-np16py26_p3pandasz0.12.0
np16py27_0)dateutilr  r   pytz)r#   r$   r%   r3   r   z1.6.2py27_p5r   zmkl-rt 11.0z
python 2.7)r#   r$   r%   r2   r3   r:   zpandas 0.12.0 np16py27_0r   >   r   r   r   r   r   r   r   r   test::six-1.3.0-py27_0test::pytz-2013b-py27_0test::numpy-1.6.2-py27_4test::dateutil-2.1-py27_1r   test::pandas-0.12.0-np16py27_0>   r   r   r   r   r   r   r   r   r   r  r  r  test::numpy-1.6.2-py27_p4r   r  )r   rF   rd   r   r   r&   r   s     r   test_no_featuresSolverTests.test_no_features^  s   *1-{{=,F K
 
 	
 
 {{<	QV8W


 	
 
" 	NN "	
 NN!  

 	
0 {{5}E J
 
 	
 
  {{&yPU7V


 	
 
r   z7CONDA_CHANNEL_PRIORITY does not seem to have any effect)r   c                $   0 Ul         / UR                   S'   [        S5      UR                   S'   U R                  SSSSS9nUR                   S   R                  U5        UR	                  SS	5        S
UR                  SSS5      ;   d   eUR	                  SS5        SUR                  SSS5      ;   d   e[        [        UR                   R                  5       5      5      Ul         UR	                  SS	5        SUR                  SSS5      ;   d   eg )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)	rF   r   r   rT   setenvrd   rk   reversedrQ   )rG   monkeypatchr   pandas_0s       r   test_channel_priority_1#SolverTests.test_channel_priority_1  s3   
 )++&)7):+&$$	 % 
 	+&--h7 	3V<4m\9
 
 	
 
 	3W=4m\9
 
 	
 
 !#*;*;*A*A*C!DE3V<4m\9
 
 	
 
r   c                   0 Ul         [        R                  " SSS/S9[        R                  " SSS/S9[        R                  " SSS9/UR                   S'   [        R                  " SS	S/S9[        R                  " SS	S/S9[        R                  " SSS9[        R                  " SS	S9/UR                   S
'   UR                  SS5        UR	                  SSSS9n[        S U 5       5      (       d   e[        S U 5       5      (       d   eUR                  SS5        UR	                  SSSS9n[        S U 5       5      (       d   e[        S U 5       5      (       d   eUR                  SS5        [        R                  " [        5       nUR	                  SS5        S S S 5        U R                  WS/5        g ! , (       d  f       N"= f)Nr  r  r  rB  r  r  r  r  r  z	channel-2r  r  Tr_   c              3  j   #    U  H)  oR                   S :H  =(       a    UR                  S:H  v   M+     g7frM  r  rN  s     r   r   :SolverTests.test_unsat_channel_priority.<locals>.<genexpr>  '     IA66S=7QYY%%77rR  c              3  j   #    U  H)  oR                   S :H  =(       a    UR                  S:H  v   M+     g7frT  r  rN  s     r   r   r    r  rR  r  c              3  j   #    U  H)  oR                   S :H  =(       a    UR                  S:H  v   M+     g7frV  r  rN  s     r   r   r    r  rR  c              3  j   #    U  H)  oR                   S :H  =(       a    UR                  S:H  v   M+     g7frY  r  rN  s     r   r   r    r  rR  r   )
rF   r   r&   r  rd   r[  r   r  r   r   )rG   r  r   r   r   s        r   test_unsat_channel_priority'SolverTests.test_unsat_channel_priority  s   
  NN
 NN#
 NN*
+&$ NN
 NN#
 NN NN*
+&* 	3V<++c3+6IIIIIIIIIIII3W=++c3+6IIIIIIIIIIII3V<]]-.(KKS! /!!(-I,JK /.s   F??
GzWThere is some weird global state making this test fail when the whole test suite is runc                    [        S5      Ul        UR                  SSSS9n[        U5      1 Sk:X  d   eX!l        UR                  S5      1 Sk:X  d   eUR                  S5      1 S	k:X  d   eg )
Nr   r  r   Tr_   >   r   r   r   r   r   r   r   r   r  r  r   r  r   r   test::pandas-0.11.0-np17py27_1>   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   rF   rd   r+   rE   rV   r   s      r   test_removeSolverTests.test_remove  s    
 +1-++h+E!'* /
 
 	
 
$ ")zz(# (
 
 	
 
  zz'" '
 
 	
 
r   c                
   U=R                   [        R                  " SSS9[        R                  " SSS9[        R                  " SSSS/S9[        R                  " SSSS	9/-  sl         UR                  SS5      S
S1:X  d   eg )Nr  r#   r9   r  r#   r:   r  r  )r#   r$   r:   r3   r  )r#   r$   r:   ztest::package2-2.0-0test::feature-1.0-0rF   r   r&   rd   r   s     r   test_surplus_features_1#SolverTests.test_surplus_features_1V  s    NN( NN" NN"#	 NN"
 	
* {{:y1"!6
 
 	
 
r   c                   U=R                   [        R                  " SSS9[        R                  " SSS9[        R                  " SSSSS/S9[        R                  " SSS	SS
9/-  sl         UR                  SS5      SS1:X  d   eg )Nr  r  r  r  r  r  r   )r#   r$   r2   r:   r3   r   )r#   r$   r2   r:   ztest::package2-1.0-0r  r  r   s     r   test_surplus_features_2#SolverTests.test_surplus_features_2q  s    NN( NN" NN"# NN"	!
 	
. {{:y1"!6
 
 	
 
r   c           	     
   U=R                   [        R                  " SSSS/S9[        R                  " SSS/S9[        R                  " SS/S9[        R                  " SS	9/-  sl         UR                  S5      1 S
k:X  d   eg )Nr  r  r  zc==2rB  r  r  r  r-   >   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_depJSolverTests.test_get_reduced_index_broadening_with_unsatisfiable_early_dep  s    
 	NN
 f NN
 NN NN'
 	
. {{3 $
 
 	
 
r   c                   U=R                   [        R                  " SSSS/S9[        R                  " SSS/S9[        R                  " SS/S9[        R                  " SS	S
9[        R                  " SSS
9/-  sl         UR                  SSS9 Ho  nUR                  S:X  a&  UR
                  S:X  d   SUR
                   35       eM9  UR                  S:X  d  MK  UR
                  S:X  a  M]   SUR
                   35       e   g )Ntopr  middlezbottom==1.5rB  r  bottomr  z1.5r  z2.5Tr_   z"top version should be 2.0, but is z%bottom version should be 2.5, but is )rF   r   r&   rd   r#   r$   )rG   r   r&   s      r   4test_get_reduced_index_broadening_preferred_solution@SolverTests.test_get_reduced_index_broadening_preferred_solution  s    	NN "=1 NN!

 NN!
 NN NN-
 	
6 kk%$k7F{{e#~~. 88HI. (~~. ;FNN;KL. 8r   c                   U=R                   [        R                  " SSS9[        R                  " SS9/-  sl         UR                  SSS9n[	        U5      S:X  d   eUS   R
                  [        R
                  :X  d   eg )	Nr  noarch)r#   r   r-   Tr_   r   r   )rF   r   r&   rd   r   r   r   r   s      r   4test_arch_preferred_over_noarch_when_otherwise_equal@SolverTests.test_arch_preferred_over_noarch_when_otherwise_equal  s}    NN NN
 	
 ++j4+87|q   qz  GNN222r   c                    U=R                   [        R                  " SSSS9[        R                  " SSS9/-  sl         UR                  SSS9n[	        U5      S	:X  d   eUS
   R
                  S:X  d   eg )Nr  r  r  r#   r$   r   r  r  Tr_   r   r   rF   r   r&   rd   r   r   r   s      r   4test_noarch_preferred_over_arch_when_version_greater@SolverTests.test_noarch_preferred_over_arch_when_version_greater  s    NN
 NN

 
	
 ++j4+87|q   qz  H,,,r   c           	        U=R                   [        R                  " SSS9[        R                  " SSSS9[        R                  " SS/S9/-  sl         UR                  SS	S
9nU R	                  USS9nUR
                  S:X  d   eg )Nr  r  r  r  r  r  r  r  Tr_   r-   rF   r   r&   rd   r   r   rG   r   r   r  s       r   8test_noarch_preferred_over_arch_when_version_greater_depDSolverTests.test_noarch_preferred_over_arch_when_version_greater_dep  s    NN NN
 NN#
 	
 ++j4+8,,W:,F(***r   c           	         U=R                   [        R                  " SSS9[        R                  " SSSS9/-  sl         UR                  SSS9n[	        U5      S:X  d   eUS   R
                  S:X  d   eg )	Nr  r   r#   r2   r   r  r#   r2   r   Tr_   r  r   s      r   2test_noarch_preferred_over_arch_when_build_greater>SolverTests.test_noarch_preferred_over_arch_when_build_greater
  s    NN NN

 
	
 ++j4+87|q   qz  H,,,r   c           	        U=R                   [        R                  " SSS9[        R                  " SSSS9[        R                  " SS/S9/-  sl         UR                  SS	S
9nU R	                  USS9nUR
                  S:X  d   eg )Nr  r   r  r   r  r  r  r  Tr_   r-   r  r  s       r   6test_noarch_preferred_over_arch_when_build_greater_depBSolverTests.test_noarch_preferred_over_arch_when_build_greater_dep  s    NN NN
 NN#
 	
 ++j4+8,,W:,F(***r   )r   N)returnztype[Solver])9r   r   r   r   r   r   rI   r   r   fixturer   r   r   r   r   r   r   r   r   r   r   r  r	  r  r#  r&  r3  r7  r<  rD  rI  r]  r`  rc  rg  rp  r  r  r  r  r  r  markxfailr  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r      s   H" "   ^^D!$ "$
 ^^ 
	=&
"
(

O":!
F>
"4
4
4
6
,
,#
J
$
 %&6PL
\0$:2
"
[
z [[WX!
 Y!
F [[WX;L Y;Lz [[:  3
	3
j
6
: 
D&P3- +(- +r   r   )r  r0   )&r   
__future__r   r   	functoolsr>   r}  tempfiler   r   base.contextr   common.serializer   
core.solver	   
exceptionsr
   r   r   models.channelr   models.match_specr   models.recordsr    r   cacher   r'   r+   r.   r0   r   r  r   r   r   r   r   <module>r
     s    & "     '  " #  
 % ) *     S;
8
y yx9 !' 6 6
r+ r+r   