o
    `j3                     @   s<   d dl mZ d dlmZ d dlmZmZ G dd deZdS )   )	BaseField)SimpleField)UnsignedVarInt32Int32c                       s   e Zd Zedd Zedd Zedd Zd fdd		Zd
d Zdd Z	dddZ
dddZdddZdddZdddZdd Zdd Z  ZS )
ArrayFieldc                 C   s<   d|v rd S |  |}|d uri |d|i}t|S d S )Nfieldstype)parse_array_typer   
parse_json)clsjsontype_str
inner_json r   a/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/kafka/protocol/schemas/fields/array.pyparse_inner_type	   s   

zArrayField.parse_inner_typec                 C   s@   |d  dr|d dd  }| drJ d|d  |S d S )Nr   z[]   z Unexpected double-array type: %s)
startswith)r   r   r   r   r   r   r	      s
   zArrayField.parse_array_typec                 C   s"   |  |}|d ur| ||dS d S )N)array_of)r   )r   r   
inner_typer   r   r   r
      s   
zArrayField.parse_jsonNc                    s8   |d u r|  |}|d usJ dt | || _d S )Nz'json does not contain a (simple) Array!)r   super__init__r   )selfr   r   	__class__r   r   r      s
   

zArrayField.__init__c                 C   s   dS )NTr   r   r   r   r   is_array&   s   zArrayField.is_arrayc                 C   s"   |dkrd S |s
g S t d| j )NnullzFInvalid default for field %s. The only valid default is empty or null.)
ValueError_name)r   defaultr   r   r   _calculate_default)   s
   zArrayField._calculate_defaultFc                    sr    rt |d urt|d nd}nt|d urt|nd}|d u r%|S  fdd|D }d|g| S )Nr       c                    s    g | ]}j j| d qS versioncompacttagged)r   encode).0itemr'   r   r(   r&   r   r   
<listcomp>8       z%ArrayField.encode.<locals>.<listcomp>    )r   r)   lenr   join)r   itemsr&   r'   r(   sizer   r   r,   r   r)   1   s    zArrayField.encodec                 C   sv   |rt ||d urt|d nd nt||d urt|nd |d u r'd S | jj}|D ]}||||||d q-d S )Nr   r"   r#   r%   )r   encode_intor0   r   r   )r   r2   outr&   r'   r(   r4   r+   r   r   r   r4   <   s   "zArrayField.encode_intoc                 C   s\  |r"| d}||d|||f  t||| ||d|  n.||d ||d|  ||d ||d ||d ||d	|  ||d |d
 }| d}	| j}
t|
tr|
 r|
j	j
}|
j	j}||d||f  ||d|	|f  ||d||	f  ||d|  d S ||d|	|f  |
j||	|d
 |||d d S )Nanz)%s = len(%s) + 1 if %s is not None else 0zif %s is not None:   zif %s is None:z!    pack_into('>i', buf, pos, -1)z    pos += 4else:z&    pack_into('>i', buf, pos, len(%s))    aiz%d * len(%s)zfor %s in %s:z!    pack_into('%s', buf, pos, %s)z    pos += %dr%   )next_varemitr   emit_encode_intoemit_reserver   
isinstancer   is_batchable_type_be_fmtr3   )r   ctxval_exprindentr&   r'   r(   r6   guarditem_varelembe_fmtr3   r   r   r   r=   G   s4   


zArrayField.emit_encode_intoc                 C   s   | d}|rt||| ||d|  n||d|  ||d ||d|  ||d|  ||d |d }||d	|  | d
}	| d}
||d|	|f  | jj||
|d |||d ||d||
f  d S )Nnz%s -= 1z$%s = unpack_from(">i", data, pos)[0]zpos += 4zif %s == -1:z    %s = Noner8   r9   z%s = []idxr+   zfor %s in range(%s):r%   z    %s.append(%s))r;   r   emit_decode_fromr<   r   )r   rC   var_namerE   r&   r'   r(   rJ   inner_indentrK   r+   r   r   r   rL   i   s$   


zArrayField.emit_decode_fromc                    sL    rt }|d8 }nt}|dkrd S  fddt|D S )Nr   r#   c                    s    g | ]}j j d qS r$   )r   decode)r*   _r'   datar   r(   r&   r   r   r-      r.   z%ArrayField.decode.<locals>.<listcomp>)r   rO   r   range)r   rR   r&   r'   r(   r3   r   rQ   r   rO   }   s   


zArrayField.decodec                    s   |d u rd S  fdd|D S )Nc                    s   g | ]} j |qS r   )r   to_json)r*   ir   r   r   r-      s    z&ArrayField.to_json.<locals>.<listcomp>r   )r   valr   r   r   rT      s   zArrayField.to_jsonc                 C   s
   d| j  S )NzArrayField(%s))_jsonr   r   r   r   __repr__   s   
zArrayField.__repr__)N)NFF)__name__
__module____qualname__classmethodr   r	   r
   r   r   r!   r)   r4   r=   rL   rO   rT   rX   __classcell__r   r   r   r   r      s"    






"
r   N)baser   simpler   codecsr   r   r   r   r   r   r   <module>   s    