Coverage for src / local_deep_research / security / __init__.py: 100%

26 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-04-14 23:55 +0000

1"""Security utilities for Local Deep Research.""" 

2 

3from .data_sanitizer import ( 

4 DataSanitizer, 

5 filter_research_metadata, 

6 redact_data, 

7 sanitize_data, 

8 strip_settings_snapshot, 

9) 

10from .security_settings import get_security_default 

11from .file_integrity import FileIntegrityManager, FAISSIndexVerifier 

12from .notification_validator import ( 

13 NotificationURLValidator, 

14 NotificationURLValidationError, 

15) 

16from .safe_requests import safe_get, safe_post, SafeSession 

17from .security_headers import SecurityHeaders 

18from .ssrf_validator import validate_url, get_safe_url, is_ip_blocked 

19from .url_validator import URLValidator 

20from .account_lockout import AccountLockoutManager, get_account_lockout_manager 

21from .password_validator import PasswordValidator 

22from .log_sanitizer import sanitize_for_log, strip_control_chars 

23from .filename_sanitizer import sanitize_filename, UnsafeFilenameError 

24from .module_whitelist import ( 

25 get_safe_module_class, 

26 ModuleNotAllowedError, 

27 ALLOWED_MODULES, 

28) 

29 

30# PathValidator requires werkzeug (Flask dependency), import conditionally 

31try: 

32 from .path_validator import PathValidator 

33 

34 _has_path_validator = True 

35except ImportError: 

36 PathValidator = None # type: ignore 

37 _has_path_validator = False 

38 

39# FileUploadValidator requires pdfplumber, import conditionally 

40try: 

41 from .file_upload_validator import FileUploadValidator 

42 

43 _has_file_upload_validator = True 

44except ImportError: 

45 FileUploadValidator = None # type: ignore 

46 _has_file_upload_validator = False 

47 

48__all__ = [ 

49 "PathValidator", 

50 "DataSanitizer", 

51 "sanitize_data", 

52 "redact_data", 

53 "filter_research_metadata", 

54 "strip_settings_snapshot", 

55 "get_security_default", 

56 "FileIntegrityManager", 

57 "FAISSIndexVerifier", 

58 "FileUploadValidator", 

59 "NotificationURLValidator", 

60 "NotificationURLValidationError", 

61 "SecurityHeaders", 

62 "URLValidator", 

63 "safe_get", 

64 "safe_post", 

65 "SafeSession", 

66 "validate_url", 

67 "get_safe_url", 

68 "is_ip_blocked", 

69 "get_safe_module_class", 

70 "ModuleNotAllowedError", 

71 "ALLOWED_MODULES", 

72 "AccountLockoutManager", 

73 "get_account_lockout_manager", 

74 "PasswordValidator", 

75 "sanitize_for_log", 

76 "strip_control_chars", 

77 "sanitize_filename", 

78 "UnsafeFilenameError", 

79]