o
    i                     @   s   d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ G dd dZ dS )   )RootTerminalBooleanSequenceRepeaterActionRecordStart	RecordEnd
FieldStartFieldEndIntNullStringAlternativeUnionLongFloatDoubleBytesMapEndMapStartMapKeyMarkerEnum
EnumLabelsFixed
ArrayStartArrayEndItemEnd
NO_DEFAULT   )extract_record_typec                   @   sZ   e Zd Zdd Zdd ZdddZefdd	Zd
d Zdd Z	dd Z
dd Zdd ZdS )Parserc                 C   s&   || _ g | _|| _|| _|  | _d S N)schema_processed_recordsnamed_schemasaction_functionparsestack)selfr#   r%   r&    r*   X/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/fastavro/io/parser.py__init__$   s
   zParser.__init__c                 C   s,   |  | j}t|g}|jd| ||gS )N    )_parser#   r   
productioninsert)r)   symbolrootr*   r*   r+   r'   +   s   
zParser.parseNc                 C   s   g }| t|d |d D ]@}|d }|dt| |d ur5||d v r5ttt gdgd dt }n| |d |	dt
}|d| |dt  q|dt  |S )Ndefaultfieldsnamer-   typenullr4   )appendr   r0   r
   r   r   r   r   r.   getr   r   r	   )r)   r#   r4   schema_namer/   field
field_nameinternal_recordr*   r*   r+   _process_record1   s    zParser._process_recordc              	   C   s  t |}|dkr.g }|d }|| jvr | j| | ||}n| j|||d}t| }|S |dkreg }g }|D ]!}	|| |	 t|	trT||	d|	d q8||	 q8tt	|||dt
 S |dkrtt | |d t t }
t|
t|dS |d	krtt t | |d
 }
t|
t|dS |dkrtt|d t|dS |dkrt S |dkrt|dS |dkrt|dS |dkrt|dS |dkrt|dS |dkrt|dS |dkrt|dS |dkrt|dS |dkrt|dS || jv r| | j| S td| )Nrecordr6   )r;   unionr7   r3   mapvaluesarrayitemsenumsymbolsr8   booleanstringbytesintlongfloatdoublefixedzUnhandled type: )r    r$   r9   r?   r   r.   
isinstancedictr:   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   	Exception)r)   r#   r4   record_typer/   r;   seqrG   labelscandidate_schemarepeatr*   r*   r+   r.   I   sz   









zParser._parsec                 C   sn   	 | j  }||kr|S t|tr| | nt|tr#td| t|tr/|j|kr/|S | j 	|j
 qNTInternal Parser Exception: )r(   poprP   r   r&   r   rR   r   endextendr/   )r)   r1   topr*   r*   r+   advance   s   


zParser.advancec                 C   sd   	 | j  }t|tr| | d S t|tr| | nt|ts*| j |j	 nt
d| qrX   )r(   rZ   rP   r   push_symbolr   r&   r   r\   r/   rR   r)   r]   r*   r*   r+   drain_actions   s   




zParser.drain_actionsc                 C   s
   | j  S r"   )r(   rZ   )r)   r*   r*   r+   
pop_symbol   s   
zParser.pop_symbolc                 C   s   | j | d S r"   )r(   r9   )r)   r1   r*   r*   r+   r_      s   zParser.push_symbolc                 C   s\   t | jdkr,| j }t|tst|tr| | ntd| t | jdksd S d S )Nr-   rY   )lenr(   rZ   rP   r   r   r&   rR   r`   r*   r*   r+   flush   s   
zParser.flushr"   )__name__
__module____qualname__r,   r'   r?   r   r.   r^   ra   rb   r_   rd   r*   r*   r*   r+   r!   #   s    
Lr!   N)!rG   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r    r!   r*   r*   r*   r+   <module>   s   | 