o
    `j                     @   s~   d dl Z d dlmZ zd dlmZ W n ey   dZY nw dd Zdd Zddd	Z	eZ
edur3eZ
e
fd
dZdd ZdS )    N)crc)crc32cc                 C   s  | d> | d? A } | dkr||  dS | dkr&|d| d@ B  || d?  dS | dkrD|d| d@ B  |d| d? d@ B  || d	?  d
S | dkrl|d| d@ B  |d| d? d@ B  |d| d	? d@ B  || d?  dS | dkr|d| d@ B  |d| d? d@ B  |d| d	? d@ B  |d| d? d@ B  || d?  dS | d@ }| dL } d}| r|d|B  | d@ }| dL } |d7 }| s|| |S )ad   Encode an integer to a varint presentation. See
    https://developers.google.com/protocol-buffers/docs/encoding?csw=1#varints
    on how those can be produced.

        Arguments:
            value (int): Value to encode
            write (function): Called per byte that needs to be writen

        Returns:
            int: Number of bytes written
       ?      ?                                  r    )valuewritebitsir   r   O/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/kafka/record/util.pyencode_varint
   sJ   r   c                 C   s   | d> | d? A } | dkrdS | dkrdS | dkrdS | dkr d	S | d
kr&dS | dkr,dS | dkr2dS | dkr8dS | dkr>dS dS )zL Number of bytes needed to encode an integer in variable-length format.
    r   r   r   r   r
   r   r   r   r   r   r   l      l    r	   l      l    	   
   r   )r   r   r   r   size_of_varint?   s(   r   c                 C   s   | | }|d@ s|d? |d fS |d@ s|d? dA |d fS |dM }|d7 }d}	 | | }||d@ |> O }|d7 }|d@ sH|d? |d@  A |fS |d7 }|dkrTt dq))	az   Decode an integer from a varint presentation. See
    https://developers.google.com/protocol-buffers/docs/encoding?csw=1#varints
    on how those can be produced.

        Arguments:
            buffer (bytearray): buffer to read from.
            pos (int): optional position to read from

        Returns:
            (int, int): Decoded int value and next read position
       r   r   r   r	   @   zOut of int64 range)
ValueError)bufferposresultshiftbr   r   r   decode_varintX   s$   r)   c                 C   s   || S )zG Calculate CRC-32C (Castagnoli) checksum over a memoryview of data
    r   )memview_crc32cr   r   r   calc_crc32c}   s   r,   c                 C   s   t | d@ }|S )z@ Calculate simple CRC-32 checksum over a memoryview of data
    l    )binasciicrc32)r*   r   r   r   r   
calc_crc32   s   r/   )r   )r-   kafka.record._crc32cr   	crc32c_pyr   crc32c_cImportErrorr   r   r)   r+   r,   r/   r   r   r   r   <module>   s    5
 