o
    DDi
                     @   sd   d dl mZmZmZ d dlZd dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZ G dd deZdS )    )ListOptionalSequenceN)VisitorBasedCodemodCommand)AddImportsVisitorRemoveImportsVisitor)	ProviderTQualifiedNameQualifiedNameProviderQualifiedNameSourcec                   @   sb   e Zd ZU dZdZeed< efZe	e
 ed< edejdZeed< dejd	ejd
ejfddZdS )#ConvertNamedTupleToDataclassCommanda  
    Convert NamedTuple class declarations to Python 3.7 dataclasses.

    This only performs a conversion at the class declaration level.
    It does not perform type annotation conversions, nor does it convert
    NamedTuple-specific attributes and methods.
    z_Convert NamedTuple class declarations to Python 3.7 dataclasses using the @dataclass decorator.DESCRIPTIONMETADATA_DEPENDENCIESztyping.NamedTuple)namesourcequalified_namedtupleoriginal_nodeupdated_nodereturnc                 C   s   g }d }|j D ]}t| |j| js|| q|}q|d u r!|S t| jdd t	
| j|j ttjd| jjdtj}|jtjjtjj|g |jtj|ddS )Ndataclasses	dataclasszdataclass(frozen=True))config)	decorator)lparrparbases
decorators)r   r
   has_namevaluer   appendr   add_needed_importcontextr   remove_unused_import_by_nodecstensure_typeparse_expressionmoduleconfig_for_parsingCallwith_changesMaybeSentinelDEFAULTr   	Decorator)selfr   r   	new_basesnamedtuple_base
base_classcall r2   p/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/codemod/commands/convert_namedtuple_to_dataclass.pyleave_ClassDef&   s4   

z2ConvertNamedTupleToDataclassCommand.leave_ClassDefN)__name__
__module____qualname____doc__r   str__annotations__r
   r   r   r   r	   r   IMPORTr   r#   ClassDefr4   r2   r2   r2   r3   r      s   
 	
r   )typingr   r   r   libcstr#   libcst.codemodr   libcst.codemod.visitorsr   r   libcst.metadatar   r	   r
   r   r   r2   r2   r2   r3   <module>   s   