o
    `j/                  	   @   s  d dl Z g dZg dZg dZeee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dZdd Zdd Zdd Zdd Zd,dd Zd,d!d"Zd,d#d$Zed%krQee
 ee eD ]\ZZe Zeee eeks|J qjee eD ]\ZZed&ZeeeZede eksJ qeD ]\ZZe Zeee eeksJ qe	e e	e ee ee ee e  Ze
eefD ]ZeeD ]\Z Z!ed'"eje d( ee! qqeeefD ]#ZeeD ]\Z Z!ejZ#ej$d'"e#e d( d)"e#e!d*"e#d+ qqeefD ]ZeeD ]\Z Z!ed'"eje d( ee! qqeeefD ]ZeeD ]\Z Z!ed'"eje d( ee! q;q5dS dS )-    N)')    r   )   )      )   ~?   )   i)s   @   )s   i)s   i  )    )s   i    )s   i)    )s   i  )s   i   )s   i)s   )   i   )   i   )s   i)s   l    )s        )s   l        )s   l    )      )s   l     )s   l        )s   l    )s   l    )s   l       )s   l          )s   l      )s   l   )s   l       )s	   l          )s	   l      )s	   l    )s	   l         )s
   l            )s
   l        )<   r   r   r   r   r   )r   r   r   r   r   r   c                 C   s&   t D ]\}}| ||ksJ |qd S N)	test_data)enc_funcencodeddecoded r   [/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/kafka/benchmarks/varint_speed.py_assert_valid_encD   s   r   c                 C   sN   t D ]"\}}| t|\}}||ksJ ||f|t|ks$J ||fqd S r   )r   	bytearraylen)dec_funcr   r   resposr   r   r   _assert_valid_decI   s
   r#   c                 C   s*   t D ]\}}| |t|ksJ |qd S r   )r   r   )	size_funcr   r   r   r   r   _assert_valid_sizeP   s   r%   c                 C   sn   | d> | d? A } t d}tdD ]}| d@ | dkrdndB ||< | d? } | dkr* nqtd|d	|d  S )
aZ   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:
            num (int): Value to encode

        Returns:
            bytearray: Encoded presentation of integer with length from 1 to 10
                 bytes
    r   r   
         r      Out of double rangeN)r   range
ValueError)numbufir   r   r   encode_varint_1U   s   r0   c                 C   s
   t | fS r   )bytes)r/   r   r   r   int2bytes   s   
r2   c                 C   sX   | d> | d? A } | d@ }| dL } d}| r&|t d|B 7 }| d@ }| dL } | s|t | S )Nr   r   r'   r)       r(   r2   valuebitsr!   r   r   r   encode_varint_2v   s   r8   c                 C   sV   |j }| d> | d? A } | d@ }| dL } | r%|d|B  | d@ }| dL } | s|| | S Nr   r   r'   r)   r(   append)r6   r.   r;   r7   r   r   r   encode_varint_3   s   r<   c                 C   sp  | d> | d? A } | dkrt | S | dkr"t d| d@ B t | d?  S | dkr>t d| d@ B t d| d? d@ B  t | d?  S | d	krdt d| d@ B t d| d? d@ B  t d| d? d@ B  t | d
?  S | dkrt d| d@ B t d| d? d@ B  t d| d? d@ B  t d| d
? d@ B  t | d?  S | d@ }| dL } d}| r|t d|B 7 }| d@ }| dL } | s|t | S )Nr   r   r'   ?  r(   r)                 r3   r4   r5   r   r   r   encode_varint_4   sL   


rD   c                 C   s\   | d> | d? A } | d@ }| dL } | r&d|B ||< | d@ }| dL } |d7 }| s|||< |d S r9   r   )r6   r.   r"   r7   r   r   r   encode_varint_5   s   rE   c                 C   s  |j }| d> | d? A } | dkr||  dS | dkr)|d| d@ B  || d?  dS | dkrG|d| d@ B  |d| d? d@ B  || d	?  d
S | dkro|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 )Nr   r   r'   r=   r(   r)      r>   r?      r@   rA      rB   rC      r   r:   )r6   r.   r;   r7   r/   r   r   r   encode_varint_6   sL   rJ   c                 C   s6   | d> | d? A } d}	 |d7 }| d? } | dkr	 |S q)L Number of bytes needed to encode an integer in variable-length format.
    r   r   r   Tr)   r   )r6   r!   r   r   r   size_of_varint_1   s   rL   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 )rK   r   r   r'   r=   rF   r>   rG   r@   rH   rB   rI   l      l    r)   l      l    	   r&   r   )r6   r   r   r   size_of_varint_2   s(   rP   c                 C   s   | | S )zu Read a byte from memoryview as an integer

        Raises:
            IndexError: if position is out of bounds
    r   )memviewr"   r   r   r   
_read_byte  s   rR   c              	   C   s   d}d}t | }t||d D ]/}zt||}W n ty#   tdw |d@ dkr7||d@ |> O }|d7 }q|||> O } ntd|d? |d@  A |d fS )	a   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 (bytes-like): any object acceptable by ``memoryview``
            pos (int): optional position to read from

        Returns:
            (int, int): Decoded int value and next read position
    r   r&   zEnd of byte streamr(   r'   r)   r*   r   )
memoryviewr+   rR   
IndexErrorr,   )bufferr"   r6   shiftrQ   r/   byter   r   r   decode_varint_1  s    
rX   c                 C   sb   d}d}	 | | }||d@ |> O }|d7 }|d@ s$|d? |d@  A |fS |d7 }|dkr0t dq)Nr   r   r'   r(   r)   r
   Out of int64 ranger,   rU   r"   resultrV   br   r   r   decode_varint_2;  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))	N   r   r(   r   r'   r)   r
   rY   rZ   r[   r   r   r   decode_varint_3J  s$   r`   __main__r&   z	{}_{}byter   z{}({}, buffer)z/from __main__ import {}; buffer = bytearray(10))stmtsetup)r   )%pyperfr   BENCH_VALUES_ENCBENCH_VALUES_DEClistmapr   r   r#   r%   r0   r2   r8   r<   rD   rE   rJ   rL   rP   rR   rX   r^   r`   __name__r   r   r!   writtenRunnerrunner
bench_func	enumerater/   r6   formatfnametimeitr   r   r   r   <module>   s   +	
"+
	
!





D