o
    DDi                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlZ	d dlm
Z
mZ d dlmZmZ deddfddZd	edefd
dZdddZdddZdddZdee defddZedkrpeeejdd  dS dS )    N)List)ensure_typeparse_module)!DoubleQuoteForwardRefsTransformerSimplifyUnionsTransformerfnamereturnc                 C   s   t jdd| gt jt jd d S )Nufmtformat)stdoutstderr)
subprocess
check_callDEVNULL)r    r   P/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/codegen/generate.pyformat_file   s
   
r   codec                 C   s6   t | }t|t tj}t|t tj}|jS )z
    Generalized sanity clean-up for all codegen so we can fix issues such as
    Union[SingleType]. The transforms found here are strictly for form and
    do not affect functionality.
    )r   r   visitr   cstModuler   r   )r   moduler   r   r   clean_generated_code#   s   r   c               	   C   sD  t jt jt jt jtd} t j| d}t|| d zSdd lm	  m
} td|j}t|d}|| |  W d    n1 sNw   Y  tjtjddg| tjd	 t| t | d td
| d W d S  ty   td| dd| d tjd t || d t | d|  w )N../z_typed_visitor.pyz.bakr   
wz-mz$libcst.codegen.gen_visitor_functions)cwdr   Successfully generated a new  file.zFailed to generated a new z file, failure zis saved in z.failed_generate.)filez.failed_generate)ospathabspathjoindirname__file__shutilcopyfile$libcst.codegen.gen_visitor_functionscodegengen_visitor_functionsr   generated_codeopenwritecloser   r   sys
executabler   r   removeprint	Exceptionr   rename)basevisitors_filevisitor_codegennew_codefpr   r   r   codegen_visitors/   s>   




r:   c               	   C      dd l m  m}  tjtjtjtjtd}tj|d}t	d| j
}t|d}|| |  W d    n1 sDw   Y  t| td| d d S )Nr   r   zmatchers/__init__.pyr   r   r   r   )"libcst.codegen.gen_matcher_classesr)   gen_matcher_classesr    r!   r"   r#   r$   r%   r   r+   r,   r-   r.   r   r2   )matcher_codegenr5   matchers_filer8   r9   r   r   r   codegen_matchersd      

r@   c               	   C   r;   )Nr   r   zmatchers/_return_types.pyr   r   r   r   )libcst.codegen.gen_type_mappingr)   gen_type_mappingr    r!   r"   r#   r$   r%   r   r+   r,   r-   r.   r   r2   )type_codegenr5   type_mapping_filer8   r9   r   r   r   codegen_return_typesz   rA   rF   cli_argsc                 C   s   t jdd}|jdg ddtd || }|jdkr&t  t  t  dS |jd	kr0t  dS |jd
kr:t  dS |jdkrDt  dS t	d|j d dS )NzGenerate code for libcst.)descriptionsystem)allvisitorsmatchersreturn_typeszSystem to generate code for.)choiceshelptyperJ   r   rK   rL   rM   zInvalid system "z".   )
argparseArgumentParseradd_argumentstr
parse_argsrI   r:   r@   rF   r2   )rG   parserargsr   r   r   main   s0   




rY   __main__rQ   )r   N)rR   r    os.pathr&   r   r/   typingr   libcstr   r   r   libcst.codegen.transformsr   r   rU   r   r   r:   r@   rF   intrY   __name__exitargvr   r   r   r   <module>   s&   


5
