o
    DDi                     @   sT   d dl mZ d dlmZ d dlZd dlmZmZ d dl	m
Z
mZ G dd deZdS )    )dedent)CallableN)$ExperimentalReentrantCodegenProviderMetadataWrapper)data_providerUnitTestc                   @   s   e Zd Zedddd eddddd	d eddd
ddd edddddd eddddededeejgej	f dej
ddf
ddZ		dddZdS )(ExperimentalReentrantCodegenProviderTestza                    import math
                    c = math.sqrt(a*a + b*b)
                    z]                    import math
                    c = math.hypot(a, b)
                    c                 C   
   | j d S )N   bodym r   e/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/metadata/tests/test_reentrant_codegen.py<lambda>      
 z1ExperimentalReentrantCodegenProviderTest.<lambda>zc = math.hypot(a, b))
old_module
new_moduleold_nodenew_nodez                    import math
                    def do_math(a, b):
                        c = math.sqrt(a*a + b*b)
                        return c
                    z                    import math
                    def do_math(a, b):
                        c = math.hypot(a, b)
                        return c
                    c                 C   s   | j d j j d S )Nr
   r   r   r   r   r   r   r   3   s    zold_fn()znew_fn()c                 C   r	   Nr   r   r   r   r   r   r   9   r   z	new_fn()
zd                    if outer:
                        if inner:
                            old_fn()zd                    if outer:
                        if inner:
                            new_fn()c                 C   s   | j d j j d j j d S r   r   r   r   r   r   r   I   s    )simple_top_level_statementreplacement_inside_blockmissing_trailing_newline+nested_blocks_with_missing_trailing_newliner   r   r   r   returnNc                 C   sX   t |}t |}tt|}|t||j }| | | | |	|| d S )N)
r   r   cstparse_moduleresolver   moduleassertEqualget_original_module_codeget_modified_module_code)selfr   r   r   r   mwcodegen_partialr   r   r   test_provider   s   Ez6ExperimentalReentrantCodegenProviderTest.test_providerc                 C   sj   d d}ttdtjdd}|t|jjd  }| 	|
 | | 	|tdd d d S )Nzfn()
zutf-16)encodingr   zfn2()
)encoder   r   r   PartialParserConfigr   r   r    r   r!   get_original_module_bytesget_modified_module_bytesparse_statement)r$   module_bytesr%   r&   r   r   r   test_byte_conversion`   s   

z=ExperimentalReentrantCodegenProviderTest.test_byte_conversion)r   N)__name__
__module____qualname__r   r   r-   strr   ModuleCSTNodeBaseStatementr'   r/   r   r   r   r   r      sL    >r   )textwrapr   typingr   libcstr   libcst.metadatar   r   libcst.testing.utilsr   r   r   r   r   r   r   <module>   s   