o
    f7	                     @  sF   d dl mZ d dlmZ d dlmZmZmZmZm	Z	 G dd dZ
dS )    )annotations)warn)distanceeditopsmatching_blocksopcodesratioc                   @  sr   e Zd ZdZdd Zd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 Zdd Zdd ZdS )StringMatcherz<A SequenceMatcher-like class built on the top of Levenshteinc                 C  s"   d  | _ | _d  | _ | _| _d S N)_ratio	_distance_opcodes_editops_matching_blocksself r   R/home/ubuntu/webapp/venv/lib/python3.10/site-packages/Levenshtein/StringMatcher.py_reset_cache   s   zStringMatcher._reset_cacheN Fc                 C  s:   |rt ddd |rt ddd ||| _| _|   d S )Nz*isjunk NOT implemented, it will be ignored   )
stacklevelz,autojunk NOT implemented, it will be ignored)r   _str1_str2r   )r   isjunkseq1seq2autojunkr   r   r   __init__   s   zStringMatcher.__init__c                 C  s   ||| _ | _|   d S r
   )r   r   r   )r   r   r   r   r   r   set_seqs   s   zStringMatcher.set_seqsc                 C     || _ |   d S r
   )r   r   )r   r   r   r   r   set_seq1      zStringMatcher.set_seq1c                 C  r    r
   )r   r   )r   r   r   r   r   set_seq2   r"   zStringMatcher.set_seq2c                 C  <   | j s| jrt| j| j| j| _ | j S t| j| j| _ | j S r
   )r   r   r   r   r   r   r   r   r   get_opcodes#      zStringMatcher.get_opcodesc                 C  r$   r
   )r   r   r   r   r   r   r   r   r   get_editops+   r&   zStringMatcher.get_editopsc                 C  s"   | j st|  | j| j| _ | j S r
   )r   r   r%   r   r   r   r   r   r   get_matching_blocks3   s   z!StringMatcher.get_matching_blocksc                 C     | j st| j| j| _ | j S r
   r   r   r   r   r   r   r   r   r   8      zStringMatcher.ratioc                 C  r)   r
   r*   r   r   r   r   quick_ratio=   s   zStringMatcher.quick_ratioc                 C  s,   t | jt | j}}dt|| ||  S )Ng       @)lenr   r   min)r   len1len2r   r   r   real_quick_ratioC   s   zStringMatcher.real_quick_ratioc                 C  r)   r
   )r   r   r   r   r   r   r   r   r   G   r+   zStringMatcher.distance)Nr   r   F)__name__
__module____qualname____doc__r   r   r   r!   r#   r%   r'   r(   r   r,   r1   r   r   r   r   r   r	      s    
r	   N)
__future__r   warningsr   Levenshteinr   r   r   r   r   r	   r   r   r   r   <module>   s    