
    Ii                         S SK JrJr  S SKJrJrJr  S SKJr  S SK	J
r
Jr   " S S\5      r " S S\5      r " S	 S
\5      r " S S\5      rg)   )get_inner_specget_inner_columns_with_types)read_varintread_binary_uint8read_binary_int32)write_varint)write_binary_uint8write_binary_int32c                   (    \ rS rSrSrSrS rS rSrg)	BlockInfo   Fc                     [        SU5        [        U R                  U5        [        SU5        [        U R                  U5        [        SU5        g )Nr          )r   r	   is_overflowsr
   
bucket_num)selfbufs     =/venv/lib/python3.13/site-packages/clickhouse_driver/block.pywriteBlockInfo.write   s>    Q4,,c2Q4??C0Q    c                      [        U5      nU(       d  g US:X  a  [        [        U5      5      U l        OUS:X  a  [	        U5      U l        MK  )Nr   r   )r   boolr   r   r   r   )r   r   	field_nums      r   readBlockInfo.read   sG    #C(IA~$():3)?$@!a"3C"8 r   )r   r   N)	__name__
__module____qualname____firstlineno__r   r   r   r   __static_attributes__ r   r   r   r      s    LJ
9r   r   c                   n   ^  \ rS rSr  SU 4S jjrS r\S 5       r\S 5       rS r	S r
S rS	 rS
rU =r$ )	BaseBlock"   c                    > U=(       d    / U l         X@l        U=(       d
    [        5       U l        U R	                  U=(       d    / 5      U l        [        [        U ]#  5         g N)	columns_with_typestypes_checkr   info	normalizedatasuperr&   __init__)r   r*   r.   r,   r+   	__class__s        r   r0   BaseBlock.__init__#   sE    "4":&'IK	NN4:2.	i')r   c                     U$ r)   r$   r   r.   s     r   r-   BaseBlock.normalize,   s    r   c                     [         er)   NotImplementedErrorr   s    r   num_columnsBaseBlock.num_columns/       !!r   c                     [         er)   r7   r9   s    r   num_rowsBaseBlock.num_rows3   r<   r   c                     [         er)   r7   r9   s    r   get_columnsBaseBlock.get_columns7       !!r   c                     [         er)   r7   r9   s    r   get_rowsBaseBlock.get_rows:   rC   r   c                     [         er)   r7   r   indexs     r   get_column_by_indexBaseBlock.get_column_by_index=   rC   r   c                 8    [        [        U R                  6 5      $ r)   )listzipr.   r9   s    r   
transposedBaseBlock.transposed@   s    CO$$r   )r*   r.   r,   r+   )NNNF)r   r    r!   r"   r0   r-   propertyr:   r>   rA   rE   rJ   rO   r#   __classcell__)r1   s   @r   r&   r&   "   sT    59(-* " " " """"% %r   r&   c                   X    \ rS rSrS r\S 5       r\S 5       rS rS r	S r
S rS	 rS
rg)ColumnOrientedBlockD   c                 \    U(       d  / $ U R                  U5        U R                  U5        U$ r)   )_check_number_of_columns_check_all_columns_equal_lengthr4   s     r   r-   ColumnOrientedBlock.normalizeE   s+    I%%d+,,T2r   c                 ,    [        U R                  5      $ r)   lenr.   r9   s    r   r:   ColumnOrientedBlock.num_columnsM       499~r   c                 X    U R                   (       a  [        U R                  S   5      $ S$ Nr   )r:   r\   r.   r9   s    r   r>   ColumnOrientedBlock.num_rowsQ   s"    $($4$4s499Q< ;!;r   c                     U R                   $ r)   r.   r9   s    r   rA   ColumnOrientedBlock.get_columnsU       yyr   c                 "    U R                  5       $ r)   rO   r9   s    r   rE   ColumnOrientedBlock.get_rowsX         r   c                      U R                   U   $ r)   rc   rH   s     r   rJ   'ColumnOrientedBlock.get_column_by_index[   s    yyr   c                     [        U R                  5      n[        U5      nX#:w  a  SR                  X#5      n[        U5      eg )NExpected {} columns, got {})r\   r*   format
ValueError)r   r.   expected_row_lengotmsgs        r   rW   ,ColumnOrientedBlock._check_number_of_columns^   sB    t667$i"/667GMCS/! #r   c                     [        US   5      nU H/  n[        U5      nXB:w  d  M  SR                  X$5      n[        U5      e   g )Nr   zExpected {} rows, got {})r\   rn   ro   )r   r.   expectedcolumnrq   rr   s         r   rX   3ColumnOrientedBlock._check_all_columns_equal_lengthf   sA    tAw<Ff+C077F o%	 r   r$   N)r   r    r!   r"   r-   rQ   r:   r>   rA   rE   rJ   rW   rX   r#   r$   r   r   rT   rT   D   sH       < <! "&r   rT   c                       \ rS rSr\4r\\4r\\-   r	S r
\S 5       r\S 5       rS rS rS rS rS	 rS
 rS rS rS rSrg)RowOrientedBlockp   c                     U(       d  / $ US   nU R                   (       a  U R                  U5        [        U[        5      (       a  U R	                  U5        U$ U R                  U5        U$ r`   )r+   _check_row_type
isinstancedict_mutate_dicts_to_rows_check_rows)r   r.   	first_rows      r   r-   RowOrientedBlock.normalizeu   sc    I G	  +i&&&&t,  T"r   c                     U R                   b  [        U R                   5      $ U R                  (       a  [        U R                  S   5      $ S$ r`   )r*   r\   r>   r.   r9   s    r   r:   RowOrientedBlock.num_columns   s=    "".t..//$(MMs499Q< 8q8r   c                 ,    [        U R                  5      $ r)   r[   r9   s    r   r>   RowOrientedBlock.num_rows   r^   r   c                 "    U R                  5       $ r)   rg   r9   s    r   rA   RowOrientedBlock.get_columns   ri   r   c                     U R                   $ r)   rc   r9   s    r   rE   RowOrientedBlock.get_rows   re   r   c                 J    U R                    Vs/ s H  o"U   PM	     sn$ s  snf r)   rc   )r   rI   rows      r   rJ   $RowOrientedBlock.get_column_by_index   s     &*ii0isE
i000s    c                 z    SnU R                   (       a  U R                  nU R                  UU R                  U5      $ )NF)r+   _check_dict_row_type_pure_mutate_dicts_to_rowsr*   )r   r.   check_row_types      r   r   &RowOrientedBlock._mutate_dicts_to_rows   s=    !66N..##
 	
r   c           	         / nU HF  u  pVS nUR                  S5      (       a  [        SU5      n[        U5      nUR                  XW45        MH     [	        U5       H`  u  pU(       a  U" U
5        / nU H@  u  pWUc  UR                  X   5        M  UR                  U R                  X   Xs5      5        MB     XU	'   Mb     U$ )NNested)
startswithr   r   append	enumerater   )r   r.   r*   r   columns_with_cwtnametype_cwt
inner_specir   new_datas               r   r   +RowOrientedBlock._pure_mutate_dicts_to_rows   s     -KDC))+He<
2:>##TK0 .  oFAs#H-	;OOCI.OOD$C$C	3% 	 . G & r   c                     [        U R                  5      n[        US   5      nX#:w  a  SR                  X#5      n[        U5      eU R                  (       a  U R
                  nU H  nU" U5        M     g g )Nr   rm   )r\   r*   rn   ro   r+   _check_tuple_row_type)r   r.   rp   rq   rr   r   r   s          r   r   RowOrientedBlock._check_rows   sl    t667$q'l"/667GMCS/!!77Ns#  r   c                 ~    [        XR                  5      (       d#  [        SR                  [	        U5      5      5      eg )Nz:Unsupported row type: {}. dict, list or tuple is expected.)r}   supported_row_types	TypeErrorrn   typer   r   s     r   r|    RowOrientedBlock._check_row_type   s6    #7788LS	"  9r   c                 ~    [        XR                  5      (       d#  [        SR                  [	        U5      5      5      eg )Nz4Unsupported row type: {}. list or tuple is expected.)r}   tuple_row_typesr   rn   r   r   s     r   r   &RowOrientedBlock._check_tuple_row_type   s6    #3344FS	"  5r   c                 ~    [        XR                  5      (       d#  [        SR                  [	        U5      5      5      eg )Nz+Unsupported row type: {}. dict is expected.)r}   dict_row_typesr   rn   r   r   s     r   r   %RowOrientedBlock._check_dict_row_type   s6    #2233=S	"  4r   r$   N)r   r    r!   r"   r~   r   rM   tupler   r   r-   rQ   r:   r>   rA   rE   rJ   r   r   r   r|   r   r   r#   r$   r   r   ry   ry   p   sw    XNUmO(?:" 9 9  !1	
<$r   ry   N)columns.utilr   r   readerr   r   r   varintr   writerr	   r
   objectr   r&   rT   ry   r$   r   r   <module>r      sH    F E E   :9 96% %D)&) )&Xsy sr   