o
    FDi~                     @   sP   d dl mZ ddlmZ ddlmZ ddlmZ ddlm	Z	 G d	d
 d
e	Z
dS )    UUID   )CannotParseUuidError   )
MAX_UINT64)compat   )FormatColumnc                   @   sD   e Zd ZdZejef ZdZdd Z	dd Z
ddd	Zdd
dZdS )
UUIDColumnr   Qc                    s|   t |}d gd | }t|D ]\}}d| }|d? t@ ||< |t@ ||d < q| d| }| j|j| I d H  d S Nr   @   r	   )len	enumerater   make_structwriterwrite_bytespack)selfitemsn_itemsuint_64_pairsixi2s r   X/var/www/Datamplify/venv/lib/python3.10/site-packages/asynch/proto/columns/uuidcolumn.pywrite_items   s   zUUIDColumn.write_itemsc                    sn   |  d| }|| j|jI d H }d g| }t|D ]}d| }|| d> ||d   ||< qt|S r   )r   unpackreader
read_bytessizerangetuple)r   r   r   r   uint_128_itemsr   r   r   r   r   
read_items   s   
zUUIDColumn.read_itemsNc                    s4   |d u rt dd  D S t  fddt|D S )Nc                 s   s    | ]}t |d V  qdS )intNr   ).0itemr   r   r   	<genexpr>/   s    z.UUIDColumn.after_read_items.<locals>.<genexpr>c                 3   s*    | ]\}}|r
d nt  | dV  qd S )Nr(   r   )r*   r   is_nullr   r   r   r,   1   s    
)r%   r   )r   r   	nulls_mapr   r.   r   after_read_items-   s
   zUUIDColumn.after_read_itemsc              	   C   sr   | j }t|D ]/\}}|r|| r|||< qzt|ts t|}W n ty0   td| dw |j||< qd S )NzCannot parse uuid '')
null_valuer   
isinstancer   
ValueErrorr   r)   )r   r   r/   r2   r   r+   r   r   r   before_write_items5   s   
zUUIDColumn.before_write_items)N)__name__
__module____qualname__ch_typer   string_typesr   py_typesformatr   r'   r0   r5   r   r   r   r   r   	   s    
r   N)uuidr   errorsr   streams.bufferedr   utilsr   baser
   r   r   r   r   r   <module>   s    