Coverage for narrative_harm_classifier/__init__.py: 62%

13 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-07-20 13:25 +0000

1"""narrative_harm_classifier — narrative harm classification, escalation tracking, and benchmarking.""" 

2 

3__version__ = "0.1.0" 

4 

5from narrative_harm_classifier.core.config import get_settings 

6from narrative_harm_classifier.core.models import ClassificationResult, ClassifyRequest 

7from narrative_harm_classifier.classifier.rules.engine import ClassificationEngine 

8from narrative_harm_classifier.classifier.rules.azure_nlp import AzureNLPClient 

9from narrative_harm_classifier.classifier.taxonomy.loader import load_taxonomy 

10 

11__all__ = [ 

12 "__version__", 

13 "classify", 

14 "ClassificationResult", 

15 "ClassifyRequest", 

16 "ClassificationEngine", 

17] 

18 

19 

20def classify(text: str, context: str | None = None) -> ClassificationResult: 

21 """Convenience one-shot classification using the default taxonomy and settings.""" 

22 settings = get_settings() 

23 taxonomy = load_taxonomy(settings.taxonomy_config_path) 

24 azure_client = AzureNLPClient( 

25 endpoint=settings.azure_text_analytics_endpoint, 

26 key=settings.azure_text_analytics_key, 

27 ) 

28 engine = ClassificationEngine(taxonomy=taxonomy, azure_client=azure_client) 

29 return engine.classify(ClassifyRequest(text=text, context=context))