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
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 00:51 +0000
1"""Security utilities for Local Deep Research."""
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
14# PathValidator requires werkzeug (Flask dependency), import conditionally
15try:
16 from .path_validator import PathValidator
18 _has_path_validator = True
19except ImportError:
20 PathValidator = None # type: ignore
21 _has_path_validator = False
23# FileUploadValidator requires pdfplumber, import conditionally
24try:
25 from .file_upload_validator import FileUploadValidator
27 _has_file_upload_validator = True
28except ImportError:
29 FileUploadValidator = None # type: ignore
30 _has_file_upload_validator = False
32# Rate limiter requires flask_limiter, import conditionally
33try:
34 from .rate_limiter import init_rate_limiter, upload_rate_limit
36 _has_rate_limiter = True
37except ImportError:
38 init_rate_limiter = None # type: ignore
39 _has_rate_limiter = False
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
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]