o
    SDig                     @   s  d dl Z d dlZd dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZmZmZmZmZmZ d dlZd dlmZmZ d dlmZ dd	 jZedZeeeee  d
 Zeeef ZeeZdedefddZ d/ddZ!dee"e#e$e%f defddZ&de'defddZ(dedefddZ)ded defddZ*dedefddZ+dedefddZ,dedefdd Z-dedefd!d"Z.de	defd#d$Z/dedefd%d&Z0dedefd'd(Z1d)e2de2fd*d+Z3d,e"e j4 de"e j4 fd-d.Z5dS )0    N)Callable)Enumauto)GenericAlias
LambdaType)AnyListUnioncastget_args
get_origin)	PlainRepr	UnionType)!InvalidGenerationInstructionErrorc                   C   s   d S N r   r   r   E/var/www/Datamplify/venv/lib/python3.10/site-packages/cadwyn/_asts.py<lambda>   s    r      valuereturnc                 C   s   t | tjrtt| drt| S t | tttt	frt
| S t | tr't| S t | tr0t| S | d u s8| tu r<t| S t | trEt| S t | trNt| S t | trWt| S t | tr`t| S t | trnt| jkrnt| S t| rwt| S t| S )N__dataclass_fields__) 
isinstanceannotated_typesGroupedMetadatahasattrtypetransform_grouped_metadatalisttupleset	frozensettransform_collectiondicttransform_dictGenericAliasUnionArgstransform_generic_aliasNoneTypetransform_nonetransform_typer   transform_enumr   transform_autor   transform_unionr   _LambdaFunctionName__name__transform_lambdainspect
isfunctiontransform_functiontransform_otherr   r   r   r   get_fancy_repr"   s.   






r5   annotated_types.GroupedMetadatac                    sF   t   fddjD }tjjd ddd |D  d S )Nc                    s.   g | ]}t |t  |kr|t |fqS r   )getattr).0key	empty_objr   r   r   
<listcomp>@   s
    z.transform_grouped_metadata.<locals>.<listcomp>(, c                 s   s*    | ]\}}t | d t| V  qdS )=N)r   r5   )r8   r9   vr   r   r   	<genexpr>I   s   ( z-transform_grouped_metadata.<locals>.<genexpr>))r   r   r   	__class__r.   join)r   modified_fieldsr   r:   r   r   =   s   r   c                 C   s   t | tt| S r   )r   rC   mapr5   r4   r   r   r   r"   N   s   r"   c                 C   s   t | dd |  D S )Nc                 s   s$    | ]\}}t |t |fV  qd S r   r5   )r8   kr@   r   r   r   rA   T   s   " z!transform_dict.<locals>.<genexpr>)r   rC   itemsr4   r   r   r   r$   R   s   r$   c                 C   s,   t t|  dddd t| D  dS )N[r>   c                 s       | ]}t |V  qd S r   rG   r8   ar   r   r   rA   Y       z*transform_generic_alias.<locals>.<genexpr>])r5   r   rD   r   r4   r   r   r   r&   X   s   ,r&   _c                 C   s   dS )NNoner   rP   r   r   r   r(   \   s   r(   c                 C   s   | j S r   )r.   r4   r   r   r   r)   `   s   r)   c                 C   s   t | jj d| j S )N.)r   rC   r.   namer4   r   r   r   r*   d   s   r*   c                 C   s   t dS )Nzauto())r   rR   r   r   r   r+   h   s   r+   c                 C   s    dd dd t| D  d S )Nztyping.Union[r>   c                 s   rK   r   rG   rL   r   r   r   rA   m   rN   z"transform_union.<locals>.<genexpr>rO   )rD   r   r4   r   r   r   r,   l   s    r,   c                 C   s   t t| dS )Nz 
	.)'_get_lambda_source_from_default_factoryr0   	getsourcestripr4   r   r   r   r/   p   s   r/   c                 C   s
   t | jS r   )r   r.   r4   r   r   r   r2   v   s   
r2   c                 C   s   t t| S r   )r   reprr4   r   r   r   r3   z   s   r3   sourcec                 C   sV   dd t t | D }t|dkrt |d S t|dkr'td|  td)Nc                 S   s6   g | ]}t |tjr|jd krt |jtjr|jqS )default_factory)r   astkeywordargr   Lambda)r8   noder   r   r   r<      s    
z;_get_lambda_source_from_default_factory.<locals>.<listcomp>r   r   z?No lambda found in default_factory even though one was passed: zEMore than one lambda found in default_factory. This is not supported.)r[   walkparselenunparser   )rY   found_lambdasr   r   r   rU   ~   s   rU   cls_bodyc                 C   sP   t | dkr&t| d tjr&t| d jtjr&t| d jjtr&| dgS g S )Nr   )rb   r   r[   Exprr   Constantstrpop)re   r   r   r   pop_docstring_from_cls_body   s   rj   )r   r6   )6r[   r0   collections.abcr   enumr   r   typesr   r   typingr   r   r	   r
   r   r   r   cadwyn._utilsr   r   cadwyn.exceptionsr   r.   r-   r   r'   intmro_BaseGenericAliasGenericAliasUnionr%   r5   r   r   r   r    r!   r"   r#   r$   r&   r(   r)   r*   r+   r,   r/   r2   r3   rh   rU   stmtrj   r   r   r   r   <module>   s:     	

"