
    iK                    J    d Z ddlmZ ddlZddlZddlmZ ddZddZddZ	dS )u  
Nom du script : helpers.py
Chemin : /gitlab-bridge/app/utils/helpers.py
Description : Fonctions utilitaires réutilisables pour l'application GitLab Bridge.
              Centralise les helpers de normalisation de texte et de scoring,
              précédemment dupliqués dans projects.py, issues.py et groups.py.
Options éventuelles : Aucune.
Prérequis : Python 3.11+.
Auteur : Sylvain SCATTOLINI
Date de création / modification : 2026-04-09
Version : 1.0
    )annotationsN)SequenceMatchervaluestrreturnc                    t          j        d|           } d                    d | D                       } |                                                                 S )uv   
    Normalise une chaîne pour la comparaison floue :
    suppression des accents, passage en minuscules, strip.
    NFKD c              3  B   K   | ]}t          j        |          |V  d S )N)unicodedata	combining).0chars     0/var/www/html/gitlab-bridge/app/utils/helpers.py	<genexpr>z!normalize_text.<locals>.<genexpr>   s2      NNT+2G2M2MNDNNNNNN    )r   	normalizejoinlowerstrip)r   s    r   normalize_textr      sP    
 !&%00EGGNNUNNNNNE;;==   r   abintc           	         t          t          dt          |           t          |                                                    dz            S )uQ   Retourne un score de similarité entre 0 et 100 entre deux chaînes normalisées.Nd   )r   r   r   ratio)r   r   s     r   compute_similarity_scorer      s>    t^A%6%6q8I8IJJPPRRUXXYYYr   namec                    t          |           }t          j        dd|          }t          j        dd|          }t          j        dd|                              d          }|st	          d|           |S )u   
    Transforme un nom libre en slug GitLab valide (lettres, chiffres, tirets, points, underscores).
    Lève ValueError si le résultat est vide.
    z\s+-z[^a-zA-Z0-9._-]+z-{2,}z-._u)   Impossible de générer un slug depuis : )r   resubr   
ValueError)r   raws     r   slugifyr&   $   s~    
 

C
&c
"
"C
&$c3
/
/C
&3
$
$
*
*5
1
1C OMTMMNNNJr   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )
__doc__
__future__r   r"   r   difflibr   r   r   r&    r   r   <module>r+      s     # " " " " " 				     # # # # # #! ! ! !Z Z Z Z
     r   