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

28 statements  

« prev     ^ index     » next       coverage.py v7.12.0, created at 2026-01-11 00:51 +0000

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

2 

3from .data_sanitizer import DataSanitizer, redact_data, sanitize_data 

4from .file_integrity import FileIntegrityManager, FAISSIndexVerifier 

5from .notification_validator import ( 

6 NotificationURLValidator, 

7 NotificationURLValidationError, 

8) 

9from .safe_requests import safe_get, safe_post, SafeSession 

10from .security_headers import SecurityHeaders 

11from .ssrf_validator import validate_url, get_safe_url, is_ip_blocked 

12from .url_validator import URLValidator 

13 

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

15try: 

16 from .path_validator import PathValidator 

17 

18 _has_path_validator = True 

19except ImportError: 

20 PathValidator = None # type: ignore 

21 _has_path_validator = False 

22 

23# FileUploadValidator requires pdfplumber, import conditionally 

24try: 

25 from .file_upload_validator import FileUploadValidator 

26 

27 _has_file_upload_validator = True 

28except ImportError: 

29 FileUploadValidator = None # type: ignore 

30 _has_file_upload_validator = False 

31 

32# Rate limiter requires flask_limiter, import conditionally 

33try: 

34 from .rate_limiter import init_rate_limiter, upload_rate_limit 

35 

36 _has_rate_limiter = True 

37except ImportError: 

38 init_rate_limiter = None # type: ignore 

39 _has_rate_limiter = False 

40 

41 # Provide a no-op decorator when flask_limiter is not available 

42 def upload_rate_limit(f): 

43 """No-op decorator when flask_limiter is not installed.""" 

44 return f 

45 

46 

47__all__ = [ 

48 "PathValidator", 

49 "DataSanitizer", 

50 "sanitize_data", 

51 "redact_data", 

52 "FileIntegrityManager", 

53 "FAISSIndexVerifier", 

54 "FileUploadValidator", 

55 "NotificationURLValidator", 

56 "NotificationURLValidationError", 

57 "SecurityHeaders", 

58 "URLValidator", 

59 "init_rate_limiter", 

60 "upload_rate_limit", 

61 "safe_get", 

62 "safe_post", 

63 "SafeSession", 

64 "validate_url", 

65 "get_safe_url", 

66 "is_ip_blocked", 

67]