
    g                         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      Z y)   )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                   H    e Zd Zd Zd ZddZefdZd Zd Z	d Z
d	 Zd
 Zy)Parserc                 f    || _         g | _        || _        || _        | j	                         | _        y N)schema_processed_recordsnamed_schemasaction_functionparsestack)selfr&   r(   r)   s       G/var/www/openai/venv/lib/python3.12/site-packages/fastavro/io/parser.py__init__zParser.__init__$   s.    "$*.ZZ\
    c                     | j                  | j                        }t        |g      }|j                  j	                  d|       ||gS )N    )_parser&   r   
productioninsert)r,   symbolroots      r-   r*   zParser.parse+   s=    T[[)VH~q$'f~r/   Nc                    g }|j                  t        |             |d   D ]  }|d   }|j                  dt        |             |2||d   v r+t	        t        t               gdgd       t                     }n)| j                  |d   |j                  dt                    }|j                  d|       |j                  dt                       |j                  dt                      |S )Ndefaultfieldsnamer1   typenullr9   )appendr	   r4   r   r   r   r   r   r2   getr   r   r
   )r,   r&   r9   schema_namer3   field
field_nameinternal_records           r-   _process_recordzParser._process_record1   s    
+g67H%EvJaJ!78&;%-+G"*6(DA57# #'++&M599Y
#C# a1a, &  	!Y[)r/   c           	      R   t        |      }|dk(  rag }|d   }|| j                  vr.| j                  j                  |       | j                  ||      }n| j                  |||      }t	        | }|S |dk(  rg }g }|D ]t  }	|j                  | j                  |	             t        |	t              r1|j                  |	j                  d|	j                  d                   d|j                  |	       v t	        t        |||      t                     S |dk(  rNt        t               | j                  |d         t               t                     }
t	        |
t        |            S |d	k(  rEt        t!               t#               | j                  |d
               }
t	        |
t%        |            S |dk(  r"t	        t'        |d         t)        |            S |dk(  r
t+               S |dk(  rt-        |      S |dk(  rt        |      S |dk(  rt/        |      S |dk(  rt1        |      S |dk(  rt3        |      S |dk(  rt5        |      S |dk(  rt7        |      S |dk(  rt9        |      S || j:                  v r| j                  | j:                  |         S t=        d|       )Nrecordr;   )r@   unionr<   r8   mapvaluesarrayitemsenumsymbolsr=   booleanstringbytesintlongfloatdoublefixedzUnhandled type: )r!   r'   r>   rD   r   r2   
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&   r9   record_typer3   r@   seqrM   labelscandidate_schemarepeats              r-   r2   zParser._parseI   s   )&1("J .K$"9"99''..{;!11&'B
!11G 2 
 J'CJG#GF$* t{{+;<=.5MM(,,V5E5I5I&5QR MM"23 %+ KI57SSE!F8,-F FHW$=>>G#
	F7O,F
 FJw$?@@F"Jvi'894;PQQF"6MI%7++H$'**G#))E!w''F"((G#))H$'**G#))D...;;t11+>??.{m<==r/   c                 T   	 | j                   j                         }||k(  r|S t        |t              r| j	                  |       ndt        |t
              rt        d|       t        |t              r|j                  |k(  r|S | j                   j                  |j                         NInternal Parser Exception: )r+   poprV   r   r)   r   rX   r   endextendr3   )r,   r5   tops      r-   advancezParser.advance   s    **.."Cf}
C($$S)C*"=cU CDDC*sww&/@

!!#..1 r/   c                 J   	 | j                   j                         }t        |t              r| j	                  |       y t        |t
              r| j                  |       nDt        |t              s&| j                   j                  |j                         nt        d|       r_   )r+   ra   rV   r   push_symbolr   r)   r   rc   r3   rX   r,   rd   s     r-   drain_actionszParser.drain_actions   s    **.."C#t$  %C($$S)X.

!!#..1"=cU CDD r/   c                 6    | j                   j                         S r%   )r+   ra   )r,   s    r-   
pop_symbolzParser.pop_symbol   s    zz~~r/   c                 :    | j                   j                  |       y r%   )r+   r>   )r,   r5   s     r-   rg   zParser.push_symbol   s    

&!r/   c                    t        | j                        dkD  rt| j                  j                         }t        |t              st        |t
              r| j                  |       nt        d|       t        | j                        dkD  rsy y )Nr1   r`   )lenr+   ra   rV   r   r   r)   rX   rh   s     r-   flushzParser.flush   sh    $**o!**.."C#v&*S$*?$$S)"=cU CDD $**o!r/   r%   )__name__
__module____qualname__r.   r*   rD   r   r2   re   ri   rk   rg   ro    r/   r-   r#   r#   #   s8    "0 &0 J>X2E "Er/   r#   N)!rM   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#   rs   r/   r-   <module>rt      s@          > )\E \Er/   