o
    i*                     @   s   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 dZ dS )    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                   @   s   e Zd ZdZdddedefddZdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>S )?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                C   s(   || _ g | _d | _d | _g | _|| _d S N)_fo_stack_current_key_records_write_union_type)selfr!   r     r*   ^/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/fastavro/io/json_encoder.py__init__/   s   
zAvroJSONEncoder.__init__c                 C   sV   t | jtr| jr|| j| j< d S tdt | jtr#| j| d S | j| d S )NzNo key was set)
isinstancer%   dictr&   	Exceptionlistappendr'   r)   valuer*   r*   r+   write_value7   s   zAvroJSONEncoder.write_valuec                 C   s   | j | j| jf d S r"   )r$   r1   r%   r&   r)   r*   r*   r+   _pushD   s   zAvroJSONEncoder._pushc                 C   s   | j  \}}t|tr| j||< || _d S t|tr&|| j || _d S |d u s,J |d u s2J | j| j || _|| _d S r"   )	r$   popr-   r.   r%   r0   r1   r'   r&   )r)   prev_currentprev_keyr*   r*   r+   _popG   s   





zAvroJSONEncoder._popc                 C   s&   d dd | jD }| j| d S )N
c                 S   s   g | ]}t |qS r*   )jsondumps).0recordr*   r*   r+   
<listcomp>Y   s    z0AvroJSONEncoder.write_buffer.<locals>.<listcomp>)joinr'   r#   write)r)   	json_datar*   r*   r+   write_bufferW   s   zAvroJSONEncoder.write_bufferc                 C   s   t ||| j| _d S r"   )r   	do_action_parser)r)   schemanamed_schemasr*   r*   r+   	configure\   s   zAvroJSONEncoder.configurec                 C   s   | j   d S r"   )rF   flushr5   r*   r*   r+   rJ   _   s   zAvroJSONEncoder.flushc                 C   s   t |tr|   d S t |tst |tr|   d S t |tr(| |j d S t |t	r/d S t |t
r:|   d S td| )NzInternal Exception: )r-   r   write_object_startr   r   write_object_endr   write_object_key
field_namer   r   rD   r/   )r)   actionr*   r*   r+   rE   b   s   



zAvroJSONEncoder.do_actionc                 C   s   | j t  | d  d S r"   )rF   advancer   r4   r5   r*   r*   r+   
write_nullq      zAvroJSONEncoder.write_nullc                 C      | j t  | | d S r"   )rF   rP   r	   r4   r2   r*   r*   r+   write_booleanu   rR   zAvroJSONEncoder.write_booleanc                 C   sJ   | j t  | j jd t kr| j t  | | d S | | d S )N)rF   rP   r   stackr   rM   r4   r2   r*   r*   r+   
write_utf8y   s
   zAvroJSONEncoder.write_utf8c                 C   rS   r"   )rF   rP   r
   r4   r2   r*   r*   r+   	write_int   rR   zAvroJSONEncoder.write_intc                 C   rS   r"   )rF   rP   r   r4   r2   r*   r*   r+   
write_long   rR   zAvroJSONEncoder.write_longc                 C   rS   r"   )rF   rP   r   r4   r2   r*   r*   r+   write_float   rR   zAvroJSONEncoder.write_floatc                 C   rS   r"   )rF   rP   r   r4   r2   r*   r*   r+   write_double   rR   zAvroJSONEncoder.write_doublec                 C   "   | j t  | |d d S Nz
iso-8859-1)rF   rP   r   r4   decoder2   r*   r*   r+   write_bytes      zAvroJSONEncoder.write_bytesc                 C   s,   | j t  | j  }| |j|  d S r"   )rF   rP   r   
pop_symbolr4   labels)r)   indexenum_labelsr*   r*   r+   
write_enum   s   
zAvroJSONEncoder.write_enumc                 C   r\   r]   )rF   rP   r   r4   r^   r2   r*   r*   r+   write_fixed   r`   zAvroJSONEncoder.write_fixedc                 C   s    | j t  |   g | _d S r"   )rF   rP   r   r6   r%   r5   r*   r*   r+   write_array_start   s   
z!AvroJSONEncoder.write_array_startc                 C   s   d S r"   r*   )r)   lengthr*   r*   r+   write_item_count   s   z AvroJSONEncoder.write_item_countc                 C   s   | j t  d S r"   )rF   rP   r   r5   r*   r*   r+   end_item   s   zAvroJSONEncoder.end_itemc                 C      | j t  |   d S r"   )rF   rP   r   r:   r5   r*   r*   r+   write_array_end      zAvroJSONEncoder.write_array_endc                 C   s   |    i | _d S r"   )r6   r%   r5   r*   r*   r+   rK      s   
z"AvroJSONEncoder.write_object_startc                 C   s
   || _ d S r"   )r&   )r)   keyr*   r*   r+   rM      s   
z AvroJSONEncoder.write_object_keyc                 C   s   |    d S r"   )r:   r5   r*   r*   r+   rL      s   z AvroJSONEncoder.write_object_endc                 C   rk   r"   )rF   rP   r   rK   r5   r*   r*   r+   write_map_start   rm   zAvroJSONEncoder.write_map_startc                 C   rk   r"   )rF   rP   r   rL   r5   r*   r*   r+   write_map_end   rm   zAvroJSONEncoder.write_map_endc                 C   sh   | j t  | j  }||}|t kr,| jr,|   | |	| | j 
t  | j 
| d S r"   )rF   rP   r   ra   
get_symbolr   r(   rK   rM   	get_labelpush_symbolr   )r)   rc   rG   alternative_symbolsymbolr*   r*   r+   write_index   s   

zAvroJSONEncoder.write_indexN)"__name__
__module____qualname____doc__r   boolr,   r4   r6   r:   rD   rI   rJ   rE   rQ   rT   rW   rX   rY   rZ   r[   r_   re   rf   rg   ri   rj   rl   rK   rM   rL   ro   rp   rv   r*   r*   r*   r+   r       s<    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   r*   r*   r*   r+   <module>   s
    d