o
    `jJ                     @   s   d dl Z G dd dZdS )    Nc                   @   s  e Zd Zg Zdd Zedd Zedd Zedd Zed	d
 Z	dd Z
edd Zedd Zdd Zdd Zdd Zdd Zdd Zdd Zedd Zedd  Zed!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zed+d, Zd7d/d0Zd7d1d2Zd3d4 Zd5d6 Zd-S )8	BaseFieldc                 K   s   | j |  d S N)FIELD_TYPESappend)clskw r   `/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/kafka/protocol/schemas/fields/base.py__init_subclass__   s   zBaseField.__init_subclass__c                 C   s   t ttj|dg pd S )Nfields)tuplemapr   
parse_jsonget)r   jsonr   r   r	   parse_json_fields
   s   zBaseField.parse_json_fieldsc                 C   sJ   d|vrt d|d }| jD ]}||}|d ur|  S qt d| )NtypezNo type found in jsonzUnable to parse field type: %s)
ValueErrorr   r   )r   r   type_str
field_type
maybe_typer   r   r	   r      s   

zBaseField.parse_jsonc                 C   s   t dd| S )Nz(?<!^)(?=[A-Z])_)resublower)r   namer   r   r	   underscore_name   s   zBaseField.underscore_namec                 C   sz   |d u s
|  dkrd S |  dkrdS |d dkr$t|d d dfS |ddkr3t|t|fS ttt|dS )N none)r   r   +i  -)stripintfindr   r   split)r   versionsr   r   r	   parse_versions   s   zBaseField.parse_versionsc                 C   s   || _ |d | _| | j| _dD ]}||v r&| || | _| jd ur& nqtd|d| _| |d| _	| |d| _
| |d| _|d | _d	|v r\| || _nd | _|d
| _|d| _|dd| _|d| _d S )Nr   )r&   validVersionsz Unable to find versions in json!tagtaggedVersionsflexibleVersionsnullableVersionsr   r   	ignorable
entityTypeaboutr   zeroCopy)_json_namer   r   r'   	_versionsr   r   _tag_tagged_versions_flexible_versions_nullable_versions	_type_strr   _fields
_ignorable_entity_type_about
_zero_copy)selfr   versions_keyr   r   r	   __init__+   s,   


zBaseField.__init__c                 C      | j S r   )r8   r>   r   r   r	   r   J      zBaseField.type_strc                 C   rA   r   )r4   rB   r   r   r	   r)   N   rC   zBaseField.tagc                 C      dS NFr   rB   r   r   r	   is_arrayS      zBaseField.is_arrayc                 C   rD   rE   r   rB   r   r   r	   	is_structV   rG   zBaseField.is_structc                 C   rD   rE   r   rB   r   r   r	   is_struct_arrayY   rG   zBaseField.is_struct_arrayc                 C   rD   rE   r   rB   r   r   r	   is_batchable\   rG   zBaseField.is_batchablec                 C   rD   rE   r   rB   r   r   r	   has_data_class_   rG   zBaseField.has_data_classc                 O      t r   NotImplementedError)r>   argskwargsr   r   r	   __call__b   rG   zBaseField.__call__c                 C   rA   r   )r9   rB   r   r   r	   r   e   rC   zBaseField.fieldsc                 C   
   | j d S )Nr   r3   rB   r   r   r	   min_versioni      
zBaseField.min_versionc                 C   rR   )N   rS   rB   r   r   r	   max_versionm   rU   zBaseField.max_versionc                 C   s$   | j d |  ko| j d kS   S )Nr   rV   rS   r>   versionr   r   r	   for_version_qq   s   $zBaseField.for_version_qc                 C   s2   | j d u rdS | j d |  ko| j d kS   S )NFr   rV   )r7   rX   r   r   r	   nullable_for_version_qt   s   
$z BaseField.nullable_for_version_qc                 C   sD   | j d u s
| jd u rdS | jd |  kr| jd ks dS  dS dS )NFr   rV   T)r4   r5   rX   r   r   r	   tagged_field_qy   s   zBaseField.tagged_field_qc                 C   s   |S r   r   )r>   defaultr   r   r	   _calculate_default   rG   zBaseField._calculate_defaultc              	   C   s8   z| j W S  ty   | | jdd| _ | j  Y S w )Nr]   r   )_defaultAttributeErrorr^   r1   r   rB   r   r   r	   r]      s   
zBaseField.defaultNFc                 C   rL   r   rM   )r>   valuerY   compacttaggedr   r   r	   encode   rG   zBaseField.encodec                 C   rL   r   rM   )r>   datarY   rb   rc   r   r   r	   decode   rG   zBaseField.decodec                 C   s
   d| j  S )NzBaseField(%s))r1   rB   r   r   r	   __repr__   s   
zBaseField.__repr__c                 C   s4   | j |j krdS | j|jkrdS | j|jkrdS dS )NFT)	__class__r   r)   )r>   otherr   r   r	   __eq__   s   zBaseField.__eq__)NFF) __name__
__module____qualname__r   r
   classmethodr   r   r   r'   r@   propertyr   r)   rF   rH   rI   rJ   rK   rQ   r   rT   rW   rZ   r[   r\   r^   r]   rd   rf   rg   rj   r   r   r   r	   r      sL    











r   )r   r   r   r   r   r	   <module>   s    