o
    `j                     @   sX   d dl mZmZ d dlmZ ddlmZ ddlmZm	Z	 d dl
mZ G dd deZd	S )
    )ABCabstractproperty)BytesIO   )AbstractType)SchemaTaggedFields)
WeakMethodc                       sp   e Zd Zedd Zi Zdd Z fddZdd Zd	d
 Z	e
dd Zdd Zdd Zdd Zdd Z  ZS )Structc                 C   s   dS )z2An instance of Schema() representing the structureN selfr   r   W/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/kafka/protocol/old/struct.pySCHEMA   s   zStruct.SCHEMAc                 C   s6   || j v rt| | j | S tdt| j d| d)N'z' object has no attribute ')ALIASESgetattrAttributeErrortype__name__r   namer   r   r   __getattr__   s   
zStruct.__getattr__c                    s"   || j v r
| j | }t ||S N)r   super__setattr__)r   r   value	__class__r   r   r      s   

zStruct.__setattr__c                 O   sH  | j  r2t|t| j d krg |i R }nt|t| j kr2|d d u r2g |d d i R }t|t| j krPt| j jD ]\}}t| |||  qAd S t|dkrZtd| j  rj|dd u rji |d< | jD ]}||v r}|	||| j| < qm| j jD ]}t| ||	|d  q|rtdt
| j jd| f d S )Nr   r   z#Args must be empty or mirror schematagszKeyword(s) not in schema %s: %s, )r   has_tagged_fieldslen	enumeratenamessetattr
ValueErrorgetr   poplistjoinkeys)r   argskwargsir   r   r   r   __init__   s6   



zStruct.__init__c                    s    j  fdd j jD S )Nc                    s   g | ]}t  |qS r   )r   ).0r   r   r   r   
<listcomp>8   s    z!Struct.encode.<locals>.<listcomp>)r   encoder%   r   r   r   r   r3   6   s   zStruct.encodec                 C   s"   t |tr	t|}| | j| S r   )
isinstancebytesr   r   decode)clsdatar   r   r   r6   ;   s   
zStruct.decodec                 C   s"   || j jvrtd| t| |S )Nz%s is not in the schema)r   r%   KeyErrorr   r   r   r   r   get_itemA   s   
zStruct.get_itemc              
   C   sX   g }t | jj| jjD ]\}}|d||t| |f  q| jjd d	| d S )Nz%s=%s(r!   ))
zipr   r%   fieldsappendreprr   r   r   r+   )r   key_valsr   fieldr   r   r   __repr__F   s    zStruct.__repr__c                 C   s   t |  S r   )hashr3   r   r   r   r   __hash__L   s   zStruct.__hash__c                 C   sJ   t |tsdS | j|jkrdS | jjD ]}t| |t||kr" dS qdS )NFT)r4   r
   r   r%   r   )r   otherattrr   r   r   __eq__O   s   
zStruct.__eq__)r   
__module____qualname__r   r   r   r   r   r0   r3   classmethodr6   r:   rC   rE   rH   __classcell__r   r   r   r   r
   
   s    

r
   N)abcr   r   ior   abstractr   typesr   r   
kafka.utilr	   r
   r   r   r   r   <module>   s    