o
    iE                     @   s*   d dl mZ d dlmZ G dd dZdS )    )pack)crc32c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Ze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'd(Zd&S )*BinaryEncoderzEncoder for the avro binary format.

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

    Parameters
    ----------
    fo: file-like
        Input stream

    c                 C   s
   || _ d S N)_fo)selffo r	   `/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/fastavro/io/binary_encoder.py__init__   s   
zBinaryEncoder.__init__c                 C      d S r   r	   r   r	   r	   r
   flush      zBinaryEncoder.flushc                 C   r   r   r	   r   r	   r	   r
   
write_null   r   zBinaryEncoder.write_nullc                 C   s   | j td|r	dnd d S )NB   r   r   writer   r   datumr	   r	   r
   write_boolean   s   zBinaryEncoder.write_booleanc                 C   s`   |d> |d? A }|d@ dkr%| j td|d@ dB  |dL }|d@ dks| j td| d S )	Nr   ?   ir   r            r   r   r	   r	   r
   	write_int   s   zBinaryEncoder.write_intc                 C      | j td| d S )Nz<fr   r   r	   r	   r
   write_float'      zBinaryEncoder.write_floatc                 C   r   )Nz<dr   r   r	   r	   r
   write_double*   r   zBinaryEncoder.write_doublec                 C   s   |  t| | j| d S r   )
write_longlenr   r   r   r	   r	   r
   write_bytes-   s   zBinaryEncoder.write_bytesc                 C   s2   z|  }W n ty   tdw | | d S )Nzmust be string)encodeAttributeError	TypeErrorr#   )r   r   encodedr	   r	   r
   
write_utf81   s   zBinaryEncoder.write_utf8c                 C   s"   t |d@ }| jtd| d S )Nl    z>I)r   r   r   r   )r   r   datar	   r	   r
   write_crc328   s   zBinaryEncoder.write_crc32c                 C   s   | j | d S r   )r   r   r   r	   r	   r
   write_fixed<   s   zBinaryEncoder.write_fixedc                 C      |  | d S r   )r   )r   indexr	   r	   r
   
write_enum?      zBinaryEncoder.write_enumc                 C   r   r   r	   r   r	   r	   r
   write_array_startB   r   zBinaryEncoder.write_array_startc                 C   r,   r   r!   )r   lengthr	   r	   r
   write_item_countE   r/   zBinaryEncoder.write_item_countc                 C   r   r   r	   r   r	   r	   r
   end_itemH   r   zBinaryEncoder.end_itemc                 C      |  d d S Nr   r1   r   r	   r	   r
   write_array_endK   r/   zBinaryEncoder.write_array_endc                 C   r   r   r	   r   r	   r	   r
   write_map_startN   r   zBinaryEncoder.write_map_startc                 C   r5   r6   r1   r   r	   r	   r
   write_map_endQ   r/   zBinaryEncoder.write_map_endNc                 C   r,   r   r1   )r   r-   schemar	   r	   r
   write_indexT   r/   zBinaryEncoder.write_indexr   )__name__
__module____qualname____doc__r   r   r   r   r   r!   r   r    r#   r(   r*   r+   r.   r0   r3   r4   r7   r8   r9   r;   r	   r	   r	   r
   r      s,    r   N)structr   binasciir   r   r	   r	   r	   r
   <module>   s    