o
    `jF                     @   s   d dl mZmZmZ d dlmZ d dlZddlmZ ddl	m
Z
mZmZmZmZmZ G dd dZG d	d
 d
eeZG dd deeZG dd deZG dd deZG dd deeZG dd deZG dd deZdd ZdS )    )ABCabstractmethodabstractproperty)BytesION   )Struct)Int16Int32StringSchemaArrayTaggedFieldsc                   @   s(   e Zd Zi Zedd Zedd ZdS )ResponseClassRegistryc                 C   s   || j |j|jf< d S N)_response_class_registryAPI_KEYAPI_VERSION)clsresponse_class r   T/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/kafka/protocol/old/api.pyregister_response_class   s   z-ResponseClassRegistry.register_response_classc                 C   s$   |j |jf}|| jv r| j| S d S r   )api_keyapi_versionr   )r   headerkeyr   r   r   get_response_class   s   

z(ResponseClassRegistry.get_response_classN)__name__
__module____qualname__r   classmethodr   r   r   r   r   r   r   	   s    
r   c                   @   s6   e Zd ZedefdefdefdedfZdd ZdS )	RequestHeaderr   r   correlation_id	client_idutf-8c                 C   s
   t | S r   )r   r   selfr   r   r   r      s   
z RequestHeader.get_response_classN)	r   r   r   r   r   r	   r
   SCHEMAr   r   r   r   r   r!      s    
r!   c                   @   s<   e Zd ZedefdefdefdedfdefZdd Z	d	S )
RequestHeaderV2r   r   r"   r#   r$   tagsc                 C   s$   | j | jf}|tjv rtj| S d S r   )r   r   r   r   )r&   r   r   r   r   r   -   s   

z"RequestHeaderV2.get_response_classN)
r   r   r   r   r   r	   r
   r   r'   r   r   r   r   r   r(   #   s    
r(   c                   @   s   e Zd ZedefZdS )ResponseHeaderr"   N)r   r   r   r   r	   r'   r   r   r   r   r*   3   s    r*   c                   @   s   e Zd ZedefdefZdS )ResponseHeaderV2r"   r)   N)r   r   r   r   r	   r   r'   r   r   r   r   r+   9   s
    r+   c                       s   e Zd Z fddZedd Zedd Zdd Zee	d	d
 Z
edd ZdddZd fdd	Zee	dd Zedd Zed fdd	Z fddZ  ZS )RequestResponsec                    s   t  j|i | d | _d S r   )super__init___header)r&   argskwargs	__class__r   r   r.   A   s   
zRequestResponse.__init__c                 C      dS )z"Integer identifier for api requestNr   r%   r   r   r   r   E      zRequestResponse.API_KEYc                 C   r4   )zInteger of api request versionNr   r%   r   r   r   r   J   r5   zRequestResponse.API_VERSIONc                 C   s   t | j| S r   )
_to_objectr'   r%   r   r   r   	to_objectO   s   zRequestResponse.to_objectc                 C      d S r   r   r   r   r   r   
is_requestR   r5   zRequestResponse.is_requestc                 C   s   | j S r   )r/   r%   r   r   r   r   W   s   zRequestResponse.headerr   kafka-pythonc                 C   s<   |   r| j| j||d}nd|i}|  di || _d S )N)r   r   r"   r#   r"   r   )r:   r   r   header_classr/   )r&   r"   r#   r1   r   r   r   with_header[   s   zRequestResponse.with_headerFc              	      s\   t   }|s|s|S |g}|r|d| j  |r)|dtttt| d|S )Nr       )	r-   encodeinsertr   r	   summaplenjoin)r&   r   frameddatabitsr2   r   r   r?   i   s   

zRequestResponse.encodec                 C   r8   r   r   r9   r   r   r   r<   t   r5   zRequestResponse.header_classc                 C   s   |   |S r   )r<   decode)r   read_bufferr   r   r   parse_headery   s   zRequestResponse.parse_headerc                    sf   |s
|s
t  |S t|trt|}|rt|}|r"| |}nd }t  |}|d ur1||_|S r   )r-   rH   
isinstancebytesr   r	   rJ   r/   )r   rF   r   rE   sizehdrretr2   r   r   rH   }   s   

zRequestResponse.decodec                    s   | j |j kot |S r   )r/   r-   __eq__)r&   otherr2   r   r   rP      s   zRequestResponse.__eq__)r   r;   )FF)r   r   r   r.   r   r   r   r7   r    r   r:   propertyr   r=   r?   r<   rJ   rH   rP   __classcell__r   r   r2   r   r,   @   s,    




r,   c                   @   s0   e Zd ZdZedd Zdd Zedd ZdS )	RequestFc                 C   r4   )NTr   r9   r   r   r   r:         zRequest.is_requestc                 C   r4   )zJOverride this method if an api request does not always generate a responseTr   r%   r   r   r   expect_response   rU   zRequest.expect_responsec                 C      | j rtS tS r   )FLEXIBLE_VERSIONr(   r!   r9   r   r   r   r<         zRequest.header_classN)r   r   r   rX   r    r:   rV   r<   r   r   r   r   rT      s    
rT   c                       s8   e Zd ZdZ fddZedd Zedd Z  ZS )ResponseFc                    s&   t  jdi | tt|  d S )Nr   )r-   __init_subclass__r   r   weakrefproxy)r   r1   r2   r   r   r[      s   zResponse.__init_subclass__c                 C   r4   )NFr   r9   r   r   r   r:      rU   zResponse.is_requestc                 C   rW   r   )rX   r+   r*   r9   r   r   r   r<      rY   zResponse.header_class)	r   r   r   rX   r[   r    r:   r<   rS   r   r   r2   r   rZ      s    
rZ   c                    s   i }t t| j| jD ]D\}\} t|tr||}n|| }t tr-t |||< qt t	rKt j
t	tfrF fdd|D ||< q|||< q|||< q|S )Nc                    s   g | ]}t  j|qS r   )r6   array_of).0x_typer   r   
<listcomp>   s    
z_to_object.<locals>.<listcomp>)	enumeratezipnamesfieldsrK   r   get_itemr   r6   r   r^   )schemarF   objidxnamevalr   ra   r   r6      s   





r6   )abcr   r   r   ior   r\   structr   typesr   r	   r
   r   r   r   r   r!   r(   r*   r+   r,   rT   rZ   r6   r   r   r   r   <module>   s     R