
    g                         d dl Z d dlmZmZmZmZ ddlmZ 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  G d d      Zy)    N)IOAnyTupleList   )Parser)RecordStart
FieldStartBooleanIntNullStringLongFloatDoubleBytesFieldEnd	RecordEndUnionUnionEndMapStartMapEndMapKeyMarkerFixed
ArrayStartArrayEndEnumItemEndc                       e Zd ZdZdefdZd Zd ZddZd Z	d	 Z
d
 Zd Zd Zd ZddZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy) AvroJSONDecoderzDecoder for the avro JSON format.

    NOTE: All attributes and methods on this class should be considered
    private.

    Parameters
    ----------
    fo
        File-like object to reader from

    foc                 (   || _         g | _        |D cg c]%  }t        j                  |j	                               ' c}| _        | j
                  r/| j
                  j                  d      | _        d| _        d | _	        y d| _        d | _	        y c c}w )Nr   FT)
_fo_stackjsonloadsstrip
_json_datapop_currentdone_key)selfr!   lines      M/var/www/openai/venv/lib/python3.12/site-packages/fastavro/io/json_decoder.py__init__zAvroJSONDecoder.__init__,   sx    -/@BC4::djjl3C?? OO//2DMDI 	 DI	 Ds   *Bc                     t        | j                  t              rA| j                  | j                  vr|j	                         S | j                  | j                     S | j                  S N)
isinstancer*   dictr,   get_defaultr-   symbols     r/   
read_valuezAvroJSONDecoder.read_value7   sN    dmmT*yy-))++}}TYY// ==     c                 f    | j                   j                  | j                  | j                  f       y r2   )r$   appendr*   r,   r-   s    r/   _pushzAvroJSONDecoder._pushC   s!    DMM49956r9   Nc                    | j                          t        | j                  t              rZ| j                  M| j                  | j                  vr|j                         | _        y | j                  | j                     | _        y y y r2   )r=   r3   r*   r4   r,   r5   r6   s     r/   _push_and_adjustz AvroJSONDecoder._push_and_adjustF   sa    

dmmT*tyy/Dyy- & 2 2 4 !%dii 8 0E*r9   c                 R    | j                   j                         \  | _        | _        y r2   )r$   r)   r*   r,   r<   s    r/   _popzAvroJSONDecoder._popO   s    #';;??#4 tyr9   c                 <    t        ||| j                        | _        y r2   )r   	do_action_parser)r-   schemanamed_schemass      r/   	configurezAvroJSONDecoder.configureR   s    fmT^^Dr9   c                 >   t        |t              r| j                  |       y t        |t              r| j	                          y t        |t
              r| j                  |j                         y t        |t              st        |t              ry t        d|       )Nzcannot handle: )r3   r	   r?   r   rA   r
   read_object_key
field_namer   r   	Exception)r-   actions     r/   rC   zAvroJSONDecoder.do_actionU   ss    fk*!!&)	*IIK
+  !2!23)Z-IofX677r9   c                     | j                   j                          | j                  r(| j                  j                  d      | _        d | _        y d| _        y )Nr   T)rD   drain_actionsr(   r)   r*   r,   r+   r<   s    r/   drainzAvroJSONDecoder.drainb   s=    ""$?? OO//2DMDIDIr9   c                 j    | j                   j                  t                     }| j                  |      S r2   )rD   advancer   r8   r6   s     r/   	read_nullzAvroJSONDecoder.read_nullj   '    %%df-v&&r9   c                 j    | j                   j                  t                     }| j                  |      S r2   )rD   rQ   r   r8   r6   s     r/   read_booleanzAvroJSONDecoder.read_booleann   s'    %%gi0v&&r9   c                 X   | j                   j                  t                     }| j                   j                  d   t	               k(  rS| j                   j                  t	                      | j
                  D ]  }|| _         | j                  S  | j                  S | j                  |      S )N)rD   rQ   r   stackr   r*   r,   r8   )r-   handle_unicode_errorsr7   keys       r/   	read_utf8zAvroJSONDecoder.read_utf8r   s    %%fh/<<b!\^3LL  0}}	99 % 99??6**r9   c                     | j                   j                  t                     }| j                  |      j	                  d      S Nz
iso-8859-1)rD   rQ   r   r8   encoder6   s     r/   
read_byteszAvroJSONDecoder.read_bytes}   2    %%eg.v&--l;;r9   c                 j    | j                   j                  t                     }| j                  |      S r2   )rD   rQ   r   r8   r6   s     r/   read_intzAvroJSONDecoder.read_int   s'    %%ce,v&&r9   c                 j    | j                   j                  t                     }| j                  |      S r2   )rD   rQ   r   r8   r6   s     r/   	read_longzAvroJSONDecoder.read_long   rS   r9   c                 j    | j                   j                  t                     }| j                  |      S r2   )rD   rQ   r   r8   r6   s     r/   
read_floatzAvroJSONDecoder.read_float   s'    %%eg.v&&r9   c                 j    | j                   j                  t                     }| j                  |      S r2   )rD   rQ   r   r8   r6   s     r/   read_doublezAvroJSONDecoder.read_double   s'    %%fh/v&&r9   c                     | j                   j                  t                     }| j                   j                         }| j	                  |      }|j
                  j                  |      S r2   )rD   rQ   r   
pop_symbolr8   labelsindex)r-   r7   enum_labelslabels       r/   	read_enumzAvroJSONDecoder.read_enum   sO    %%df-ll--/'!!''..r9   c                     | j                   j                  t                     }| j                  |      j	                  d      S r]   )rD   rQ   r   r8   r^   )r-   sizer7   s      r/   
read_fixedzAvroJSONDecoder.read_fixed   r`   r9   c                 l    | j                   j                  t                     }| j                  |       y r2   )rD   rQ   r   r?   r6   s     r/   read_map_startzAvroJSONDecoder.read_map_start   s&    %%hj1f%r9   c                     || _         y r2   )r,   r-   rZ   s     r/   rI   zAvroJSONDecoder.read_object_key   s	    	r9   c              #      K   t        | j                        dkD  r]| j                          | j                  D ]  } n d  | j                          | j                  = t        | j                        dkD  r\y y wNr   )lenr*   r=   rA   rv   s     r/   iter_mapzAvroJSONDecoder.iter_map   s\     $-- 1$JJL}} %IIKc" $-- 1$s   A4A97A9c                 j    | j                   j                  t                      | j                          y r2   )rD   rQ   r   rA   r<   s    r/   read_map_endzAvroJSONDecoder.read_map_end   s    VX&		r9   c                 z    | j                   j                  t                     }| j                  |       d | _        y r2   )rD   rQ   r   r?   r,   r6   s     r/   read_array_startz AvroJSONDecoder.read_array_start   s-    %%jl3f%	r9   c                 j    | j                   j                  t                      | j                          y r2   )rD   rQ   r   rA   r<   s    r/   read_array_endzAvroJSONDecoder.read_array_end   s    XZ(		r9   c              #   >  K   t        | j                        dkD  r| j                          | j                  j                  d      | _        d  | j	                          | j
                  j                  t                      t        | j                        dkD  ry y wrx   )ry   r*   r=   r)   rA   rD   rQ   r   r<   s    r/   
iter_arrayzAvroJSONDecoder.iter_array   si     $-- 1$JJL MM--a0DMIIKLL  + $-- 1$s   BBBc                 v   | j                   j                  t                      | j                   j                         }| j                  X| j
                  d}n| j
                  j                         \  }}|| _        | j                   j                  t                      n| j                  | j
                  vr6|j                  d   |j                         i| j
                  | j                  <   | j
                  | j                     d}nf| j
                  | j                     j                         \  }}|| j
                  | j                  <   | j                   j                  t                      |j                  j                  |      }|j                  |      }| j                   j                  |       |S )Nnullr   )rD   rQ   r   rj   r,   r*   popitempush_symbolr   rk   r5   rl   
get_symbol)r-   alternative_symbolrn   datarl   r7   s         r/   
read_indexzAvroJSONDecoder.read_index   sQ   UW%!\\446 99}}$"mm335t $((4 yy-&--a02D2P2P2R,dii( }}TYY'/"mmDII6>>@t+/dii(((4"))//6#..u5  (r9   r2   )strict)__name__
__module____qualname____doc__r   r0   r8   r=   r?   rA   rG   rC   rO   rR   rU   r[   r_   rb   rd   rf   rh   ro   rr   rt   rI   rz   r|   r~   r   r   r    r9   r/   r    r       s    
	2 	
!795E8''	+<''''/<&#
,$r9   r    ) r%   typingr   r   r   r   parserr   symbolsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r9   r/   <module>r      s;     ' '      4F Fr9   