U
    .e                     @  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ddddZd#d
ddddddZd
ddddZd$d
ddd
d
ddddZd%d
d
d
ddddZd S )&z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  s6   | ].}|  s| kr|n|d kr&dnd| V  qdS ) z\000\N)isalnum).0cwhite 4/tmp/pip-unpacked-wheel-48hrr5dg/kombu/utils/text.py	<genexpr>   s   zescape_regex.<locals>.<genexpr>)join)pr   r   r   r   escape_regex   s    r   333333?strzIterable[str]floatzIterator[tuple[float, str]])needlehaystack	min_ratioreturnc                 c  s0   |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   z
str | Nonec                 C  s:   zt t| ||ddd d W S  tk
r4   Y dS X dS )z'Fuzzy match - Find best match (scalar).T)reverser      N)sortedr   
IndexError)r   r   r   r   r   r   fmatch_best#   s    
 r#   r   )sr   c                 C  st   t | d }t|jtr:t|j|jft|dd   }|j	sp|j
rpd|j
krpt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      r4   z	str | int)r-   r.   r,   r1   r0   r   c                 C  s   t t| t||||S )N)r   int)r-   r.   r,   r1   r0   r   r   r   r)   9   s    r)   ztuple[int, str, str])r,   r1   r0   r   c                 C  sN   t | D ]\}}| s q0qt| p&d||fS t| d | | |d  |fS )Nr   )	enumerateisdigitr5   )r,   r1   r0   indexcharr   r   r   r/   C   s
    r/   N)r   )r   )r   )r   r   r   r   )r   r   )__doc__
__future__r   difflibr   typingr   r   Zkombur   r   r   r#   r4   r)   r/   r   r   r   r   <module>   s   
	
    
