
    Ii?                     @    S SK Jr  S SKrS SKJr   " S S\5      rS rg)    )absolute_importN)sixc                   (    \ rS rSrSr\S 5       rSrg)DefaultPartitioner   zDefault partitioner.

Hashes key to partition using murmur2 hashing (from java client)
If key is None, selects partition randomly from available,
or from all partitions if none are currently available
c                     Uc3  U(       a  [         R                  " U5      $ [         R                  " U5      $ [        U5      nUS-  nU[        U5      -  nX$   $ )a  
Get the partition corresponding to key
:param key: partitioning key
:param all_partitions: list of all partitions sorted by partition ID
:param available: list of available partitions in no particular order
:return: one of the values from all_partitions or available
i)randomchoicemurmur2len)clskeyall_partitions	availableidxs        ?/venv/lib/python3.13/site-packages/kafka/partitioner/default.py__call__DefaultPartitioner.__call__   sU     ;}}Y//==00clzs>""""     N)__name__
__module____qualname____firstlineno____doc__classmethodr   __static_attributes__r   r   r   r   r      s     # #r   r   c                    [         R                  (       a  [        [        U 5      5      n [	        U 5      nSnSnSnX!-  nUS-  n[        U5       Ht  nUS-  nXS-      S-  XS-      S-  S-  -   XS	-      S-  S
-  -   XS-      S-  S-  -   n	U	S-  n	X-  n	U	S-  n	XS-  U-	  -  n	U	S-  n	X-  n	U	S-  n	XS-  nUS-  nXY-  nUS-  nMv     US-  n
U
S:  a  XPUS-  S	-      S-  S
-  -  nUS-  nU
S	:  a  XPUS-  S-      S-  S-  -  nUS-  nU
S:  a  XPUS-     S-  -  nUS-  nXS-  nUS-  nXUS-  S-	  -  nUS-  nXS-  nUS-  nXUS-  S-	  -  nUS-  nU$ )zPure-python Murmur2 implementation.

Based on java client, see org.apache.kafka.common.utils.Utils.murmur2

Args:
    data (bytes): opaque bytes

Returns: MurmurHash2 of data
l   2. i[      r         r            l    l              )r   PY2	bytearraybytesr   range)datalengthseedmrhlength4ii4kextra_bytess              r   r   r   $   s    wwt%YFD 	A
A 	AkG7^U6lT!6lT!a')6lT!b(* 6lT!b(* 	
Z		Z	+o!##	Z		Z		Z		Z# ( 1*Ka	FRK1$%,33	Za	FRK1$%,22	Za	6B;$&'	Z		Zk/b	  AOAFAOAk/b	  AOAHr   )
__future__r   r	   kafka.vendorr   objectr   r   r   r   r   <module>r;      s     &  # #8Br   