o
    DDi                     @   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 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)	is_native)	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   V/var/www/Datamplify/venv/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)r8   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}}")rB   rC   zf"{foo!s:{bar}}")equalz	f"{foo=}")rG   rB   zf"{foo=!s}")rG   rB   rC   zf"{foo=!s:{bar}}"a)valueb)operator
comparator)leftcomparisonszf"{a == b}"zf"{a != b}"5)targetrI   r   r   zf"{(a := 5)}"1 )rI   whitespace_after_yieldzf"{yield 1}"z\N{X Y}Zzf"\N{X Y}{Z}"\zfr")r8   r7   zfr"\{a}")r7   r8   r9   r   r   z(f"")xy)rP   iter)eltfor_inr   r   )
expressionzf"{x for x in y}")rI   comma)elementsr   r   )r8   r7   r9   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   rM   rightr   z	("ab""c")r1   )r0   )r   rM   whitespace_betweenrd   r   z( "ab" "c" ))r      )r   
   kwargsr
   c                 K      | j di | d S Nr   validate_nodeselfri   r   r   r   
test_valid   s         YzAtomTest.test_validz{today:%B %d, %Y})r   r   )r      c                 K   rj   rk   rl   rn   r   r   r   test_valid_no_parsem  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   rs   )Nr?   r   )r   ru   
RightParenr   r   r   r   rw     rx   zright paren without left parenc                   C      t jt  fdS )Nrt   )r   Ellipsisrv   r   r   r   r   rw         c                   C   r}   )Nr{   )r   r~   r|   r   r   r   r   rw     r   c                   C   rs   NrO   rt   r   Integerrv   r   r   r   r   rw     rx   c                   C   rs   NrO   r{   r   r   r|   r   r   r   r   rw     rx   c                   C   rs   )N5.5rt   )r   Floatrv   r   r   r   r   rw     rx   c                   C   rs   )Nr   r{   )r   r   r|   r   r   r   r   rw     rx   c                   C   rs   )N5jrt   )r   	Imaginaryrv   r   r   r   r   rw     rx   c                   C   rs   )Nr   r{   )r   r   r|   r   r   r   r   rw     rx   c                   C   rs   r   r   r   r   r   r   rw     rx   c                   C   rs   r   r   r   r   r   r   rw     rx   c                   C   rs   N'foo'rt   )r   SimpleStringrv   r   r   r   r   rw     rx   c                   C   rs   Nr   r{   )r   r   r|   r   r   r   r   rw     rx   c                   C   rs   )Nr   )r8   r   )r   FormattedStringrv   r   r   r   r   rw     rx   c                   C   rs   )Nr   )r8   r   )r   r   r|   r   r   r   r   rw     rx   c                   C   "   t jt dt dt  fdS r   )r   ConcatenatedStringr   rv   r   r   r   r   rw     
    c                   C   r   r   )r   r   r   r|   r   r   r   r   rw     r   c                   C   
   t dS Nr/   r   ru   r   r   r   r   rw        
 zempty name identifierc                   C   r   )Nz\/r   r   r   r   r   rw     r   znot a valid identifierc                   C   r   r   r   r   r   r   r   r   rw     r   znot a valid integerc                   C   r   N012345r   r   r   r   r   rw     r   c                   C   r   r   r   r   r   r   r   rw     r   c                   C   r   )N_12345r   r   r   r   r   rw     r   c                   C   r   )N0b2r   r   r   r   r   rw     r   c                   C   r   )N0o8r   r   r   r   r   rw     r   c                   C   r   )N0xgr   r   r   r   r   rw     r   c                   C   r   )Nz123.45r   r   r   r   r   rw     r   c                   C   r   )Nr*   r   r   r   r   r   rw     r   c                   C   r   )Nz12.3.45r   r   r   r   r   r   rw     r   znot a valid floatc                   C   r   )N12r   r   r   r   r   rw     r   c                   C   r   )Nz12.3jr   r   r   r   r   rw     r   c                   C   r   )N_12345jr   r   r   r   r   r   rw     r   znot a valid imaginaryc                   C   r   )N0b0jr   r   r   r   r   rw     r   c                   C   r   )N0o0jr   r   r   r   r   rw     r   c                   C   r   )N0x0jr   r   r   r   r   rw      r   c                   C   r   )Nzwee""r   r   r   r   r   r   rw   $  r   zInvalid string prefixc                   C   r   )Nr;   r   r   r   r   r   rw   (  r   zmust have enclosing quotesc                   C   r   )Nr5   r   r   r   r   r   rw   ,  r   c                   C   r   )Nz"'r   r   r   r   r   rw   0  r   z#must have matching enclosing quotesc                   C   r   r   r   r   r   r   r   rw   4  r   c                   C   r   )Nz'blar   r   r   r   r   rw   8  r   c                   C   r   )Nr<   r   r   r   r   r   rw   <  r   c                   C   r   )Nz'''bla''r   r   r   r   r   rw   @  r   c                   C   r   )Nz	'''bla"""r   r   r   r   r   rw   D  r   c                   C   s   t jddddS )Nr;   r   r6   r   r   r   r   r   r   rw   H      zInvalid f-string prefixc                   C   s   t jddddS )Nr:   r   r5   r6   r   r   r   r   r   rw   M  r   c                   C   s*   t t jdt  ft  fdt dS )Nra   r   rb   r   r   r   rv   r|   r   r   r   r   rw   S  s    z Cannot concatenate parenthesizedc                   C   s*   t t dt jdt  ft  fdS )Nra   rb   r   r   r   r   r   r   rw   ^  s    c                   C   s   t t dt dS )Nra   zb"c")r   r   r   r   r   r   r   rw   i  s    z#Cannot concatenate string and bytesc                	   C   s0   t t dt t jt ddt dgS )Nr.   r/   re   r3   )r   
Comparisonr   ComparisonTargetInSimpleWhitespacer   r   r   r   rw   r  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/   re   r2   r4   )r   r   r   r   r   r   r   r   r   r   r   rw     s    c                 K   rj   rk   )assert_invalidrn   r   r   r   test_invalid~  s     zAtomTest.test_invalidzu'x'z3.3r   T)r	   r   expect_successz3.1Fc                 K   s0   t  r|dds| d | jdi | d S )Nr   Tz+parse errors are disabled for native parserr   )r   getskipTestassert_parsesrn   r   r   r   test_versions  s   
zAtomTest.test_versions)*__name__
__module____qualname__r   r   ru   r   rv   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   rp   rr   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""r3   z""""""r>   rJ   r5   r/   abcr=   fN)	r   ensure_typer   r   r   assertEqualprefixquote	raw_value)ro   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._parser.entrypointsr   libcst.metadatar   libcst.testing.utilsr   strBaseExpressionr   r   r   r   r   r   r   <module>   s&            