o
    ͿSi                     @  s`   d dl mZ d dlmZmZ dZdZdZdZddddddZ	dddZ
d ddZd!ddZdS )"    )annotations)AnyOptionalLOWMEDIUMHIGHVERY_STRONGN)decision_probabilityscorevaluer   r	   r
   returnstrc                C  s   | du rdnt |   }|dddddd}|dv r"tS |dv r(tS |dv r.tS |d	v r4tS t|}|du r@t|}|du rFtS |d
krLtS |dkrRtS |dkrXtS tS )a  Normalize confidence into a single 4-level scale.

    Canonical levels:
    - LOW
    - MEDIUM
    - HIGH
    - VERY_STRONG

    Accepts common aliases (e.g., WEAK/STRONG, VERY_HIGH, HIGHSTRONG) and can
    derive a level from numeric probability/score when the label is missing.

    Numeric derivation (0-100):
    - >= 90: VERY_STRONG
    - >= 75: HIGH
    - >= 60: MEDIUM
    - else: LOW
    N  _->   VHIGHVERYHIGH
HIGHSTRONG
VERYSTRONGHIGHSRTRONG>   r   STRONG>   MEDMIDr   >   r   WEAKZ   K   <   )	r   stripupperreplaceLEVEL_VERY_STRONG
LEVEL_HIGHLEVEL_MEDIUM	LEVEL_LOW_safe_float)r   r	   r
   scompactp r)   5/var/www/html/Trade-python/app/v1/utils/confidence.pynormalize_confidence   s,   r+   levelintc                 C  s$   t | }tdtdtdtdi|dS )z(Rank confidence for sorting/comparisons.            )r+   r$   r#   r"   r!   get)r,   r&   r)   r)   r*   confidence_rankC   s   r3   actualminimumboolc                 C  s   t | t |kS N)r3   )r4   r5   r)   r)   r*   confidence_at_leastO   s   r8   vOptional[float]c                 C  s>   z| d u rW d S t | trW d S t| W S  ty   Y d S w r7   )
isinstancer6   float	Exception)r9   r)   r)   r*   r%   S   s   

r%   )r   r   r	   r   r
   r   r   r   )r,   r   r   r-   )r4   r   r5   r   r   r6   )r9   r   r   r:   )
__future__r   typingr   r   r$   r#   r"   r!   r+   r3   r8   r%   r)   r)   r)   r*   <module>   s    
7
