
    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mZ  G d d      Z y)    N)IOListTupleAny   )Parser)RootBooleanIntRecordStart	RecordEnd
FieldStartFieldEndNullStringUnionUnionEndLongFloatDoubleBytesMapStartMapEndMapKeyMarkerEnumFixed
ArrayStartArrayEndItemEndc                       e Zd ZdZdddedef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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")#AvroJSONEncodera  Encoder for the avro JSON format.

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

    Parameters
    ----------
    fo
        Input stream
    write_union_type
        Determine whether to write the union type in the json message.

    T)write_union_typefor"   c                X    || _         g | _        d | _        d | _        g | _        || _        y N)_fo_stack_current_key_records_write_union_type)selfr#   r"   s      M/var/www/openai/venv/lib/python3.12/site-packages/fastavro/io/json_encoder.py__init__zAvroJSONEncoder.__init__/   s-    -/	#%!1    c                 <   t        | j                  t              r1| j                  r|| j                  | j                  <   y t	        d      t        | j                  t
              r| j                  j                  |       y | j                  j                  |       y )NzNo key was set)
isinstancer(   dictr)   	Exceptionlistappendr*   r,   values     r-   write_valuezAvroJSONEncoder.write_value7   si    dmmT*yy+0dii( 011t,MM  ' MM  'r/   c                 f    | j                   j                  | j                  | j                  f       y r%   )r'   r5   r(   r)   r,   s    r-   _pushzAvroJSONEncoder._pushD   s!    DMM49956r/   c                 h   | j                   j                         \  }}t        |t              r| j                  ||<   || _        y t        |t
              r#|j                  | j                         || _        y |J |J | j                  j                  | j                         || _        || _        y r%   )	r'   popr1   r2   r(   r4   r5   r*   r)   )r,   prev_currentprev_keys      r-   _popzAvroJSONEncoder._popG   s    !%!2hlD)%)]]L"(DMd+.(DM'''###MM  /(DM DIr/   c                     dj                  | j                  D cg c]  }t        j                  |       c}      }| j                  j                  |       y c c}w )N
)joinr*   jsondumpsr&   write)r,   record	json_datas      r-   write_bufferzAvroJSONEncoder.write_bufferW   sB    IINftzz&1NO	y! Os   Ac                 <    t        ||| j                        | _        y r%   )r   	do_action_parser)r,   schemanamed_schemass      r-   	configurezAvroJSONEncoder.configure\   s    fmT^^Dr/   c                 8    | j                   j                          y r%   )rL   flushr:   s    r-   rQ   zAvroJSONEncoder.flush_   s    r/   c                 ~   t        |t              r| j                          y t        |t              st        |t              r| j                          y t        |t              r| j                  |j                         y t        |t              ry t        |t              r| j                          y t        d|       )NzInternal Exception: )r1   r   write_object_startr   r   write_object_endr   write_object_key
field_namer   r	   rI   r3   )r,   actions     r-   rK   zAvroJSONEncoder.do_actionb   s    fk*##%	*j.J!!#
+!!&"3"34)%26(;<<r/   c                 l    | j                   j                  t                      | j                  d        y r%   )rL   advancer   r8   r:   s    r-   
write_nullzAvroJSONEncoder.write_nullq   s$    TV$r/   c                 l    | j                   j                  t                      | j                  |       y r%   )rL   rY   r
   r8   r6   s     r-   write_booleanzAvroJSONEncoder.write_booleanu   s$    WY'r/   c                    | j                   j                  t                      | j                   j                  d   t	               k(  r5| j                   j                  t	                      | j                  |       y | j                  |       y )N)rL   rY   r   stackr   rU   r8   r6   s     r-   
write_utf8zAvroJSONEncoder.write_utf8y   s_    VX&<<b!\^3LL  0!!%(U#r/   c                 l    | j                   j                  t                      | j                  |       y r%   )rL   rY   r   r8   r6   s     r-   	write_intzAvroJSONEncoder.write_int   s$    SU#r/   c                 l    | j                   j                  t                      | j                  |       y r%   )rL   rY   r   r8   r6   s     r-   
write_longzAvroJSONEncoder.write_long   s$    TV$r/   c                 l    | j                   j                  t                      | j                  |       y r%   )rL   rY   r   r8   r6   s     r-   write_floatzAvroJSONEncoder.write_float   s$    UW%r/   c                 l    | j                   j                  t                      | j                  |       y r%   )rL   rY   r   r8   r6   s     r-   write_doublezAvroJSONEncoder.write_double   s$    VX&r/   c                     | j                   j                  t                      | j                  |j	                  d             y Nz
iso-8859-1)rL   rY   r   r8   decoder6   s     r-   write_byteszAvroJSONEncoder.write_bytes   -    UW%l34r/   c                     | j                   j                  t                      | j                   j                         }| j	                  |j
                  |          y r%   )rL   rY   r   
pop_symbolr8   labels)r,   indexenum_labelss      r-   
write_enumzAvroJSONEncoder.write_enum   sA    TV$ll--/++E23r/   c                     | j                   j                  t                      | j                  |j	                  d             y rj   )rL   rY   r   r8   rk   r6   s     r-   write_fixedzAvroJSONEncoder.write_fixed   rm   r/   c                 x    | j                   j                  t                      | j                          g | _        y r%   )rL   rY   r   r;   r(   r:   s    r-   write_array_startz!AvroJSONEncoder.write_array_start   s&    Z\*

r/   c                      y r%    )r,   lengths     r-   write_item_countz AvroJSONEncoder.write_item_count   s    r/   c                 J    | j                   j                  t                      y r%   )rL   rY   r   r:   s    r-   end_itemzAvroJSONEncoder.end_item   s    WY'r/   c                 j    | j                   j                  t                      | j                          y r%   )rL   rY   r   r@   r:   s    r-   write_array_endzAvroJSONEncoder.write_array_end   s    XZ(		r/   c                 2    | j                          i | _        y r%   )r;   r(   r:   s    r-   rS   z"AvroJSONEncoder.write_object_start   s    

r/   c                     || _         y r%   )r)   )r,   keys     r-   rU   z AvroJSONEncoder.write_object_key   s	    	r/   c                 $    | j                          y r%   )r@   r:   s    r-   rT   z AvroJSONEncoder.write_object_end   s    		r/   c                 j    | j                   j                  t                      | j                          y r%   )rL   rY   r   rS   r:   s    r-   write_map_startzAvroJSONEncoder.write_map_start   s"    XZ(!r/   c                 j    | j                   j                  t                      | j                          y r%   )rL   rY   r   rT   r:   s    r-   write_map_endzAvroJSONEncoder.write_map_end   s"    VX&r/   c                    | j                   j                  t                      | j                   j                         }|j	                  |      }|t               k7  r_| j                  rS| j                          | j                  |j                  |             | j                   j                  t                      | j                   j                  |       y r%   )rL   rY   r   ro   
get_symbolr   r+   rS   rU   	get_labelpush_symbolr   )r,   rq   rM   alternative_symbolsymbols        r-   write_indexzAvroJSONEncoder.write_index   s    UW%!\\446#..u5TV 6 6##%!!"4">">u"EFLL$$XZ0  (r/   N)"__name__
__module____qualname____doc__r   boolr.   r8   r;   r@   rI   rO   rQ   rK   rZ   r\   r`   rb   rd   rf   rh   rl   rs   ru   rw   r{   r}   r   rS   rU   rT   r   r   r   ry   r/   r-   r!   r!       s     <@ 22 2D 2(7! "
E= $    545
(" )r/   r!   )!rD   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!   ry   r/   r-   <module>r      s@     ' '       6l) l)r/   