o
    8DiC                     @  s   d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	m
Z
 G dd dZG dd	 d	ZG d
d dZG dd dZG dd de	ZddddZddddZdS )    )annotationsN)DialectType)
dict_depth)AbstractMappingSchemanormalize_namec                   @  sz   e Zd Z		d%d&d
dZd'ddZd(ddZd)ddZd*ddZed+ddZ	d+ddZ
d,ddZd-d!d"Zd.d#d$ZdS )/TableNcolumns
t.Iterablerowst.Optional[t.List]column_ranget.Optional[range]returnNonec                 C  sV   t || _|| _t| j| j| _|pg | _|r$t|d t| jks$J t| | _d S Nr   )	tupler   r   	RowReaderreaderr
   lenRangeReaderrange_reader)selfr   r
   r    r   O/var/www/Datamplify/venv/lib/python3.10/site-packages/sqlglot/executor/table.py__init__   s   

zTable.__init__strc                 G  sD   |  j |7  _ | jrt| jj| jjt| | _t| j | j| _d S N)r   r   rangestartstopr   r   r   )r   r   r   r   r   add_columns   s   zTable.add_columnsrowt.Listc                 C  s&   t |t | jksJ | j| d S r   )r   r   r
   append)r   r!   r   r   r   r#   !   s   zTable.appendc                 C  s   | j   d S r   )r
   popr   r   r   r   r$   %   s   z	Table.popc                   s    fdd j D S )Nc                   s   g | ]
}t t j|qS r   )dictzipr   .0r!   r%   r   r   
<listcomp>)   s    z#Table.to_pylist.<locals>.<listcomp>)r
   r%   r   r%   r   	to_pylist(   s   zTable.to_pylistintc                 C  
   t | jS r   )r   r   r%   r   r   r   width+   s   
zTable.widthc                 C  r-   r   )r   r
   r%   r   r   r   __len__/      
zTable.__len__	TableIterc                 C  s   t | S r   )r1   r%   r   r   r   __iter__2   s   zTable.__iter__indexr   c                 C  s   | j | | j_| jS r   )r
   r   r!   )r   r3   r   r   r   __getitem__5   s   zTable.__getitem__c                   s   t fddtjD }dd |D ddd |D g}tD ]\} |dkr. n|d fdd|D  q$d	|S )
Nc                 3  s(    | ]\}} j r| j v r|V  qd S r   r   r)   icolumnr%   r   r   	<genexpr>:   s    
z!Table.__repr__.<locals>.<genexpr>c                 S  s   i | ]}|t |qS r   )r   r)   r8   r   r   r   
<dictcomp>?   s    z"Table.__repr__.<locals>.<dictcomp> c                 s      | ]}|V  qd S r   r   r:   r   r   r   r9   @       
   c                 3  s2    | ]}t  | | d |  V  qdS )r   N)r   rjustr:   )r!   widthsr   r   r9   G   s    "

)r   	enumerater   joinr#   )r   r   linesr7   r   )r!   r   rA   r   __repr__9   s   
zTable.__repr__)NN)r   r	   r
   r   r   r   r   r   )r   r   r   r   )r!   r"   r   r   )r   r   )r   r"   r   r,   r   r1   )r3   r,   r   r   )r   r   )__name__
__module____qualname__r   r    r#   r$   r+   propertyr.   r/   r2   r4   rF   r   r   r   r   r   
   s    






r   c                   @  s*   e Zd ZdddZdddZdd
dZdS )r1   tabler   r   r   c                 C  s   || _ d| _d S )N)rM   r3   r   rM   r   r   r   r   O   s   
zTableIter.__init__c                 C  s   | S r   r   r%   r   r   r   r2   S   s   zTableIter.__iter__r   c                 C  s.   |  j d7  _ | j t| jk r| j| j  S t)N   )r3   r   rM   StopIterationr%   r   r   r   __next__V   s   zTableIter.__next__NrM   r   r   r   rH   )r   r   )rI   rJ   rK   r   r2   rR   r   r   r   r   r1   N       

r1   c                   @  s*   e Zd ZdddZddd	ZdddZdS )r   rM   r   r   r   c                 C  s   || _ td| _d S r   )rM   r   rO   r   r   r   r   ^   s   zRangeReader.__init__r,   c                 C  r-   r   )r   r   r%   r   r   r   r/   b   r0   zRangeReader.__len__r8   r   c                   s    fddj D S )Nc                 3  s    | ]
}j |   V  qd S r   )rM   )r)   r7   r8   r   r   r   r9   f   s    z*RangeReader.__getitem__.<locals>.<genexpr>)r   r   r8   r   rU   r   r4   e   s   zRangeReader.__getitem__NrS   rG   )r8   r   )rI   rJ   rK   r   r/   r4   r   r   r   r   r   ]   rT   r   c                   @  s   e Zd ZdddZdd ZdS )r   Nc                   s"    fddt |D | _d | _d S )Nc                   s"   i | ]\}} r| v r||qS r   r   r6   r5   r   r   r;   k   s    z&RowReader.__init__.<locals>.<dictcomp>)rC   r   r!   )r   r   r   r   r5   r   r   j   s   

zRowReader.__init__c                 C  s   | j | j|  S r   )r!   r   rV   r   r   r   r4   p      zRowReader.__getitem__r   )rI   rJ   rK   r   r4   r   r   r   r   r   i   s    
r   c                   @  s   e Zd ZdS )TablesN)rI   rJ   rK   r   r   r   r   rX   t   s    rX   dt.Optional[t.Dict]dialectr   r   c                 C  s   t t| |dS )Nr[   )rX   _ensure_tables)rY   r[   r   r   r   ensure_tablesx   rW   r^   t.Dictc                   s   | si S t | }|dkrfdd|  D S i }|  D ]>\}}t|dj}t|tr2|||< qfdd|D }|rHtdd |d	 D nd
  fdd|D }t |d||< q|S )NrP   c                   s*   i | ]\}}t | d djt| dqS )T)r[   is_tabler\   )r   namer]   )r)   kvr\   r   r   r;      s    z"_ensure_tables.<locals>.<dictcomp>r\   c                   s"   g | ]} fd d|  D qS )c                   s    i | ]\}}t | d j|qS )r\   )r   ra   )r)   column_namevaluer\   r   r   r;      s    z-_ensure_tables.<locals>.<listcomp>.<dictcomp>)itemsr(   r\   r   r   r*      s    
z"_ensure_tables.<locals>.<listcomp>c                 s  r=   r   r   )r)   rd   r   r   r   r9      r>   z!_ensure_tables.<locals>.<genexpr>r   r   c                   s"   g | ] t  fd dD qS )c                 3  s    | ]} | V  qd S r   r   )r)   ra   r!   r   r   r9      s    z,_ensure_tables.<locals>.<listcomp>.<genexpr>)r   )r)   )column_namesrg   r   r*      s   " )r   r
   )r   rf   r   ra   
isinstancer   r   )rY   r[   depthresult
table_namerM   r
   r   )rh   r[   r   r]   |   s&   



r]   r   )rY   rZ   r[   r   r   rX   )rY   rZ   r[   r   r   r_   )
__future__r   typingtsqlglot.dialects.dialectr   sqlglot.helperr   sqlglot.schemar   r   r   r1   r   r   rX   r^   r]   r   r   r   r   <module>   s    D