o
    noi[                     @   s   d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZ dedejfd	d
ZG dd deZG dd deZdS )    )AnyN)parse_expression)CSTNodeTestparse_expression_as)	CodeRange)data_providercodereturnc                 C   s   t j| t jdddS )Nz3.8python_version)config)cstr   PartialParserConfig)r    r   Q/home/ubuntu/.local/lib/python3.10/site-packages/libcst/_nodes/tests/test_atom.py_parse_expression_force_38   s   r   c                   @   s  e Zd Zeg eddeddejde fe fddee	ddde
ddedde
d	d	edde
d
d
edde
ddedde
ddedde
ddedde
ddedde
ddedde
ddedde
ddeddej
de fe fddee	dddeddeddeddeddeddeddeddeddeddeddeddeddeddeddeddeddeddeddeddeddeddedded d edded!d!edded"d"eddejd#e fe fdd$ee	dd%ded&d&edded'd'edded(d(edded)d)eddejd*e fe fdd+ee	dd,de d-eddeje fe fdd.ee	ddded/d/edded0d0edded1d1edded2d2edded3d3edded4d4eddejd1e fe fdd5eddejd6e fe fdd7ee	dd8deed9eejed:ed:d;ed<gd=ed>eed9eejed:ed:d;eed9ed?gd@ed>eedAeejed:ed:d;ejdBe ge gdgdCed>eedAeejed:ed:d;ejedAedDe ge gdgdEed>ejdFdGdHdIdJeddejdKdGdLdIdMeddejdNdGdOdIdPeddejdQdGdRdIdSeddejedTfdUdVeddejeedTfdUdWeddejedXeedYedZfdUd[eddejedXeeedYedZfdUd\eddejejedTd]d^fdUd_eddejejedTdGd`fdUdaeddejejedbedcfd`fdUddeddejejedTeedYfd`fdUdeeddejejedTeedYedfeedgfd`fdUdheddejejedTd]eedYfdifdUdjeddejejedTejed:ed:d;dkfdUdleddejejedTejed:ed:d;d]dmfdUdneddejejedTejed:ed:d;d]eedYfdofdUdpeddejeejejdqdreje ejdsdrdtgdufdUdveddejeejejdqdreje ejdsdrdtgdufdUdweddejeejejdqdrej
dxdre fe fdyfdUdzeddejeeje
d{ed|d}fdUd~eddejedeejddrfdUdeddejedeejdqdrfdddeddejdFdGdHe fe fddee	dddejdFejejejddrejejddrejddrdg g ddgdHdIdeddejejej ej!ejdqdrej"ejd:drejd|drd;dej!ejdsdrdrgg g ddgdKdLddeddejejej#ejdsdrejdqdrejddrddgdKdLddeddeededdeddeedeededdeddeeedgeddeddeedeedgdeddeje fedede fddeddejejed|dfeded|edejed|dfddee	dddR de$ddfddZ%eejedbedcfd`dde	dddfde$ddfddZ&eg dd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd dddd ddR de$ddfddZ'ede(ddddde(ddddfde$ddfddZ)dS )AtomTesttestN)noder   parserexpected_positionlparrparz(test))   r   )r      123450000	1_234_5670_0000b00000B1011_01000o123450O12_3450x123abc	0X12_3ABC123z(123))r      z12345.z00.00z12.21z.321z
1_234_567.z	0.000_000z	12345.e10z00.00e10z12.21e10z.321e10z1_234_567.e10z0.000_000e10z1e+10z1e-10z123.4z(123.4))r      12345j
1_234_567Jz
12345.e10jz.321Jz123.4jz(123.4j))r      z...z(...)z""z''z"test"zb"test"zr"test"z
"""test"""z("test")zrb"test"z
(rb"test"))r   	   "a" )whitespace_beforewhitespace_afterz"abc"z
"a"in"abc")r   r   r   z"bc"z"a"in"a""bc"b"a"b"abc"zb"a"in(b"abc")b"bc"zb"a"in(b"a"b"bc")zf"r   "startpartsendzf""f''f''zf""""""f""""""zf'''z'''zf''''''foo)r7   zf"foo"zf"{foo}"zfoo barz bazzf"foo {bar} baz"zf"foo {bar()} baz"s)
conversionz
f"{foo!s}")format_specz	f"{foo:}"todayz	%B %d, %Yzf"{today:%B %d, %Y}"zf"{foo:{bar}}".bazzf"{foo:{bar}.{baz}}")rA   rB   zf"{foo!s:{bar}}")equalz	f"{foo=}")rF   rA   zf"{foo=!s}")rF   rA   rB   zf"{foo=!s:{bar}}"a)valueb)operator
comparator)leftcomparisonszf"{a == b}"zf"{a != b}"5)targetrH   r   r   zf"{(a := 5)}"1 )rH   whitespace_after_yieldzf"{yield 1}"z\N{X Y}Zzf"\N{X Y}{Z}"\zfr")r7   r6   zfr"\{a}")r6   r7   r8   r   r   z(f"")xy)rO   iter)eltfor_inr   r   )
expressionzf"{x for x in y}")rH   comma)elementsr   r   )r7   r6   r8   z	f'{a, b}'c)r   bodyorelsezf'{a if b else c}'"ab""c"z"ab""c"z"d"z
"ab""c""d"abzf"ab""c"z"ab"f"c")r   rL   rightr   z	("ab""c")r0   )r/   )r   rL   whitespace_betweenrc   r   z( "ab" "c" ))r      )r   
   kwargsr	   c                 K      | j di | d S Nr   validate_nodeselfrh   r   r   r   
test_valid   s         YzAtomTest.test_validz{today:%B %d, %Y})r   r   )r      c                 K   ri   rj   rk   rm   r   r   r   test_valid_no_parsel  s   zAtomTest.test_valid_no_parsec                   C      t jdt  fdS )Nr>   r   )r   Name	LeftParenr   r   r   r   <lambda>      zAtomTest.<lambda>zleft paren without right paren)get_nodeexpected_rec                   C   rr   )Nr>   r   )r   rt   
RightParenr   r   r   r   rv     rw   zright paren without left parenc                   C      t jt  fdS )Nrs   )r   Ellipsisru   r   r   r   r   rv         c                   C   r|   )Nrz   )r   r}   r{   r   r   r   r   rv     r~   c                   C   rr   NrN   rs   r   Integerru   r   r   r   r   rv     rw   c                   C   rr   NrN   rz   r   r   r{   r   r   r   r   rv     rw   c                   C   rr   )N5.5rs   )r   Floatru   r   r   r   r   rv     rw   c                   C   rr   )Nr   rz   )r   r   r{   r   r   r   r   rv     rw   c                   C   rr   )N5jrs   )r   	Imaginaryru   r   r   r   r   rv     rw   c                   C   rr   )Nr   rz   )r   r   r{   r   r   r   r   rv     rw   c                   C   rr   r   r   r   r   r   r   rv     rw   c                   C   rr   r   r   r   r   r   r   rv     rw   c                   C   rr   N'foo'rs   )r   SimpleStringru   r   r   r   r   rv     rw   c                   C   rr   Nr   rz   )r   r   r{   r   r   r   r   rv     rw   c                   C   rr   )Nr   )r7   r   )r   FormattedStringru   r   r   r   r   rv     rw   c                   C   rr   )Nr   )r7   r   )r   r   r{   r   r   r   r   rv     rw   c                   C   "   t jt dt dt  fdS r   )r   ConcatenatedStringr   ru   r   r   r   r   rv     
    c                   C   r   r   )r   r   r   r{   r   r   r   r   rv     r   c                   C   
   t dS Nr.   r   rt   r   r   r   r   rv        
 zempty name identifierc                   C   r   )Nz\/r   r   r   r   r   rv     r   znot a valid identifierc                   C   r   r   r   r   r   r   r   r   rv     r   znot a valid integerc                   C   r   N012345r   r   r   r   r   rv     r   c                   C   r   r   r   r   r   r   r   rv     r   c                   C   r   )N_12345r   r   r   r   r   rv     r   c                   C   r   )N0b2r   r   r   r   r   rv     r   c                   C   r   )N0o8r   r   r   r   r   rv     r   c                   C   r   )N0xgr   r   r   r   r   rv     r   c                   C   r   )Nz123.45r   r   r   r   r   rv     r   c                   C   r   )Nr)   r   r   r   r   r   rv     r   c                   C   r   )Nz12.3.45r   r   r   r   r   r   rv   
  r   znot a valid floatc                   C   r   )N12r   r   r   r   r   rv     r   c                   C   r   )Nz12.3jr   r   r   r   r   rv     r   c                   C   r   )N_12345jr   r   r   r   r   r   rv     r   znot a valid imaginaryc                   C   r   )N0b0jr   r   r   r   r   rv     r   c                   C   r   )N0o0jr   r   r   r   r   rv     r   c                   C   r   )N0x0jr   r   r   r   r   rv     r   c                   C   r   )Nzwee""r   r   r   r   r   r   rv   #  r   zInvalid string prefixc                   C   r   )Nr:   r   r   r   r   r   rv   '  r   zmust have enclosing quotesc                   C   r   )Nr4   r   r   r   r   r   rv   +  r   c                   C   r   )Nz"'r   r   r   r   r   rv   /  r   z#must have matching enclosing quotesc                   C   r   r   r   r   r   r   r   rv   3  r   c                   C   r   )Nz'blar   r   r   r   r   rv   7  r   c                   C   r   )Nr;   r   r   r   r   r   rv   ;  r   c                   C   r   )Nz'''bla''r   r   r   r   r   rv   ?  r   c                   C   r   )Nz	'''bla"""r   r   r   r   r   rv   C  r   c                   C   s   t jddddS )Nr:   r   r5   r   r   r   r   r   r   rv   G      zInvalid f-string prefixc                   C   s   t jddddS )Nr9   r   r4   r5   r   r   r   r   r   rv   L  r   c                   C   s*   t t jdt  ft  fdt dS )Nr`   r   ra   r   r   r   ru   r{   r   r   r   r   rv   R  s    z Cannot concatenate parenthesizedc                   C   s*   t t dt jdt  ft  fdS )Nr`   ra   r   r   r   r   r   r   rv   ]  s    c                   C   s   t t dt dS )Nr`   zb"c")r   r   r   r   r   r   r   rv   h  s    z#Cannot concatenate string and bytesc                	   C   s0   t t dt t jt ddt dgS )Nr-   r.   rd   r2   )r   
Comparisonr   ComparisonTargetInSimpleWhitespacer   r   r   r   rv   q  s    z8Must have at least one space around comparison operator.c                   C   s>   t t dt t jt ddt t dt dgS )Nr-   r.   rd   r1   r3   )r   r   r   r   r   r   r   r   r   r   r   rv     s    c                 K   ri   rj   )assert_invalidrm   r   r   r   test_invalid}  s     zAtomTest.test_invalidzu'x'z3.3r
   T)r   r   expect_successz3.1Fc                 K   s*   | dds| d | jdi | d S )Nr   Tz+parse errors are disabled for native parserr   )getskipTestassert_parsesrm   r   r   r   test_versions  s   
zAtomTest.test_versions)*__name__
__module____qualname__r   r   rt   r   ru   r{   r   r   r   r   r}   r   r   r   r   r   r   r   FormattedStringTextFormattedStringExpressionCallAssignEqualr   EqualNotEqual	NamedExprYieldGeneratorExpCompForTupleElementCommaIfExpr   ro   rq   r   r   r   r   r   r   r   r      s   
%,29?FLS\bhntz              &  ,  3  <  B  H  N  U  ^  e  l  r  x  ~                   #    3    F    Z    p    v    |           
                  $      1      ;      E
      R
      a      r                       %        :        R        j        
         
          
	          +          8          U           {                                   )            2            <            H            V
#'+/4:@FLV`dhlptx|    	              "  &  *  .  2  6  :  >  B  F  J  O  U  `  k  t
       r   c                   @   s   e Zd ZdddZdS )StringHelperTestr	   Nc                 C   s   t tdt j}t tdt j}t tdt j}t tdt j}| |jd | |jd | |jd | |jd | |jd | |jd | |jd | |jd	 | |jd | |jd
 | |jd	 dS )z;
        Test our helpers out for various strings.
        zb""r2   z""""""r=   rI   r4   r.   abcr<   fN)	r   ensure_typer   r   r   assertEqualprefixquote	raw_value)rn   emptybytestring
bytestringmultilinestringformatstringr   r   r   test_string_prefix_and_quotes  s   z.StringHelperTest.test_string_prefix_and_quotes)r	   N)r   r   r   r   r   r   r   r   r     s    r   )typingr   libcstr   r   libcst._nodes.tests.baser   r   libcst.metadatar   libcst.testing.utilsr   strBaseExpressionr   r   r   r   r   r   r   <module>   s$            