o
    `j4	                     @   sx   d dl mZ d dlmZmZ d dlmZmZmZ G dd deeddZ	G dd	 d	Z
G d
d de	ZG dd de	ZdS )   )JsonSchemaData)DataContainerSlotsBuilder)	BaseFieldStructField	load_jsonc                       sJ   e Zd ZdZ fddZd fdd	Zd fdd	Zedd	d
Z  Z	S )	ApiHeader c                    s\   t  jdi | |ddr,| jd dksJ t| jd | _t| jd | _d S d S )NinitTtypeheaderflexibleVersionsvalidVersionsr	   )super__init_subclass__get_jsonr   parse_versions_flexible_versions_valid_versions)clskw	__class__r	   W/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/kafka/protocol/api_header.pyr   	   s   zApiHeader.__init_subclass__Fc                    s*   |r| j d n| jd }t j|d|dS N    F)versioncompacttagged)r   r   r   encode)selfflexibler   r   r	   r   r       s   zApiHeader.encodec                    s0   |r| j d n| jd }t j||d|d d S r   )r   r   r   encode_into)r!   outr"   r   r   r	   r   r#      s   zApiHeader.encode_intoc                 C   s.   |r| j d n| jd }| jj||d|| dS )Nr   F)r   r   r   
data_class)r   r   _structdecode)r   datar"   r   r	   r	   r   r'      s   zApiHeader.decode)F)
__name__
__module____qualname__	__slots__r   r    r#   classmethodr'   __classcell__r	   r	   r   r   r      s    r   F)	metaclassr
   c                   @   s(   e Zd Zi Zedd Zedd ZdS )ResponseClassRegistryc                 C   s   || j |j< d S N)_response_class_registryAPI_KEY)r   response_classr	   r	   r   register_response_class'   s   z-ResponseClassRegistry.register_response_classc                 C   s$   | j |j}|d ur||j S d S r1   )r2   r   request_api_keyrequest_api_version)r   request_headerr4   r	   r	   r   get_response_class+   s   
z(ResponseClassRegistry.get_response_classN)r)   r*   r+   r2   r-   r5   r9   r	   r	   r	   r   r0   $   s    
r0   c                   @   s   e Zd Zdd ZdS )RequestHeaderc                 C   s
   t | S r1   )r0   r9   )r!   r	   r	   r   r9   3   s   
z RequestHeader.get_response_classN)r)   r*   r+   r9   r	   r	   r	   r   r:   2   s    r:   c                   @   s   e Zd ZdS )ResponseHeaderN)r)   r*   r+   r	   r	   r	   r   r;   7   s    r;   N)api_datar   data_containerr   r   schemasr   r   r   r   r0   r:   r;   r	   r	   r	   r   <module>   s    