o
    FDi                     @   sl   d dl mZ d dlmZmZmZ d dlmZmZ d dl	m
Z
 d dlmZmZ G dd dZG dd	 d	Zd
S )    )	constants)	BaseBlock	BlockInfoColumnOrientedBlock)read_columnwrite_column)Context)BufferedReaderBufferedWriterc                   @   s8   e Zd ZdededefddZdefddZd	d
 Z	dS )BlockWriterreaderwritercontextc                 C   s   || _ || _|| _d S N)r   r   r   selfr   r   r    r   S/var/www/Datamplify/venv/lib/python3.10/site-packages/asynch/proto/streams/block.py__init__	      
zBlockWriter.__init__blockc           	   
      s   | j jj}|tjkr|j| jI d H  |j}|j	}| j
|I d H  | j
|I d H  t|jD ]?\}\}}| j|I d H  | j|I d H  |rqz||}W n ty^   tdw t| j| j| j ||||jdI d H  q2|  I d H  d S )NzDifferent rows length)types_check)r   server_inforevisionr   !DBMS_MIN_REVISION_WITH_BLOCK_INFOinfowriter   num_columnsnum_rowswrite_varint	enumeratecolumns_with_types	write_strget_column_by_index
IndexError
ValueErrorr   r   r   finalize)	r   r   r   	n_columnsn_rowsicol_namecol_typeitemsr   r   r   r      s@   




zBlockWriter.writec                    s   | j  I d H  d S r   )r   flush)r   r   r   r   r&   4   s   zBlockWriter.finalizeN)
__name__
__module____qualname__r	   r
   r   r   r   r   r&   r   r   r   r   r      s    &r   c                   @   s&   e Zd ZdedefddZdd ZdS )BlockReaderr   r   c                 C   s   || _ || _|| _d S r   )r   r   r   r   r   r   r   r   9   r   zBlockReader.__init__c                    s   t  }| jjj}|tjkr|| jI d H  | j I d H }| j I d H }g g g }}}t	|D ]1}| j
 I d H }	| j
 I d H }
||	 ||
 |rdt| j| j| j|
|I d H }|| q3ttt||||d}|S )N)r!   datar   )r   r   r   r   r   r   readr   read_varintrangeread_strappendr   r   r   listzip)r   r   r   r'   r(   r2   namestypesr)   column_namecolumn_typecolumnr   r   r   r   r3   >   s:   





zBlockReader.readN)r.   r/   r0   r	   r
   r   r3   r   r   r   r   r1   8   s    r1   N)asynch.protor   asynch.proto.blockr   r   r   asynch.proto.columnsr   r   asynch.proto.contextr   asynch.proto.streams.bufferedr	   r
   r   r1   r   r   r   r   <module>   s    0