o
    DD©ižD  ć                   @   sx   d dl mZmZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ G dd	 d	eZG d
d deZdS )é    )ŚAnyŚCallableN)Śparse_statement)ŚCSTNodeTest)Ś	is_native)Ś	CodeRange)Śdata_providerc                   @   są  e Zd Zee e d”e e ” f””de	dddeje d”e e ” f”e 
” e ” dddeje d”e e ” f”e e d	””fd
ddeje d”e e ” f”e e d””e e d””e e d””fd
ddeje d”e e ” f”eje d”e d”dfdde	dddeje d”e e ” f”ejde d”dfd
ddeje d”e e ” f”ejde d”dejde d”dejde d”dfd
ddeje d”e e ” f”ejde d”dfdddeje d”e e ” f”ejde d”dejde d”dejde d”dfdddf	ded d!fd"d#Zeeje d”e e ” f”e e eje d$”e d%”eje d&”d'd(eje d&”d'”e e e d)””eje d&”d'”e e e d*”””f”d+d,deje d”e e ” f”ejejeje d$”e d-”eje d&”eje ” fd.d/d0d(e e d&””d1e e e d2”e d3””e e d3”””fd4e d3”d5d6deje d”e e ” f”ejejeje d$”e d-”eje d&”eje ” fd.d/d0d(e e d&””d1e e e d2”e d3””e e d3”””fd4e 
” e ” e d3”d7d8dfded d!fd9d:Zed;d< d=fd>d< d=fd?d< d@ffdAeg ejf dBed d!fdCdDZd!S )EŚClassDefCreationTestŚFoośclass Foo: pass
)é   r   )r   é   ©ŚnodeŚcodeŚexpected_position©ŚlparŚrparśclass Foo(): pass
©r   r   Śobj)Śbasesśclass Foo(obj): pass
ŚBarŚBazŚobjectś"class Foo(Bar, Baz, object): pass
Ś	metaclass)ŚkeywordŚvalue)Śkeywordsś!class Foo(metaclass = Bar): pass
)r   é    Ś*Śone©Śstarr    śclass Foo(*one): pass
ŚtwoŚthreeś$class Foo(*one, *two, *three): pass
ś**śclass Foo(**one): pass
ś'class Foo(**one, **two, **three): pass
ŚkwargsŚreturnNc                 K   s   | j di |¤ d S )N© )Śvalidate_node©Śselfr/   r1   r1   śZ/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/_nodes/tests/test_classdef.pyŚ
test_valid   s   azClassDefCreationTest.test_validŚTŚintś ©Śwhitespace_after)ŚboundŚcolonŚTsŚKW)Śtype_parametersz#class Foo[T: int, *Ts, **KW]: pass
ŚstrT)Śempty_linesŚindent)Śwhitespace_beforer;   )ŚparamŚcommaŚPSz  )Śparams)r@   Ś whitespace_after_type_parametersz'class Foo[T :

str ,**  PS  ,]  : pass
)r@   r   r   rI   z)class Foo[T :

str ,**  PS  ,]  (): pass
c                 K   s$   t  s|  d” | jdi |¤ d S )NzDisabled for pure python parserr1   )r   ŚskipTestr2   r3   r1   r1   r5   Śtest_valid_nativet   s   a
z&ClassDefCreationTest.test_valid_nativec                   C   ó&   t jt  d”t  t  ” f”t  ” dS )Nr
   )ŚnameŚbodyr   )ŚcstŚClassDefŚNameŚSimpleStatementSuiteŚPassŚ	LeftParenr1   r1   r1   r5   Ś<lambda>Ż   ó
    żzClassDefCreationTest.<lambda>z;Do not mix concrete LeftParen/RightParen with MaybeSentinelc                   C   rL   )Nr
   )rM   rN   r   )rO   rP   rQ   rR   rS   Ś
RightParenr1   r1   r1   r5   rU   å   rV   c                   C   s(   t jt  d”t  t  ” f”t  d”dS )Nr
   Ś )rM   rN   Śwhitespace_after_class)rO   rP   rQ   rR   rS   ŚSimpleWhitespacer1   r1   r1   r5   rU   ī   s
    żz+at least one space between 'class' and nameŚget_nodeŚexpected_rec                 C   s   |   ||” d S )N)Śassert_invalid)r4   r[   r\   r1   r1   r5   Śtest_invalidŁ   s   !z!ClassDefCreationTest.test_invalid)Ś__name__Ś
__module__Ś__qualname__r   rO   rP   rQ   rR   rS   r   rT   rW   ŚArgr   r6   ŚTypeParametersŚ	TypeParamŚTypeVarŚColonrZ   ŚCommaŚTypeVarTupleŚ	ParamSpecŚParenthesizedWhitespaceŚ	EmptyLinerK   r   ŚCSTNoderA   r^   r1   r1   r1   r5   r	      sx   ’ūüłżś	żż	ö’ż÷żś	żż	öżś	żż	öÆ’`’żų
žń’żčžžżō’üń’åā!žžżō’üń’ćąÅ’`ś	ś
śķ’’’žr	   c                   @   s"  e Zd Zee e d”e e ” f””ddeje d”e e ” f”e 	” e 
” dddeje d”e e ” f”e 	” e e d””fe 
” dddeje d”e e ” f”e 	” eje d	”eje d
”ddeje d”eje d
”dde e d””fe 
” dddeje d”e e ” f”e 	” eje d”e ” e d	”dfe 
” dddeje d”e e ” f”e 	” ejde d”dfe 
” dddeje d”e e ” f”e 	” ejde d”eje d
”ddejde d”eje d
”ddejde d”dfe 
” dddeje d”e e ” f”e 	” ejde d”dfe 
” dddeje d”e e ” f”e 	” ejde d”eje d
”ddejde d”eje d
”ddejde d”dfe 
” dddeje d”e e ” f”e e d””fe 	” e 
” d d!ed"d#d$eje ” eje d%”d&feje d”d'd(eje d)”eje d*”d&fd(eje d+”eje d,”d&fd(feje d-”d&fe d”e e ” f”e 	” e 
” d.d/ed0d1d$fd2ed3d4fd5d6Zd4S )7ŚClassDefParserTestr
   r   r   r   r   r   )r   r   r   r   r   r9   r:   )rF   r   r   r   r   )r   Śequalr    )r   r!   r   r"   r$   r%   r&   r(   )r'   r    rF   r)   r*   r+   r,   r-   r.   Śfoo)Ś
decoratorsr   r   z@foo
class Foo(): pass
)é   r   )rq   é   r   z# leading comment 1)Ścommentr1   )Śleading_linesŚbarz# leading comment 2Śbazz# leading comment 3z# class comment)rt   rp   Ślines_after_decoratorsrM   rN   r   r   zn
# leading comment 1
@foo
# leading comment 2
@bar
# leading comment 3
@baz
# class comment
class Foo(): pass
)é	   r   )rx   rr   r/   r0   Nc                 K   s   | j di |¤dti¤ d S )NŚparserr1   )r2   r   r3   r1   r1   r5   r6   ž   s    8zClassDefParserTest.test_valid)r_   r`   ra   r   rO   rP   rQ   rR   rS   rT   rW   rb   rg   rZ   ŚAssignEqualŚ	Decoratorr   rk   ŚCommentr   r6   r1   r1   r1   r5   rm   ż   s>   ’üüłūųžž÷ńīż’õņūųżżõļģūųżżõļģū÷ž’’ž’’žö’ā Ž š’ 7rm   )Śtypingr   r   ŚlibcstrO   r   Ślibcst._nodes.tests.baser   Ślibcst._parser.entrypointsr   Ślibcst.metadatar   Ślibcst.testing.utilsr   r	   rm   r1   r1   r1   r5   Ś<module>   s    n