
    X-Ph/'                        d Z ddlmZ ddlmZmZmZ ddlmZm	Z	m
Z
mZ ddlmZmZ ddlmZ ddlmZmZmZmZ  G d d	e          Zd
S )z<Test cases for the constraint solver used in type inference.    )annotations)
SUBTYPE_OFSUPERTYPE_OF
Constraint)BoundsGraphsolve_constraintstransitive_closure)Suiteassert_equal)TypeFixture)Type	TypeVarIdTypeVarLikeTypeTypeVarTypec                      e Zd Zd5dZd5dZd5dZd5dZd5dZd5dZd5d	Z	d5d
Z
d5dZd5dZd5dZd5dZd5dZd5dZd5dZd5dZd5dZd5dZd5dZd5dZd5dZd5dZd5dZ	 	 d6d7d&Zd8d-Zd9d3Zd9d4ZdS ):
SolveSuitereturnNonec                ,    t                      | _        d S N)r   fxselfs    S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/test/testsolve.pysetUpzSolveSuite.setUp   s    --    c                4    |                      g g g            d S r   )assert_solver   s    r   test_empty_inputzSolveSuite.test_empty_input   s     "b"%%%%%r   c                   |                      | j        j        g|                     | j        j        | j        j                  g| j        j        g           |                      | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        g           d S r   )r   r   tsupcabr   s    r   !test_simple_supertype_constraintsz,SolveSuite.test_simple_supertype_constraints       479+		$')TWY(G(G'H479+VVVWYKYYtwy$'),,dii	479.M.MNWYK	
 	
 	
 	
 	
r   c                   |                      | j        j        g|                     | j        j        | j        j                  g| j        j        g           |                      | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        g           d S r   )r   r   r"   subcr$   r%   r   s    r   test_simple_subtype_constraintsz*SolveSuite.test_simple_subtype_constraints   r'   r   c                   |                      | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        g           d S r   )r   r   r"   r#   r%   r)   r$   r   s    r   test_both_kinds_of_constraintsz)SolveSuite.test_both_kinds_of_constraints#   j    WYKYYtwy$'),,dii	479.M.MNWYK	
 	
 	
 	
 	
r   c                    |                      | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  gd g           d S r   )r   r   r"   r#   r$   r)   r%   r   s    r   test_unsatisfiable_constraintsz)SolveSuite.test_unsatisfiable_constraints*   si    WYK$))DGItwy99499TWYPTPWPY;Z;Z[^b]c	
 	
 	
 	
 	
r   c                   |                      | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        g           d S r   )r   r   r"   r#   r%   r)   r   s    r   test_exactly_specified_resultz(SolveSuite.test_exactly_specified_result0   r-   r   c           	        |                      | j        j        | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        | j        j        g           d S r   )	r   r   r"   sr#   r%   cr)   r$   r   s    r   test_multiple_variablesz"SolveSuite.test_multiple_variables7   s    WY	"		$')TWY//		$')TWY//		$')TWY//
 WY	"	
 	
 	
 	
 	
r   c                   |                      | j        j        gg | j        j        g           |                      | j        j        | j        j        gg | j        j        | j        j        g           |                      | j        j        | j        j        g|                     | j        j        | j        j                  g| j        j        | j        j        g           d S r   )r   r   r"   uninhabitedr3   r#   r$   r   s    r   test_no_constraints_for_varz&SolveSuite.test_no_constraints_for_varB   s    479+rDG,?+@AAA479dgi0"tw7JDGL_6`aaaWY	"YYtwy$'),,-W $'),	
 	
 	
 	
 	
r   c                X   |                      | j        j        g|                     | j        j        | j        j                  g| j        j        g           |                      | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        g           |                      | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        g           |                      | j        j        g|                     | j        j        | j        j                  g| j        j        g           |                      | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        g           d S r   )r   r   r"   r#   anytr$   r)   r   s    r   )test_simple_constraints_with_dynamic_typez4SolveSuite.test_simple_constraints_with_dynamic_typeK   s   479+		$')TW\(J(J'Kdgl^\\\WYKYYtwy$',//479dgl1S1STW\N	
 	
 	

 	WYKYYtwy$',//479dgi1P1PQW\N	
 	
 	
 	479+		$')TW\(J(J'Kdgl^\\\WYKYYtwy$',//479dgl1S1STW\N	
 	
 	
 	
 	
r   c                   |                      | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        g           |                      | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        g           d S r   )r   r   r"   r#   r$   r)   r:   r   s    r   )test_both_normal_and_any_types_in_resultsz4SolveSuite.test_both_normal_and_any_types_in_resultsd   s     	WYKYYtwy$'),,dii	47<.P.PQW\N	
 	
 	
 	WYKYYtwy$',//479dgi1P1PQW\N	
 	
 	
 	
 	
r   c                    |                      | j        j        | j        j        gg | j        j        | j        j        gd           d S NTallow_polymorphic)r   r   r"   ur7   r   s    r   test_poly_no_constraintsz#SolveSuite.test_poly_no_constraintss   sQ    WY	"W $'"56"	 	 	
 	
 	
 	
 	
r   c                    |                      | j        j        | j        j        g|                     | j        j        | j        j                  g| j        j        | j        j        g| j        j        gd           d S r?   )r   r   r"   rB   r)   r$   r   s    r   test_poly_trivial_freez!SolveSuite.test_poly_trivial_free{   q    WY	"YYtwy$'),,-WY	"WYK" 	 	
 	
 	
 	
 	
r   c                    |                      | j        j        | j        j        g|                     | j        j        | j        j                  g| j        j        | j        j        g| j        j        gd           d S r?   )r   r   r"   rB   r)   r   s    r   test_poly_free_pairzSolveSuite.test_poly_free_pair   rF   r   c                   | j         j                            | j         j                  }|                     | j         j        | j         j        g|                     | j         j        | j         j                  g||g|gd           d S )N)upper_boundTr@   )r   r"   copy_modifiedr%   r   ubr)   )r   t_primes     r   test_poly_free_pair_with_boundsz*SolveSuite.test_poly_free_pair_with_bounds   s    ')))dgi)@@WY
#YYtwy$'*--.gI" 	 	
 	
 	
 	
 	
r   c                    |                      | j        j        | j        j        g|                     | j        j        | j        j                  g| j        j        | j        j        gg d           d S r?   )r   r   rL   ucr)   r7   r   s    r   +test_poly_free_pair_with_bounds_uninhabitedz6SolveSuite.test_poly_free_pair_with_bounds_uninhabited   sm    WZ$YYtwz47:../W $'"56" 	 	
 	
 	
 	
 	
r   c           
        |                      | j        j        | j        j        | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  |                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        | j        j        | j        j        gd           d S r?   )	r   r   r"   rB   r3   r#   r%   r)   r$   r   s    r   test_poly_bounded_chainz"SolveSuite.test_poly_bounded_chain   s    WY	479-		$')TWY//		$')TWY//		$')TWY//		$')TWY//	 WY	479-" 	 
	
 
	
 
	
 
	
 
	
r   c           	        |                      | j        j        | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        | j        j        gd           d S r?   )r   r   r"   r3   r)   r$   r#   r%   r   s    r   #test_poly_reverse_overlapping_chainz.SolveSuite.test_poly_reverse_overlapping_chain       WY	"		$')TWY//		$')TWY//		$')TWY//
 WY	"" 	 		
 		
 		
 		
 		
r   c           	        |                      | j        j        | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        | j        j        gd           d S r?   )r   r   r"   r3   r)   r%   r#   r$   r   s    r   test_poly_reverse_split_chainz(SolveSuite.test_poly_reverse_split_chain   rV   r   c           
        |                      | j        j        | j        j        | j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  |                     | j        j        | j        j                  |                     | j        j        | j        j                  gg dd           d S )N)NNNTr@   )	r   r   r"   rB   r3   r#   r$   r)   r%   r   s    r   test_poly_unsolvable_chainz%SolveSuite.test_poly_unsolvable_chain   s    WY	479-		$')TWY//		$')TWY//		$')TWY//		$')TWY//	 " 	 
	
 
	
 
	
 
	
 
	
r   c           
        |                      | j        j        j        | j        j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        j        | j        j        j        fh| j        j        j        | j        j        h| j        j        j        | j        j        hi| j        j        j        | j        j        h| j        j        j        | j        j        hi           d S r   )	assert_transitive_closurer   r"   idr3   r#   r%   r)   r$   r   s    r   test_simple_chain_closurez$SolveSuite.test_simple_chain_closure   s    &&WY\479<(		$')TWY//		$')TWY//		$')TWY//
 gilDGIL)*WY\DGI;	twykBWY\DGI;	twykB
	
 
	
 
	
 
	
 
	
r   c                   |                      | j        j        j        | j        j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  |                     | j        j        | j        j                  g| j        j        j        | j        j        j        fh| j        j        j        t                      | j        j        j        | j        j        hi| j        j        j        | j        j        h| j        j        j        t                      i           d S r   )
r\   r   r"   r]   r3   r)   r$   r#   r%   setr   s    r   test_reverse_chain_closurez%SolveSuite.test_reverse_chain_closure   s    &&WY\479<(		$')TWY//		$')TWY//		$')TWY//
 gilDGIL)*WY\355$'),<WY\DGI;	cee<
	
 
	
 
	
 
	
 
	
r   c           
        |                      | j        j        j        | j        j        j        g|                     | j        j        | j        j                  |                     | j        j        | j        j                  gt                      | j        j        j        t                      | j        j        j        | j        j        hi| j        j        j        | j        j
        h| j        j        j        | j        j        hi           d S r   )r\   r   r"   r]   r3   r#   gtr)   gar`   r$   r   s    r   !test_secondary_constraint_closurez,SolveSuite.test_secondary_constraint_closure   s    &&WY\479<(YYtwy$'*--tyyDGJ/O/OPEEWY\355$'),=WY\DGI;	twzlC	
 	
 	
 	
 	
r   NFvarslist[TypeVarLikeType]constraintslist[Constraint]resultslist[None | Type]	free_varslist[TypeVarLikeType] | NonerA   boolc                x    |g }t          |||          \  }}t          ||           t          ||           d S )Nr@   )r	   r   )r   rf   rh   rj   rl   rA   actualactual_frees           r   r   zSolveSuite.assert_solve   sX     I/+1B
 
 
 	VW%%%[),,,,,r   list[TypeVarId]graphr   lowersr   uppersc                    t          ||          \  }}}|D ]}	|                    |	|	f           t          ||           t          t          |          |           t          t          |          |           d S r   )r
   addr   dict)
r   rf   rh   rs   rt   ru   actual_graphactual_lowersactual_uppersvs
             r   r\   z$SolveSuite.assert_transitive_closure	  s     6Hk5Z5Z2m] 	 	AIIq!f\5)))T-((&111T-((&11111r   type_varr   boundr   r   c                .    t          |t          |          S r   )r   r   r   r}   r~   s      r   r#   zSolveSuite.supc  s    (L%888r   c                .    t          |t          |          S r   )r   r   r   s      r   r)   zSolveSuite.subc  s    (J666r   )r   r   )NF)rf   rg   rh   ri   rj   rk   rl   rm   rA   rn   r   r   )rf   rr   rh   ri   rs   r   rt   r   ru   r   r   r   )r}   r   r~   r   r   r   )__name__
__module____qualname__r   r    r&   r*   r,   r/   r1   r5   r8   r;   r=   rC   rE   rH   rN   rQ   rS   rU   rX   rZ   r^   ra   re   r   r\   r#   r)    r   r   r   r      s=              & & & &
 
 
 

 
 
 

 
 
 

 
 
 

 
 
 
	
 	
 	
 	

 
 
 

 
 
 
2
 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 
 37"'- - - - - 2 2 2 2 9 9 9 97 7 7 7 7 7r   r   N)__doc__
__future__r   mypy.constraintsr   r   r   
mypy.solver   r   r	   r
   mypy.test.helpersr   r   mypy.test.typefixturer   
mypy.typesr   r   r   r   r   r   r   r   <module>r      s    B B " " " " " " A A A A A A A A A A K K K K K K K K K K K K 1 1 1 1 1 1 1 1 - - - - - - D D D D D D D D D D D DQ7 Q7 Q7 Q7 Q7 Q7 Q7 Q7 Q7 Q7r   