
    Ii                        S SK JrJr  S SKrS SKrS SKrS SKrS SKrS SKJ	r	  S SK
Jr  \R                  (       a  SrSrS rOS SKJr   " S	 S
5      rSr\R$                  " S5      rS r " S S\5      r " S S\5      rS rg)    )absolute_importdivisionN)KafkaTimeoutError)sixl        l        c                 X    [         R                  " U 5      nU[        :  a	  U[        -  nU$ N)binasciicrc32MAX_INT	TO_SIGNED)datacrcs     0/venv/lib/python3.13/site-packages/kafka/util.pyr
   r
      s(    nnT" '>9C
    )r
   c                   ^    \ rS rSrSrSS jr\S 5       r\S 5       r\S 5       r	S r
S	 rS
rg)Timer   )	_start_at
_expire_at_timeout_ms_error_messageNc                     Xl         U=(       d    [        R                  " 5       U l        Ub  U R                  US-  -   U l        O[	        S5      U l        X l        g )N  inf)r   timer   r   floatr   )self
timeout_mserror_messagestart_ats       r   __init__Timer.__init__    sF    %!0TYY[!"nnzD/@@DO#ElDO+r   c                 F    [         R                   " 5       U R                  :  $ r   )r   r   r   s    r   expiredTimer.expired)   s    yy{doo--r   c                     U R                   c  g U R                  [        S5      :X  a  [        S5      $ U R                  [        R                  " 5       -
  nUS:  a  g[	        US-  5      $ )Nr   r   r   )r   r   r   r   int)r   	remainings     r   r   Timer.timeout_ms-   sY    #__e,<OOdiik1	q=y4'((r   c                 ^    [        S[        R                  " 5       U R                  -
  -  5      $ )Nr   )r(   r   r   r$   s    r   
elapsed_msTimer.elapsed_ms9   s!    4499;7899r   c                 P    U R                   (       a  [        U R                  5      eg r   )r%   r   r   r$   s    r   maybe_raiseTimer.maybe_raise=   s    <<#D$7$788 r   c                      SU R                   -  $ )NzTimer(%s ms remaining))r   r$   s    r   __str__Timer.__str__A   s    '4??;;r   )r   r   r   r   )NN)__name__
__module____qualname____firstlineno__	__slots__r!   propertyr%   r   r,   r/   r2   __static_attributes__ r   r   r   r      sR    LI, . . 	) 	) : :9<r   r      z^[a-zA-Z0-9._-]+$c                    U c  [        S5      e[        U [        R                  5      (       d  [        S5      e[	        U 5      S:X  a  [        S5      eU S:X  d  U S:X  a  [        S5      e[	        U 5      [        :  a  [        S	R                  [        U 5      5      e[        R                  U 5      (       d  [        S
R                  U 5      5      eg)zDEnsures that the topic name is valid according to the kafka source. NzAll topics must not be NonezAll topics must be stringsr   z$All topics must be non-empty strings.z..z Topic name cannot be "." or ".."zKTopic name is illegal, it can't be longer than {0} characters, topic: "{1}"zeTopic name "{0}" is illegal, it contains a character other than ASCII alphanumerics, ".", "_" and "-")
	TypeError
isinstancer   string_typeslen
ValueErrorTOPIC_MAX_LENGTHformatTOPIC_LEGAL_CHARSmatch)topics    r   ensure_valid_topic_namerI   H   s    
 }566eS--..455
5zQ?@@|u};<<
5z$$gnno  BG  H  I  	I""5))  A  H  H  IN  O  P  	P *r   c                   0    \ rS rSrSrS rS rS rS rSr	g)	
WeakMethod[   z
Callable that weakly references a method and the object it is bound to. It
is based on https://stackoverflow.com/a/24287465.

Arguments:

    object_dot_method: A bound instance method (i.e. 'object.method').
c                     [         R                  " UR                  5      U l        [        U R                  5       5      U l         [         R                  " UR                  5      U l	        [        U R                  5       5      U l        g ! [         a(    [         R                  " UR
                  5      U l         Nf = f! [         a(    [         R                  " UR                  5      U l	         Nf = fr   )weakrefref__self__targetAttributeErrorim_selfid
_target_id__func__methodim_func
_method_id)r   object_dot_methods     r   r!   WeakMethod.__init__d   s    	A!++&7&@&@ADK T[[]+	A!++&7&@&@ADK T[[]+  	A!++&7&?&?@DK	A
  	A!++&7&?&?@DK	As#   %B
 %B? 
/B<;B<?/C10C1c                 R    U R                  5       " U R                  5       /UQ70 UD6$ )z2
Calls the method on target with args and kwargs.
)rW   rQ   )r   argskwargss      r   __call__WeakMethod.__call__p   s%     {{}T[[]<T<V<<r   c                 X    [        U R                  5      [        U R                  5      -  $ r   )hashrQ   rW   r$   s    r   __hash__WeakMethod.__hash__v   s    DKK 4#444r   c                     [        U[        5      (       d  gU R                  UR                  :H  =(       a    U R                  UR                  :H  $ )NF)r@   rK   rU   rY   )r   others     r   __eq__WeakMethod.__eq__y   s;    %,,%"2"22Zt%JZJZ7ZZr   )rY   rU   rW   rQ   N)
r4   r5   r6   r7   __doc__r!   r_   rc   rg   r:   r;   r   r   rK   rK   [   s    
,=5[r   rK   c                       \ rS rSrSrSrg)Dict   zhUtility class to support passing weakrefs to dicts

See: https://docs.python.org/2/library/weakref.html
r;   N)r4   r5   r6   r7   ri   r:   r;   r   r   rk   rk      s     	r   rk   c                 B   ^  U 4S jn[         R                  " UT 5        U$ )Nc                 j   > U R                      T" U /UQ70 UD6sS S S 5        $ ! , (       d  f       g = fr   )_lock)r   r]   r^   funcs      r   wrappersynchronized.<locals>.wrapper   s&    ZZ.t.v. ZZs   $
2)	functoolsupdate_wrapper)rp   rq   s   ` r   synchronizedru      s    / Wd+Nr   )
__future__r   r   r	   rs   rer   rN   kafka.errorsr   kafka.vendorr   PY3r   r   r
   r   rD   compilerF   rI   objectrK   dictrk   ru   r;   r   r   <module>r~      s    0   	   *  77GI %< %<P  JJ23 P&![ ![H	4 	r   