o
    8Di                     @  st   d dl mZ d dlZd dlmZ ejr.eje	e
eeeedf Zejejd ejjejef Zddd	ZdddZdS )    )annotationsN)expressionsNodenodereturnJSONc                 C  s   t | trdd | D S t | tjjrd| jdS t | tjr]| jj}| jj	tj
kr2| j	 d| }|dd | j D d}| jrIt| j|d	< | jrQ| j|d
< | jdur[| j|d< |S | S )z@
    Recursively dump an AST into a JSON-serializable dict.
    c                 S     g | ]}t |qS  dump.0ir	   r	   F/var/www/Datamplify/venv/lib/python3.10/site-packages/sqlglot/serde.py
<listcomp>       zdump.<locals>.<listcomp>DataType.Type)classvalue.c                 S  s*   i | ]\}}|d ur|g kr|t |qS )Nr
   r   kvr	   r	   r   
<dictcomp>   s   * zdump.<locals>.<dictcomp>)r   argstypecommentsNmeta)
isinstancelistexpDataTypeTyper   
Expression	__class____qualname__
__module____name__r   itemsr   r   r   _meta)r   klassobjr	   r	   r   r      s*   



r   r+   c                 C  s   t | trdd | D S t | trh| d }|dkr!tj| d S d|v r6|jddd\}}t||gd	}nt}t||}|di d
d | d 	 D }t
tjt| d|_| d|_| d|_|S | S )zF
    Recursively load a dict (as returned by `dump`) into an AST.
    c                 S  r   r	   loadr   r	   r	   r   r   /   r   zload.<locals>.<listcomp>r   r   r   r      )maxsplit)fromlistc                 S  s   i | ]	\}}|t |qS r	   r,   r   r	   r	   r   r   >   s    zload.<locals>.<dictcomp>r   r   r   r   Nr	   )r   r   dictr    r!   r"   rsplit
__import__getattrr(   tcastr-   getr   r   r)   )r+   
class_namemodule_pathmoduler*   
expressionr	   r	   r   r-   *   s"   


 r-   )r   r   r   r   )r+   r   r   r   )
__future__r   typingr5   sqlglotr   r    TYPE_CHECKINGUnionr1   r   strfloatintboolr   Listr!   r"   r#   r   r   r-   r	   r	   r	   r   <module>   s    
