# Klausur-Service Services Package # Grading Services from .grading_service import ( calculate_grade_points, calculate_raw_points, ) # Authentication Services from .auth_service import ( get_current_user, ) # EH Audit Services from .eh_service import ( log_audit, log_eh_audit, ) # OCR Services - Lazy imports (require PIL/cv2 which may not be installed) # These are imported on-demand when actually used def __getattr__(name): """Lazy import for optional image processing modules.""" _handwriting_exports = { 'detect_handwriting', 'detect_handwriting_regions', 'mask_to_png', 'DetectionResult' } _inpainting_exports = { 'inpaint_image', 'inpaint_opencv_telea', 'inpaint_opencv_ns', 'remove_handwriting', 'check_lama_available', 'InpaintingMethod', 'InpaintingResult' } _layout_exports = { 'reconstruct_layout', 'layout_to_fabric_json', 'reconstruct_and_clean', 'LayoutResult', 'TextElement', 'ElementType' } if name in _handwriting_exports: from . import handwriting_detection return getattr(handwriting_detection, name) elif name in _inpainting_exports: from . import inpainting_service return getattr(inpainting_service, name) elif name in _layout_exports: from . import layout_reconstruction_service return getattr(layout_reconstruction_service, name) raise AttributeError(f"module {__name__!r} has no attribute {name!r}") __all__ = [ # Grading 'calculate_grade_points', 'calculate_raw_points', # Authentication 'get_current_user', # Audit 'log_audit', 'log_eh_audit', # Handwriting Detection (lazy) 'detect_handwriting', 'detect_handwriting_regions', 'mask_to_png', 'DetectionResult', # Inpainting (lazy) 'inpaint_image', 'inpaint_opencv_telea', 'inpaint_opencv_ns', 'remove_handwriting', 'check_lama_available', 'InpaintingMethod', 'InpaintingResult', # Layout Reconstruction (lazy) 'reconstruct_layout', 'layout_to_fabric_json', 'reconstruct_and_clean', 'LayoutResult', 'TextElement', 'ElementType', ]