o
    ÕtBh6  ã                   @  sä   d Z ddlmZ ddlmZ ddl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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„ deƒZddd„Zddd„Z G dd„ deƒZ!G dd„ deƒZ"dS )z/Test cases for type inference helper functions.é    )Úannotations)ÚTuple)Úmap_actuals_to_formals)ÚDisjointDictÚgroup_comparison_operands)ÚKey)Ú	ARG_NAMEDÚARG_OPTÚARG_POSÚARG_STARÚ	ARG_STAR2ÚArgKindÚNameExpr)ÚSuiteÚassert_equal)ÚTypeFixture)ÚAnyTypeÚ	TupleTypeÚTypeÚ	TypeOfAnyc                   @  sÄ   e Zd ZdZd6dd„Zd6dd„Zd6dd	„Zd6d
d„Zd6dd„Zd6dd„Z	d6dd„Z
d7dd„Zd6dd„Zd6dd„Zd6dd„Zd6dd„Zd6dd „Zd6d!d"„Zd6d#d$„Zd6d%d&„Zd8d-d.„Zd9d3d4„Zd5S ):ÚMapActualsToFormalsSuitez-Test cases for argmap.map_actuals_to_formals.ÚreturnÚNonec                 C  s   |   g g g ¡ d S ©N)Ú
assert_map©Úself© r   új/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/mypy/test/testinfer.pyÚ
test_basic   ó   z#MapActualsToFormalsSuite.test_basicc                 C  s8   |   tgtgdgg¡ |   ttgttgdgdgg¡ d S ©Nr   é   ©r   r
   r   r   r   r   Útest_positional_only   s   "z-MapActualsToFormalsSuite.test_positional_onlyc                 C  sF   |   g tgg g¡ |   tgtgdgg¡ |   tgttgdgg g¡ d S ©Nr   )r   r	   r
   r   r   r   r   Útest_optional   ó   z&MapActualsToFormalsSuite.test_optionalc                 C  sF   |   g tgg g¡ |   tgtgdgg¡ |   ttgtgddgg¡ d S r!   )r   r   r
   r   r   r   r   Útest_callee_star   r'   z)MapActualsToFormalsSuite.test_callee_starc                 C  sl   |   tgtgdgg¡ |   ttgtgddgg¡ |   tgttgdgdgg¡ |   tgttgdgdgg¡ d S r!   )r   r   r
   r	   r   r   r   r   Útest_caller_star$   s    z)MapActualsToFormalsSuite.test_caller_starc                 C  s:   |   tgg g ¡ |   tgg g ¡ |   tgtgdgg¡ d S r%   )r   r
   r   r   r   r   r   Útest_too_many_caller_args*   s   z2MapActualsToFormalsSuite.test_too_many_caller_argsc              	   C  s|   t tjƒ}|  tgtgdgg|  |¡¡ |  tgttgdgdgg|  ||¡¡ |  tgtttgdgdgg g|  ||¡¡ d S r%   )r   r   Úspecial_formÚassert_vararg_mapr   r
   Útupler	   )r   Úany_typer   r   r   Útest_tuple_star/   s   
ÿ"ÿz(MapActualsToFormalsSuite.test_tuple_starÚargsr   r   c                 G  s   t t|ƒtƒ jƒS r   )r   Úlistr   Ú	std_tuple)r   r0   r   r   r   r-   9   r    zMapActualsToFormalsSuite.tuplec                 C  sD   |   dgtdfgdgg¡ |   ddgtdftdfgdgdgg¡ d S )NÚxr   Úyr"   r#   r   r   r   r   Útest_named_args<   s   *z(MapActualsToFormalsSuite.test_named_argsc                 C  s.   |   dgtdftdftdfgg dgg g¡ d S )Nr4   r3   Úzr   ©r   r	   r   r   r   r   Útest_some_named_args@   ó   .z-MapActualsToFormalsSuite.test_some_named_argsc                 C  s   |   dgtdfgg g¡ d S )Nr4   r3   r7   r   r   r   r   Útest_missing_named_argC   s   z/MapActualsToFormalsSuite.test_missing_named_argc                 C  s"   |   ddgtdfgddgg¡ d S ©Nr3   r   r"   r7   r   r   r   r   Útest_duplicate_named_argF   s   "z1MapActualsToFormalsSuite.test_duplicate_named_argc                 C  sD   |   tgttdfgdgg g¡ |   tdgttdfgdgdgg¡ d S r;   )r   r   r   r   r   r   r   Útest_varargs_and_bare_asteriskI   s   &z7MapActualsToFormalsSuite.test_varargs_and_bare_asteriskc                 C  sx   |   dgtgdgg¡ |   dtgtgddgg¡ |   dtgtdftgdgdgg¡ |   ttgtdftgdgdgg¡ d S r;   )r   r   r
   r   r   r   r   Útest_keyword_varargsM   s   "&z-MapActualsToFormalsSuite.test_keyword_varargsc                 C  s.   |   ttgtdftdfgddgddgg¡ d S )Nr3   r4   r   r"   ©r   r   r   r
   r   r   r   r   Útest_both_kinds_of_varargsS   r9   z3MapActualsToFormalsSuite.test_both_kinds_of_varargsc                 C  sr   |   tgttgdgg g¡ |   ttgttgdgdgg¡ |   tgtdftgdgdgg¡ |   tgtgdgg¡ d S )Nr   r"   r3   r?   r   r   r   r   Útest_special_casesV   s    z+MapActualsToFormalsSuite.test_special_casesÚcaller_kinds_úlist[ArgKind | str]Úcallee_kinds_ú#list[ArgKind | Tuple[ArgKind, str]]Úexpectedúlist[list[int]]c           	      C  s:   t |ƒ\}}t|ƒ\}}t||||dd„ ƒ}t||ƒ d S )Nc                 S  s
   t tjƒS r   )r   r   r+   ©Úir   r   r   Ú<lambda>i   s   
 z5MapActualsToFormalsSuite.assert_map.<locals>.<lambda>)Úexpand_caller_kindsÚexpand_callee_kindsr   r   )	r   rB   rD   rF   Úcaller_kindsÚcaller_namesÚcallee_kindsÚcallee_namesÚresultr   r   r   r   \   s   ûz#MapActualsToFormalsSuite.assert_maprM   úlist[ArgKind]rO   Úvararg_typec                   s&   t |g |g ‡ fdd„ƒ}t||ƒ d S )Nc                   s   ˆ S r   r   rH   ©rS   r   r   rJ   t   s    z<MapActualsToFormalsSuite.assert_vararg_map.<locals>.<lambda>)r   r   )r   rM   rO   rF   rS   rQ   r   rT   r   r,   m   s   z*MapActualsToFormalsSuite.assert_vararg_mapN©r   r   )r0   r   r   r   )rB   rC   rD   rE   rF   rG   r   r   )
rM   rR   rO   rR   rF   rG   rS   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r$   r&   r(   r)   r*   r/   r-   r5   r8   r:   r<   r=   r>   r@   rA   r   r,   r   r   r   r   r      s(    

















r   Úkinds_or_namesrC   r   ú&tuple[list[ArgKind], list[str | None]]c                 C  sN   g }g }| D ]}t |tƒr| t¡ | |¡ q| |¡ | d ¡ q||fS r   )Ú
isinstanceÚstrÚappendr   )rZ   ÚkindsÚnamesÚkr   r   r   rK   x   s   


rK   Úkinds_and_namesú#list[ArgKind | tuple[ArgKind, str]]c                 C  sV   g }g }| D ] }t |tƒr| |d ¡ | |d ¡ q| |¡ | d ¡ q||fS r!   )r\   r-   r^   )rb   r_   r`   Úvr   r   r   rL   ‡   s   

rL   c                   @  sB   e Zd ZdZddd„Zddd„Zdd	d
„Zddd„Zddd„ZdS )ÚOperandDisjointDictSuitezTTest cases for checker.DisjointDict, which is used for type inference with operands.r   úDisjointDict[int, str]c                 C  s   t ƒ S r   )r   r   r   r   r   Únew™   s   zOperandDisjointDictSuite.newr   c                 C  sv   |   ¡ }| ddhdh¡ | h d£dh¡ | h d£dh¡ |  | ¡ ddhdhfh d£dhfh d£dhfg¡ d S )Nr   r"   Úgroup1¾   é   é   é   Úgroup2>   é   é   é   Úgroup3©rg   Úadd_mappingÚassertEqualÚitems©r   Údr   r   r   Útest_independent_mapsœ   s   ,ÿz.OperandDisjointDictSuite.test_independent_mapsc                 C  s¤   |   ¡ }| ddhdh¡ | ddhdh¡ | ddhdh¡ | d	dhd
h¡ | d	dhdh¡ | ddhdh¡ |  | ¡ h d£h d£fh d£ddhfg¡ d S )Nr   r"   rh   rj   rm   rk   rl   rq   rn   Úgroup4ro   Úgroup5rp   Úgroup6>   r   r"   rj   rn   ro   >   rh   rm   ry   rz   >   rk   rl   rp   rr   rv   r   r   r   Útest_partial_merging¦   s   þþz-OperandDisjointDictSuite.test_partial_mergingc                 C  s–   |   ¡ }| h d£dh¡ | h d£dh¡ | h d£dh¡ | h d£dh¡ | h d	£d
h¡ | ddhdh¡ |  | ¡ h d£h d£fg¡ d S )N¾   r   r"   rj   Úari   Úb>   é
   é   é   Úc>   é   é   é   rw   >   r€   r…   é   Úer   r€   Úf>   r   r"   rj   rk   rl   r€   r   r‚   r„   r…   r†   r‡   >   r~   r   rƒ   rw   rˆ   r‰   rr   rv   r   r   r   Útest_full_merging·   s   þz*OperandDisjointDictSuite.test_full_mergingc                 C  s„   |   ¡ }| h d£dh¡ | h d£dh¡ | h d£dh¡ | h d£dh¡ | h d£d	h¡ |  | ¡ h d
£h d£fg¡ d S )Nr}   r~   >   rk   rl   rn   r   >   r"   rj   rl   rn   rƒ   >   r"   rj   rl   rn   ro   rw   rˆ   >   r   r"   rj   rk   rl   rn   ro   >   r~   r   rƒ   rw   rˆ   rr   rv   r   r   r   Ú!test_merge_with_multiple_overlapsÅ   s   "z:OperandDisjointDictSuite.test_merge_with_multiple_overlapsN)r   rf   rU   )	rV   rW   rX   rY   rg   rx   r|   rŠ   r‹   r   r   r   r   re   –   s    




re   c                   @  sV   e Zd ZdZddd„Zdd	d
„Zddd„Zddd„Zddd„Zddd„Z	ddd„Z
dS )ÚOperandComparisonGroupingSuitez1Test cases for checker.group_comparison_operands.Úassignable_operandsúdict[int, NameExpr]r   údict[int, Key]c                 C  s(   i }|  ¡ D ]\}}d|jf||< q|S )NÚFakeExpr)ru   Úname)r   r   ÚoutputÚindexÚexprr   r   r   Úliteral_keymapÓ   s   z-OperandComparisonGroupingSuite.literal_keymapr   c           
   
   C  sd  t dƒ}t dƒ}t dƒ}t dƒ}t dƒ}d||fd||fd||fd||fg}|  i ¡}|  |||||dœ¡}||fD ]u}	|  t||	tƒ ƒdd	d
gfdd
dgfdddgfdddgfg¡ |  t||	dhƒdg d¢fdddgfdddgfg¡ |  t||	dhƒdd	d
gfdd
dgfdddgfdddgfg¡ |  t||	ddhƒdg d¢fdddgfdddgfg¡ q:d S )NÚx0Úx1Úx2Úx3Úx4ú==ú<©r   r"   rj   rk   rl   r   r"   rj   rk   rl   ©r   r"   rj   )r   r•   rt   r   Úset)
r   r–   r—   r˜   r™   rš   Úbasic_inputÚnone_assignableÚall_assignableÚ
assignabler   r   r   Útest_basic_casesÙ   s4   $
*þ þ*þ þóz/OperandComparisonGroupingSuite.test_basic_casesc              
   C  s„  t dƒ}t dƒ}t dƒ}t dƒ}t dƒ}t dƒ}|  td||fd||fd||fd||fg|  i ¡ddhƒdg d	¢fdg d
¢fg¡ |  td||fd||fd||fd||fg|  i ¡ddhƒdg d¢fg¡ |  td||fd||fd||fd||fg|  i ¡ddhƒdddgfdg d¢fg¡ |  td||fd||fd||fd||fd||fg|  i ¡ddhƒdg d	¢fdddgfdg d¢fg¡ d S )Nr–   r—   r˜   r™   rš   Úx5r›   Úisrž   ©rj   rk   rl   r   r   r"   ©r"   rj   rk   rl   rœ   rj   rk   ©rk   rl   rn   ©r   rt   r   r•   )r   r–   r—   r˜   r™   rš   r¥   r   r   r   Útest_multiple_groupsù   sL   "ýú"ýú"ýú*ý úz3OperandComparisonGroupingSuite.test_multiple_groupsc           	      C  s2  t dƒ}t dƒ}t dƒ}t dƒ}t dƒ}dg d¢fdd	d
gfdg d¢fg}dg d¢fdd	d
gfg}d||fd||fd||fd||fd||fg}|  t||  ||||||dœ¡dhƒ|d¡ |  t||  ||||dœ¡dhƒ|d¡ |  t||  ||||dœ¡dhƒ|d¡ |  t||  ||dœ¡dhƒ|d¡ d S )Nr–   r—   r˜   r™   rš   r›   rž   rœ   rj   rk   r©   )r   r"   rj   rk   rl   rn   z/All vars are assignable, everything is combinedr¨   z#x0 is unassignable, so no combining)r   r"   rk   rn   z3Some vars are unassignable but x0 is, so we combine)r   rn   z2All vars are unassignable but x0 is, so we combinerª   )	r   r–   r—   r˜   r™   rš   Únothing_combinedÚeverything_combinedÚ
two_groupsr   r   r   Útest_multiple_groups_coalescing"  sN   "ûÿûÿûÿûýz>OperandComparisonGroupingSuite.test_multiple_groups_coalescingc                 C  sŒ   t dƒ}t dƒ}t dƒ}t dƒ}d||fd||fd||fd||fg}|  |||||dœ¡}|  t||ddhƒdg d¢fdg d	¢fgd
¡ d S )Nr–   r—   r˜   r™   r›   r¦   r   rž   r§   z)Different operators can never be combined)r   r•   rt   r   )r   r–   r—   r˜   r™   ÚgroupsÚkeymapr   r   r   Ú(test_multiple_groups_different_operatorsO  s   $ýzGOperandComparisonGroupingSuite.test_multiple_groups_different_operatorsc           
      C  sŠ   t dƒ}t dƒ}d||fg}dddgfg}i d|id|i||dœg}tƒ dhdhg}|D ]}|D ]}|  |¡}	|  t||	|ƒ|¡ q0q,d S )Nr–   r—   r›   r   r"   )r   r"   r¦   )r   rŸ   r•   rt   r   )
r   r–   r—   Úsingle_comparisonÚexpected_outputÚassignable_combinationsÚto_group_byÚcomboÚ	operatorsr±   r   r   r   Útest_single_pair]  s   

þþÿz/OperandComparisonGroupingSuite.test_single_pairc                 C  s0   |   tg i tƒ ƒg ¡ |   tg i dhƒg ¡ d S )Nr›   )rt   r   rŸ   r   r   r   r   Útest_empty_pair_listo  s   z3OperandComparisonGroupingSuite.test_empty_pair_listN)r   rŽ   r   r   rU   )rV   rW   rX   rY   r•   r¤   r«   r¯   r²   r¹   rº   r   r   r   r   rŒ   Ð   s    


 
)
-
rŒ   N)rZ   rC   r   r[   )rb   rc   r   r[   )#rY   Ú
__future__r   Útypingr   Úmypy.argmapr   Úmypy.checkerr   r   Úmypy.literalsr   Ú
mypy.nodesr   r	   r
   r   r   r   r   Úmypy.test.helpersr   r   Úmypy.test.typefixturer   Ú
mypy.typesr   r   r   r   r   rK   rL   re   rŒ   r   r   r   r   Ú<module>   s    $
h
: