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

26 statements  

« prev     ^ index     » next       coverage.py v7.14.1, created at 2026-06-03 23:15 +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 ( 

23 redact_secrets, 

24 sanitize_for_log, 

25 strip_control_chars, 

26) 

27from .filename_sanitizer import sanitize_filename, UnsafeFilenameError 

28from .module_whitelist import ( 

29 get_safe_module_class, 

30 ModuleNotAllowedError, 

31 ALLOWED_MODULES, 

32) 

33 

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

35try: 

36 from .path_validator import PathValidator 

37 

38 _has_path_validator = True 

39except ImportError: 

40 PathValidator = None # type: ignore 

41 _has_path_validator = False 

42 

43# FileUploadValidator requires pdfplumber, import conditionally 

44try: 

45 from .file_upload_validator import FileUploadValidator 

46 

47 _has_file_upload_validator = True 

48except ImportError: 

49 FileUploadValidator = None # type: ignore 

50 _has_file_upload_validator = False 

51 

52__all__ = [ 

53 "PathValidator", 

54 "DataSanitizer", 

55 "sanitize_data", 

56 "redact_data", 

57 "filter_research_metadata", 

58 "strip_settings_snapshot", 

59 "get_security_default", 

60 "FileIntegrityManager", 

61 "FAISSIndexVerifier", 

62 "FileUploadValidator", 

63 "NotificationURLValidator", 

64 "NotificationURLValidationError", 

65 "SecurityHeaders", 

66 "URLValidator", 

67 "safe_get", 

68 "safe_post", 

69 "SafeSession", 

70 "validate_url", 

71 "get_safe_url", 

72 "is_ip_blocked", 

73 "get_safe_module_class", 

74 "ModuleNotAllowedError", 

75 "ALLOWED_MODULES", 

76 "AccountLockoutManager", 

77 "get_account_lockout_manager", 

78 "PasswordValidator", 

79 "redact_secrets", 

80 "sanitize_for_log", 

81 "strip_control_chars", 

82 "sanitize_filename", 

83 "UnsafeFilenameError", 

84]