o
    Df                     @  s   d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 d'ddZ
d(d)ddZd(d*ddZd+ddZ				d,d-d!d"Zd.d/d$d%Zd&S )0zText Utilities.    )annotations)SequenceMatcher)IterableIterator)version_info_t c                   s   d  fdd| D S )z2Escape string for use within a regular expression.r   c                 3  s8    | ]}|  s| v r|n	|d krdnd| V  qdS ) z\000\N)isalnum).0cwhite I/home/ubuntu/webapp/venv/lib/python3.10/site-packages/kombu/utils/text.py	<genexpr>   s    
zescape_regex.<locals>.<genexpr>)join)pr   r   r   r   escape_regex   s   r   333333?needlestrhaystackIterable[str]	min_ratiofloatreturnIterator[tuple[float, str]]c                 c  s2    |D ]}t d| | }||kr||fV  qdS )zVFuzzy match: iteratively.

    Yields
    ------
        Tuple: of ratio and key.
    N)r   ratio)r   r   r   keyr   r   r   r   fmatch_iter   s   
r    
str | Nonec                 C  s4   zt t| ||ddd d W S  ty   Y dS w )z'Fuzzy match - Find best match (scalar).T)reverser      N)sortedr    
IndexError)r   r   r   r   r   r   fmatch_best#   s   r&   sr   c                 C  sv   t | d }t|jtrt|j|jgt|dd  R  }|j	s9|j
r9d|j
v r9tt|dd |j
d  }|S )z-Convert version string to version info tuple..   N-r      )_unpack_versionsplit
isinstancemicror   r   majorminor_splitmicroserialreleaselevellist)r'   vr   r   r   version_string_as_tuple-   s   " r7   r0   r1   	str | intr/   r4   r3   c                 C  s   t t| t||||S )N)r   int)r0   r1   r/   r4   r3   r   r   r   r,   9   s   r,   tuple[int, str, str]c                 C  sN   t | D ]
\}}| s n
qt| pd||fS t| d | | |d  |fS )Nr   )	enumerateisdigitr9   )r/   r4   r3   indexcharr   r   r   r2   C   s   r2   N)r   )r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r!   )r'   r   r   r   )r   r   r   r   )r0   r   r1   r8   r/   r8   r4   r   r3   r   r   r   )r   r   )r/   r   r4   r   r3   r   r   r:   )__doc__
__future__r   difflibr   typingr   r   kombur   r   r    r&   r7   r,   r2   r   r   r   r   <module>   s    
	


