/ postprocessors / __init__.py
__init__.py
 1  """
 2  Module de post-processeurs pour l'API Cerastes
 3  ---------------------------------------------
 4  Ce module fournit différents post-processeurs pour améliorer et transformer
 5  les résultats des inférences et des analyses.
 6  
 7  Classes exportées:
 8      - JSONSimplifier: Convertit les réponses JSON complexes en texte explicatif clair
 9  """
10  
11  import logging
12  from typing import Dict, Any, List, Optional, Type
13  
14  # Import des post-processeurs disponibles
15  from .json_simplifier import JSONSimplifier
16  
17  # Configuration du logging
18  logger = logging.getLogger("postprocessors")
19  
20  # Dictionnaire des post-processeurs disponibles
21  available_postprocessors = {
22      "json_simplifier": JSONSimplifier
23  }
24  
25  def get_postprocessor(name: str, config: Dict[str, Any]) -> Optional[Any]:
26      """
27      Récupère une instance d'un post-processeur par son nom.
28      
29      Args:
30          name: Nom du post-processeur à instancier
31          config: Configuration à utiliser pour l'initialisation
32      
33      Returns:
34          Instance du post-processeur ou None si non trouvé
35      """
36      if name not in available_postprocessors:
37          logger.warning(f"Post-processeur '{name}' non trouvé")
38          return None
39      
40      try:
41          processor_class = available_postprocessors[name]
42          return processor_class(config)
43      except Exception as e:
44          logger.error(f"Erreur lors de l'initialisation du post-processeur '{name}': {str(e)}")
45          return None
46  
47  def list_postprocessors() -> List[str]:
48      """
49      Liste tous les post-processeurs disponibles.
50      
51      Returns:
52          Liste des noms des post-processeurs disponibles
53      """
54      return list(available_postprocessors.keys())
55  
56  __all__ = [
57      'JSONSimplifier',
58      'get_postprocessor',
59      'list_postprocessors',
60      'available_postprocessors'
61  ]