unrealon 1.0.9__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- unrealon/__init__.py +23 -21
- unrealon-1.1.0.dist-info/METADATA +164 -0
- unrealon-1.1.0.dist-info/RECORD +82 -0
- {unrealon-1.0.9.dist-info → unrealon-1.1.0.dist-info}/WHEEL +1 -1
- unrealon-1.1.0.dist-info/entry_points.txt +9 -0
- {unrealon-1.0.9.dist-info → unrealon-1.1.0.dist-info/licenses}/LICENSE +1 -1
- unrealon_bridge/__init__.py +114 -0
- unrealon_bridge/cli.py +316 -0
- unrealon_bridge/client/__init__.py +93 -0
- unrealon_bridge/client/base.py +78 -0
- unrealon_bridge/client/commands.py +89 -0
- unrealon_bridge/client/connection.py +90 -0
- unrealon_bridge/client/events.py +65 -0
- unrealon_bridge/client/health.py +38 -0
- unrealon_bridge/client/html_parser.py +146 -0
- unrealon_bridge/client/logging.py +139 -0
- unrealon_bridge/client/proxy.py +70 -0
- unrealon_bridge/client/scheduler.py +450 -0
- unrealon_bridge/client/session.py +70 -0
- unrealon_bridge/configs/__init__.py +14 -0
- unrealon_bridge/configs/bridge_config.py +212 -0
- unrealon_bridge/configs/bridge_config.yaml +39 -0
- unrealon_bridge/models/__init__.py +138 -0
- unrealon_bridge/models/base.py +28 -0
- unrealon_bridge/models/command.py +41 -0
- unrealon_bridge/models/events.py +40 -0
- unrealon_bridge/models/html_parser.py +79 -0
- unrealon_bridge/models/logging.py +55 -0
- unrealon_bridge/models/parser.py +63 -0
- unrealon_bridge/models/proxy.py +41 -0
- unrealon_bridge/models/requests.py +95 -0
- unrealon_bridge/models/responses.py +88 -0
- unrealon_bridge/models/scheduler.py +592 -0
- unrealon_bridge/models/session.py +28 -0
- unrealon_bridge/server/__init__.py +91 -0
- unrealon_bridge/server/base.py +171 -0
- unrealon_bridge/server/handlers/__init__.py +23 -0
- unrealon_bridge/server/handlers/command.py +110 -0
- unrealon_bridge/server/handlers/html_parser.py +139 -0
- unrealon_bridge/server/handlers/logging.py +95 -0
- unrealon_bridge/server/handlers/parser.py +95 -0
- unrealon_bridge/server/handlers/proxy.py +75 -0
- unrealon_bridge/server/handlers/scheduler.py +545 -0
- unrealon_bridge/server/handlers/session.py +66 -0
- unrealon_browser/__init__.py +61 -18
- unrealon_browser/{src/cli → cli}/browser_cli.py +6 -13
- unrealon_browser/{src/cli → cli}/cookies_cli.py +5 -1
- unrealon_browser/{src/core → core}/browser_manager.py +2 -2
- unrealon_browser/{src/managers → managers}/captcha.py +1 -1
- unrealon_browser/{src/managers → managers}/cookies.py +1 -1
- unrealon_browser/managers/logger_bridge.py +231 -0
- unrealon_browser/{src/managers → managers}/profile.py +1 -1
- unrealon_driver/__init__.py +73 -19
- unrealon_driver/browser/__init__.py +8 -0
- unrealon_driver/browser/config.py +74 -0
- unrealon_driver/browser/manager.py +416 -0
- unrealon_driver/exceptions.py +28 -0
- unrealon_driver/parser/__init__.py +55 -0
- unrealon_driver/parser/cli_manager.py +141 -0
- unrealon_driver/parser/daemon_manager.py +227 -0
- unrealon_driver/parser/managers/__init__.py +46 -0
- unrealon_driver/parser/managers/browser.py +51 -0
- unrealon_driver/parser/managers/config.py +281 -0
- unrealon_driver/parser/managers/error.py +412 -0
- unrealon_driver/parser/managers/html.py +732 -0
- unrealon_driver/parser/managers/logging.py +609 -0
- unrealon_driver/parser/managers/result.py +321 -0
- unrealon_driver/parser/parser_manager.py +628 -0
- unrealon/sdk_config.py +0 -88
- unrealon-1.0.9.dist-info/METADATA +0 -810
- unrealon-1.0.9.dist-info/RECORD +0 -246
- unrealon_browser/pyproject.toml +0 -182
- unrealon_browser/src/__init__.py +0 -62
- unrealon_browser/src/managers/logger_bridge.py +0 -395
- unrealon_driver/README.md +0 -204
- unrealon_driver/pyproject.toml +0 -187
- unrealon_driver/src/__init__.py +0 -90
- unrealon_driver/src/cli/__init__.py +0 -10
- unrealon_driver/src/cli/main.py +0 -66
- unrealon_driver/src/cli/simple.py +0 -510
- unrealon_driver/src/config/__init__.py +0 -11
- unrealon_driver/src/config/auto_config.py +0 -478
- unrealon_driver/src/core/__init__.py +0 -18
- unrealon_driver/src/core/exceptions.py +0 -289
- unrealon_driver/src/core/parser.py +0 -638
- unrealon_driver/src/dto/__init__.py +0 -66
- unrealon_driver/src/dto/cli.py +0 -119
- unrealon_driver/src/dto/config.py +0 -18
- unrealon_driver/src/dto/events.py +0 -237
- unrealon_driver/src/dto/execution.py +0 -313
- unrealon_driver/src/dto/services.py +0 -311
- unrealon_driver/src/execution/__init__.py +0 -23
- unrealon_driver/src/execution/daemon_mode.py +0 -317
- unrealon_driver/src/execution/interactive_mode.py +0 -88
- unrealon_driver/src/execution/modes.py +0 -45
- unrealon_driver/src/execution/scheduled_mode.py +0 -209
- unrealon_driver/src/execution/test_mode.py +0 -250
- unrealon_driver/src/logging/__init__.py +0 -24
- unrealon_driver/src/logging/driver_logger.py +0 -512
- unrealon_driver/src/services/__init__.py +0 -24
- unrealon_driver/src/services/browser_service.py +0 -726
- unrealon_driver/src/services/llm/__init__.py +0 -15
- unrealon_driver/src/services/llm/browser_llm_service.py +0 -363
- unrealon_driver/src/services/llm/llm.py +0 -195
- unrealon_driver/src/services/logger_service.py +0 -232
- unrealon_driver/src/services/metrics_service.py +0 -185
- unrealon_driver/src/services/scheduler_service.py +0 -489
- unrealon_driver/src/services/websocket_service.py +0 -362
- unrealon_driver/src/utils/__init__.py +0 -16
- unrealon_driver/src/utils/service_factory.py +0 -317
- unrealon_driver/src/utils/time_formatter.py +0 -338
- unrealon_llm/README.md +0 -44
- unrealon_llm/__init__.py +0 -26
- unrealon_llm/pyproject.toml +0 -154
- unrealon_llm/src/__init__.py +0 -228
- unrealon_llm/src/cli/__init__.py +0 -0
- unrealon_llm/src/core/__init__.py +0 -11
- unrealon_llm/src/core/smart_client.py +0 -438
- unrealon_llm/src/dto/__init__.py +0 -155
- unrealon_llm/src/dto/models/__init__.py +0 -0
- unrealon_llm/src/dto/models/config.py +0 -343
- unrealon_llm/src/dto/models/core.py +0 -328
- unrealon_llm/src/dto/models/enums.py +0 -123
- unrealon_llm/src/dto/models/html_analysis.py +0 -345
- unrealon_llm/src/dto/models/statistics.py +0 -473
- unrealon_llm/src/dto/models/translation.py +0 -383
- unrealon_llm/src/dto/models/type_conversion.py +0 -462
- unrealon_llm/src/dto/schemas/__init__.py +0 -0
- unrealon_llm/src/exceptions.py +0 -392
- unrealon_llm/src/llm_config/__init__.py +0 -20
- unrealon_llm/src/llm_config/logging_config.py +0 -178
- unrealon_llm/src/llm_logging/__init__.py +0 -42
- unrealon_llm/src/llm_logging/llm_events.py +0 -107
- unrealon_llm/src/llm_logging/llm_logger.py +0 -466
- unrealon_llm/src/managers/__init__.py +0 -15
- unrealon_llm/src/managers/cache_manager.py +0 -67
- unrealon_llm/src/managers/cost_manager.py +0 -107
- unrealon_llm/src/managers/request_manager.py +0 -298
- unrealon_llm/src/modules/__init__.py +0 -0
- unrealon_llm/src/modules/html_processor/__init__.py +0 -25
- unrealon_llm/src/modules/html_processor/base_processor.py +0 -415
- unrealon_llm/src/modules/html_processor/details_processor.py +0 -85
- unrealon_llm/src/modules/html_processor/listing_processor.py +0 -91
- unrealon_llm/src/modules/html_processor/models/__init__.py +0 -20
- unrealon_llm/src/modules/html_processor/models/processing_models.py +0 -40
- unrealon_llm/src/modules/html_processor/models/universal_model.py +0 -56
- unrealon_llm/src/modules/html_processor/processor.py +0 -102
- unrealon_llm/src/modules/llm/__init__.py +0 -0
- unrealon_llm/src/modules/translator/__init__.py +0 -0
- unrealon_llm/src/provider.py +0 -116
- unrealon_llm/src/utils/__init__.py +0 -95
- unrealon_llm/src/utils/common.py +0 -64
- unrealon_llm/src/utils/data_extractor.py +0 -188
- unrealon_llm/src/utils/html_cleaner.py +0 -767
- unrealon_llm/src/utils/language_detector.py +0 -308
- unrealon_llm/src/utils/models_cache.py +0 -592
- unrealon_llm/src/utils/smart_counter.py +0 -229
- unrealon_llm/src/utils/token_counter.py +0 -189
- unrealon_sdk/README.md +0 -25
- unrealon_sdk/__init__.py +0 -30
- unrealon_sdk/pyproject.toml +0 -231
- unrealon_sdk/src/__init__.py +0 -150
- unrealon_sdk/src/cli/__init__.py +0 -12
- unrealon_sdk/src/cli/commands/__init__.py +0 -22
- unrealon_sdk/src/cli/commands/benchmark.py +0 -42
- unrealon_sdk/src/cli/commands/diagnostics.py +0 -573
- unrealon_sdk/src/cli/commands/health.py +0 -46
- unrealon_sdk/src/cli/commands/integration.py +0 -498
- unrealon_sdk/src/cli/commands/reports.py +0 -43
- unrealon_sdk/src/cli/commands/security.py +0 -36
- unrealon_sdk/src/cli/commands/server.py +0 -483
- unrealon_sdk/src/cli/commands/servers.py +0 -56
- unrealon_sdk/src/cli/commands/tests.py +0 -55
- unrealon_sdk/src/cli/main.py +0 -126
- unrealon_sdk/src/cli/utils/reporter.py +0 -519
- unrealon_sdk/src/clients/openapi.yaml +0 -3347
- unrealon_sdk/src/clients/python_http/__init__.py +0 -3
- unrealon_sdk/src/clients/python_http/api_config.py +0 -228
- unrealon_sdk/src/clients/python_http/models/BaseModel.py +0 -12
- unrealon_sdk/src/clients/python_http/models/BroadcastDeliveryStats.py +0 -33
- unrealon_sdk/src/clients/python_http/models/BroadcastMessage.py +0 -17
- unrealon_sdk/src/clients/python_http/models/BroadcastMessageRequest.py +0 -35
- unrealon_sdk/src/clients/python_http/models/BroadcastPriority.py +0 -10
- unrealon_sdk/src/clients/python_http/models/BroadcastResponse.py +0 -21
- unrealon_sdk/src/clients/python_http/models/BroadcastResultResponse.py +0 -33
- unrealon_sdk/src/clients/python_http/models/BroadcastTarget.py +0 -11
- unrealon_sdk/src/clients/python_http/models/ConnectionStats.py +0 -27
- unrealon_sdk/src/clients/python_http/models/ConnectionsResponse.py +0 -21
- unrealon_sdk/src/clients/python_http/models/DeveloperMessageResponse.py +0 -23
- unrealon_sdk/src/clients/python_http/models/ErrorResponse.py +0 -25
- unrealon_sdk/src/clients/python_http/models/HTTPValidationError.py +0 -16
- unrealon_sdk/src/clients/python_http/models/HealthResponse.py +0 -23
- unrealon_sdk/src/clients/python_http/models/HealthStatus.py +0 -33
- unrealon_sdk/src/clients/python_http/models/LogLevel.py +0 -10
- unrealon_sdk/src/clients/python_http/models/LoggingRequest.py +0 -27
- unrealon_sdk/src/clients/python_http/models/LoggingResponse.py +0 -23
- unrealon_sdk/src/clients/python_http/models/MaintenanceMode.py +0 -9
- unrealon_sdk/src/clients/python_http/models/MaintenanceModeRequest.py +0 -33
- unrealon_sdk/src/clients/python_http/models/MaintenanceStatusResponse.py +0 -39
- unrealon_sdk/src/clients/python_http/models/ParserCommandRequest.py +0 -25
- unrealon_sdk/src/clients/python_http/models/ParserMessageResponse.py +0 -21
- unrealon_sdk/src/clients/python_http/models/ParserRegistrationRequest.py +0 -28
- unrealon_sdk/src/clients/python_http/models/ParserRegistrationResponse.py +0 -25
- unrealon_sdk/src/clients/python_http/models/ParserType.py +0 -10
- unrealon_sdk/src/clients/python_http/models/ProxyBlockRequest.py +0 -19
- unrealon_sdk/src/clients/python_http/models/ProxyEndpointResponse.py +0 -20
- unrealon_sdk/src/clients/python_http/models/ProxyListResponse.py +0 -19
- unrealon_sdk/src/clients/python_http/models/ProxyProvider.py +0 -10
- unrealon_sdk/src/clients/python_http/models/ProxyPurchaseRequest.py +0 -25
- unrealon_sdk/src/clients/python_http/models/ProxyResponse.py +0 -47
- unrealon_sdk/src/clients/python_http/models/ProxyRotationRequest.py +0 -23
- unrealon_sdk/src/clients/python_http/models/ProxyStatus.py +0 -10
- unrealon_sdk/src/clients/python_http/models/ProxyUsageRequest.py +0 -19
- unrealon_sdk/src/clients/python_http/models/ProxyUsageStatsResponse.py +0 -26
- unrealon_sdk/src/clients/python_http/models/ServiceRegistrationDto.py +0 -23
- unrealon_sdk/src/clients/python_http/models/ServiceStatsResponse.py +0 -31
- unrealon_sdk/src/clients/python_http/models/SessionStartRequest.py +0 -23
- unrealon_sdk/src/clients/python_http/models/SuccessResponse.py +0 -25
- unrealon_sdk/src/clients/python_http/models/SystemNotificationResponse.py +0 -23
- unrealon_sdk/src/clients/python_http/models/ValidationError.py +0 -18
- unrealon_sdk/src/clients/python_http/models/ValidationErrorResponse.py +0 -21
- unrealon_sdk/src/clients/python_http/models/WebSocketMetrics.py +0 -21
- unrealon_sdk/src/clients/python_http/models/__init__.py +0 -44
- unrealon_sdk/src/clients/python_http/services/None_service.py +0 -35
- unrealon_sdk/src/clients/python_http/services/ParserManagement_service.py +0 -190
- unrealon_sdk/src/clients/python_http/services/ProxyManagement_service.py +0 -289
- unrealon_sdk/src/clients/python_http/services/SocketLogging_service.py +0 -187
- unrealon_sdk/src/clients/python_http/services/SystemHealth_service.py +0 -119
- unrealon_sdk/src/clients/python_http/services/WebSocketAPI_service.py +0 -198
- unrealon_sdk/src/clients/python_http/services/__init__.py +0 -0
- unrealon_sdk/src/clients/python_http/services/admin_service.py +0 -125
- unrealon_sdk/src/clients/python_http/services/async_None_service.py +0 -35
- unrealon_sdk/src/clients/python_http/services/async_ParserManagement_service.py +0 -190
- unrealon_sdk/src/clients/python_http/services/async_ProxyManagement_service.py +0 -289
- unrealon_sdk/src/clients/python_http/services/async_SocketLogging_service.py +0 -189
- unrealon_sdk/src/clients/python_http/services/async_SystemHealth_service.py +0 -123
- unrealon_sdk/src/clients/python_http/services/async_WebSocketAPI_service.py +0 -200
- unrealon_sdk/src/clients/python_http/services/async_admin_service.py +0 -125
- unrealon_sdk/src/clients/python_websocket/__init__.py +0 -28
- unrealon_sdk/src/clients/python_websocket/client.py +0 -490
- unrealon_sdk/src/clients/python_websocket/events.py +0 -732
- unrealon_sdk/src/clients/python_websocket/example.py +0 -136
- unrealon_sdk/src/clients/python_websocket/types.py +0 -871
- unrealon_sdk/src/core/__init__.py +0 -64
- unrealon_sdk/src/core/client.py +0 -556
- unrealon_sdk/src/core/config.py +0 -465
- unrealon_sdk/src/core/exceptions.py +0 -239
- unrealon_sdk/src/core/metadata.py +0 -191
- unrealon_sdk/src/core/models.py +0 -142
- unrealon_sdk/src/core/types.py +0 -68
- unrealon_sdk/src/dto/__init__.py +0 -268
- unrealon_sdk/src/dto/authentication.py +0 -108
- unrealon_sdk/src/dto/cache.py +0 -208
- unrealon_sdk/src/dto/common.py +0 -19
- unrealon_sdk/src/dto/concurrency.py +0 -393
- unrealon_sdk/src/dto/events.py +0 -108
- unrealon_sdk/src/dto/health.py +0 -339
- unrealon_sdk/src/dto/load_balancing.py +0 -336
- unrealon_sdk/src/dto/logging.py +0 -230
- unrealon_sdk/src/dto/performance.py +0 -165
- unrealon_sdk/src/dto/rate_limiting.py +0 -295
- unrealon_sdk/src/dto/resource_pooling.py +0 -128
- unrealon_sdk/src/dto/structured_logging.py +0 -112
- unrealon_sdk/src/dto/task_scheduling.py +0 -121
- unrealon_sdk/src/dto/websocket.py +0 -55
- unrealon_sdk/src/enterprise/__init__.py +0 -59
- unrealon_sdk/src/enterprise/authentication.py +0 -401
- unrealon_sdk/src/enterprise/cache_manager.py +0 -578
- unrealon_sdk/src/enterprise/error_recovery.py +0 -494
- unrealon_sdk/src/enterprise/event_system.py +0 -549
- unrealon_sdk/src/enterprise/health_monitor.py +0 -747
- unrealon_sdk/src/enterprise/load_balancer.py +0 -964
- unrealon_sdk/src/enterprise/logging/__init__.py +0 -68
- unrealon_sdk/src/enterprise/logging/cleanup.py +0 -156
- unrealon_sdk/src/enterprise/logging/development.py +0 -744
- unrealon_sdk/src/enterprise/logging/service.py +0 -410
- unrealon_sdk/src/enterprise/multithreading_manager.py +0 -853
- unrealon_sdk/src/enterprise/performance_monitor.py +0 -539
- unrealon_sdk/src/enterprise/proxy_manager.py +0 -696
- unrealon_sdk/src/enterprise/rate_limiter.py +0 -652
- unrealon_sdk/src/enterprise/resource_pool.py +0 -763
- unrealon_sdk/src/enterprise/task_scheduler.py +0 -709
- unrealon_sdk/src/internal/__init__.py +0 -10
- unrealon_sdk/src/internal/command_router.py +0 -497
- unrealon_sdk/src/internal/connection_manager.py +0 -397
- unrealon_sdk/src/internal/http_client.py +0 -446
- unrealon_sdk/src/internal/websocket_client.py +0 -420
- unrealon_sdk/src/provider.py +0 -471
- unrealon_sdk/src/utils.py +0 -234
- /unrealon_browser/{src/cli → cli}/__init__.py +0 -0
- /unrealon_browser/{src/cli → cli}/interactive_mode.py +0 -0
- /unrealon_browser/{src/cli → cli}/main.py +0 -0
- /unrealon_browser/{src/core → core}/__init__.py +0 -0
- /unrealon_browser/{src/dto → dto}/__init__.py +0 -0
- /unrealon_browser/{src/dto → dto}/models/config.py +0 -0
- /unrealon_browser/{src/dto → dto}/models/core.py +0 -0
- /unrealon_browser/{src/dto → dto}/models/dataclasses.py +0 -0
- /unrealon_browser/{src/dto → dto}/models/detection.py +0 -0
- /unrealon_browser/{src/dto → dto}/models/enums.py +0 -0
- /unrealon_browser/{src/dto → dto}/models/statistics.py +0 -0
- /unrealon_browser/{src/managers → managers}/__init__.py +0 -0
- /unrealon_browser/{src/managers → managers}/stealth.py +0 -0
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Authentication-related Data Transfer Objects
|
|
3
|
-
|
|
4
|
-
Custom DTO models for enterprise authentication system functionality.
|
|
5
|
-
These models provide type-safe authentication state and security tracking.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from datetime import datetime, timezone
|
|
9
|
-
from typing import Dict, List, Optional, Any
|
|
10
|
-
from enum import Enum
|
|
11
|
-
|
|
12
|
-
from pydantic import BaseModel, Field, ConfigDict
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class AuthenticationStatus(str, Enum):
|
|
16
|
-
"""Authentication status states."""
|
|
17
|
-
|
|
18
|
-
UNAUTHENTICATED = "unauthenticated"
|
|
19
|
-
AUTHENTICATING = "authenticating"
|
|
20
|
-
AUTHENTICATED = "authenticated"
|
|
21
|
-
EXPIRED = "expired"
|
|
22
|
-
FAILED = "failed"
|
|
23
|
-
LOCKED = "locked"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class SecurityEventType(str, Enum):
|
|
27
|
-
"""Security event types for monitoring."""
|
|
28
|
-
|
|
29
|
-
LOGIN_SUCCESS = "login_success"
|
|
30
|
-
LOGIN_FAILURE = "login_failure"
|
|
31
|
-
TOKEN_REFRESH = "token_refresh"
|
|
32
|
-
API_KEY_VALIDATION = "api_key_validation"
|
|
33
|
-
RATE_LIMIT_EXCEEDED = "rate_limit_exceeded"
|
|
34
|
-
SECURITY_BREACH = "security_breach"
|
|
35
|
-
ACCOUNT_LOCKED = "account_locked"
|
|
36
|
-
SUSPICIOUS_ACTIVITY = "suspicious_activity"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class AuthenticationContext(BaseModel):
|
|
40
|
-
"""
|
|
41
|
-
Type-safe authentication context.
|
|
42
|
-
|
|
43
|
-
Tracks current authentication state and security metrics
|
|
44
|
-
using Pydantic validation instead of Dict[str, Any].
|
|
45
|
-
"""
|
|
46
|
-
|
|
47
|
-
model_config = ConfigDict(validate_assignment=True, extra="forbid")
|
|
48
|
-
|
|
49
|
-
# Authentication state
|
|
50
|
-
status: AuthenticationStatus = Field(default=AuthenticationStatus.UNAUTHENTICATED)
|
|
51
|
-
api_key: Optional[str] = Field(None, description="Masked API key for logging")
|
|
52
|
-
access_token: Optional[str] = Field(None, description="Current access token")
|
|
53
|
-
|
|
54
|
-
# Session information
|
|
55
|
-
session_id: Optional[str] = Field(None, description="Authentication session ID")
|
|
56
|
-
parser_id: Optional[str] = Field(None, description="Registered parser ID")
|
|
57
|
-
authenticated_at: Optional[datetime] = Field(None, description="Authentication timestamp")
|
|
58
|
-
expires_at: Optional[datetime] = Field(None, description="Token expiration time")
|
|
59
|
-
|
|
60
|
-
# Security metrics
|
|
61
|
-
login_attempts: int = Field(default=0, description="Number of login attempts")
|
|
62
|
-
failed_attempts: int = Field(default=0, description="Number of failed attempts")
|
|
63
|
-
last_login_attempt: Optional[datetime] = Field(None, description="Last login attempt time")
|
|
64
|
-
rate_limit_reset_time: Optional[datetime] = Field(None, description="Rate limit reset time")
|
|
65
|
-
|
|
66
|
-
# Environment context
|
|
67
|
-
environment: str = Field(default="dev", description="API environment (dev/prod)")
|
|
68
|
-
client_info: Dict[str, str] = Field(default_factory=dict, description="Client metadata")
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
class SecurityEvent(BaseModel):
|
|
72
|
-
"""Security event for audit trails and monitoring."""
|
|
73
|
-
|
|
74
|
-
model_config = ConfigDict(validate_assignment=True, extra="forbid")
|
|
75
|
-
|
|
76
|
-
event_id: str = Field(..., description="Unique event identifier")
|
|
77
|
-
event_type: SecurityEventType = Field(..., description="Type of security event")
|
|
78
|
-
timestamp: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
79
|
-
session_id: Optional[str] = Field(None, description="Associated session ID")
|
|
80
|
-
api_key_hash: Optional[str] = Field(None, description="Hashed API key for privacy")
|
|
81
|
-
ip_address: Optional[str] = Field(None, description="Client IP address")
|
|
82
|
-
user_agent: Optional[str] = Field(None, description="Client user agent")
|
|
83
|
-
success: bool = Field(..., description="Whether the operation succeeded")
|
|
84
|
-
error_message: Optional[str] = Field(None, description="Error message if failed")
|
|
85
|
-
metadata: Dict[str, Any] = Field(default_factory=dict, description="Additional event data")
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
class RateLimitConfig(BaseModel):
|
|
89
|
-
"""Rate limiting configuration."""
|
|
90
|
-
|
|
91
|
-
model_config = ConfigDict(validate_assignment=True, extra="forbid")
|
|
92
|
-
|
|
93
|
-
max_attempts: int = Field(default=5, description="Maximum attempts per window")
|
|
94
|
-
window_seconds: int = Field(default=300, description="Rate limit window in seconds")
|
|
95
|
-
lockout_duration_seconds: int = Field(default=900, description="Lockout duration")
|
|
96
|
-
progressive_delay: bool = Field(default=True, description="Enable progressive delay")
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
__all__ = [
|
|
100
|
-
# Enums
|
|
101
|
-
"AuthenticationStatus",
|
|
102
|
-
"SecurityEventType",
|
|
103
|
-
|
|
104
|
-
# Models
|
|
105
|
-
"AuthenticationContext",
|
|
106
|
-
"SecurityEvent",
|
|
107
|
-
"RateLimitConfig",
|
|
108
|
-
]
|
unrealon_sdk/src/dto/cache.py
DELETED
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Cache Management DTOs - Data Transfer Objects for caching system.
|
|
3
|
-
|
|
4
|
-
This module contains all Pydantic models and enums related to cache management,
|
|
5
|
-
separated from business logic for clean architecture and reusability.
|
|
6
|
-
|
|
7
|
-
Components:
|
|
8
|
-
- Cache policies and configuration models
|
|
9
|
-
- Cache entry and statistics models
|
|
10
|
-
- Cache event types and storage levels
|
|
11
|
-
- Performance and analytics data structures
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
import uuid
|
|
15
|
-
from datetime import datetime, timezone
|
|
16
|
-
from typing import Dict, List, Optional, Any, TypeVar, Generic
|
|
17
|
-
from enum import Enum
|
|
18
|
-
from dataclasses import dataclass, field
|
|
19
|
-
|
|
20
|
-
from pydantic import BaseModel, Field, ConfigDict
|
|
21
|
-
|
|
22
|
-
T = TypeVar("T")
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class CachePolicy(str, Enum):
|
|
26
|
-
"""Cache eviction policies."""
|
|
27
|
-
|
|
28
|
-
LRU = "lru" # Least Recently Used
|
|
29
|
-
LFU = "lfu" # Least Frequently Used
|
|
30
|
-
FIFO = "fifo" # First In First Out
|
|
31
|
-
TTL_ONLY = "ttl_only" # Only TTL-based expiration
|
|
32
|
-
SIZE_ONLY = "size_only" # Only size-based eviction
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
class CacheLevel(str, Enum):
|
|
36
|
-
"""Cache storage levels."""
|
|
37
|
-
|
|
38
|
-
MEMORY = "memory" # In-memory cache (fastest)
|
|
39
|
-
PERSISTENT = "persistent" # Disk-based cache (slower but persistent)
|
|
40
|
-
DISTRIBUTED = "distributed" # Network-distributed cache
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
class CacheEventType(str, Enum):
|
|
44
|
-
"""Cache-specific event types."""
|
|
45
|
-
|
|
46
|
-
CACHE_HIT = "cache_hit"
|
|
47
|
-
CACHE_MISS = "cache_miss"
|
|
48
|
-
CACHE_SET = "cache_set"
|
|
49
|
-
CACHE_DELETE = "cache_delete"
|
|
50
|
-
CACHE_EXPIRE = "cache_expire"
|
|
51
|
-
CACHE_EVICT = "cache_evict"
|
|
52
|
-
CACHE_CLEAR = "cache_clear"
|
|
53
|
-
CACHE_WARM = "cache_warm"
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
@dataclass
|
|
57
|
-
class CacheEntry(Generic[T]):
|
|
58
|
-
"""Individual cache entry with metadata."""
|
|
59
|
-
|
|
60
|
-
key: str
|
|
61
|
-
value: T
|
|
62
|
-
created_at: datetime
|
|
63
|
-
last_accessed: datetime
|
|
64
|
-
access_count: int = 0
|
|
65
|
-
ttl_seconds: Optional[float] = None
|
|
66
|
-
compressed: bool = False
|
|
67
|
-
size_bytes: int = 0
|
|
68
|
-
|
|
69
|
-
def is_expired(self) -> bool:
|
|
70
|
-
"""Check if cache entry is expired."""
|
|
71
|
-
if self.ttl_seconds is None:
|
|
72
|
-
return False
|
|
73
|
-
|
|
74
|
-
age = (datetime.now(timezone.utc) - self.created_at).total_seconds()
|
|
75
|
-
return age > self.ttl_seconds
|
|
76
|
-
|
|
77
|
-
def touch(self) -> None:
|
|
78
|
-
"""Update access time and count."""
|
|
79
|
-
self.last_accessed = datetime.now(timezone.utc)
|
|
80
|
-
self.access_count += 1
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
class CacheStatistics(BaseModel):
|
|
84
|
-
"""Cache performance statistics."""
|
|
85
|
-
|
|
86
|
-
model_config = ConfigDict(extra="forbid")
|
|
87
|
-
|
|
88
|
-
# Basic stats
|
|
89
|
-
total_requests: int = Field(default=0, description="Total cache requests")
|
|
90
|
-
cache_hits: int = Field(default=0, description="Number of cache hits")
|
|
91
|
-
cache_misses: int = Field(default=0, description="Number of cache misses")
|
|
92
|
-
|
|
93
|
-
# Performance metrics
|
|
94
|
-
hit_rate_percent: float = Field(default=0.0, description="Cache hit rate percentage")
|
|
95
|
-
avg_access_time_ms: float = Field(default=0.0, description="Average access time")
|
|
96
|
-
|
|
97
|
-
# Storage stats
|
|
98
|
-
current_size: int = Field(default=0, description="Current number of entries")
|
|
99
|
-
max_size: int = Field(default=0, description="Maximum cache size")
|
|
100
|
-
memory_usage_bytes: int = Field(default=0, description="Memory usage in bytes")
|
|
101
|
-
|
|
102
|
-
# Lifecycle stats
|
|
103
|
-
total_sets: int = Field(default=0, description="Total cache sets")
|
|
104
|
-
total_deletes: int = Field(default=0, description="Total cache deletes")
|
|
105
|
-
total_evictions: int = Field(default=0, description="Total evictions")
|
|
106
|
-
total_expirations: int = Field(default=0, description="Total expirations")
|
|
107
|
-
|
|
108
|
-
# Time-based metrics
|
|
109
|
-
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
110
|
-
last_reset: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
class CacheConfig(BaseModel):
|
|
114
|
-
"""Cache configuration model."""
|
|
115
|
-
|
|
116
|
-
model_config = ConfigDict(extra="forbid")
|
|
117
|
-
|
|
118
|
-
# Size limits
|
|
119
|
-
max_entries: int = Field(default=10000, description="Maximum number of cache entries")
|
|
120
|
-
max_memory_mb: int = Field(default=100, description="Maximum memory usage in MB")
|
|
121
|
-
|
|
122
|
-
# TTL settings
|
|
123
|
-
default_ttl_seconds: float = Field(default=3600.0, description="Default TTL in seconds")
|
|
124
|
-
max_ttl_seconds: float = Field(default=86400.0, description="Maximum TTL in seconds")
|
|
125
|
-
|
|
126
|
-
# Eviction policy
|
|
127
|
-
eviction_policy: CachePolicy = Field(
|
|
128
|
-
default=CachePolicy.LRU, description="Cache eviction policy"
|
|
129
|
-
)
|
|
130
|
-
eviction_threshold: float = Field(default=0.8, description="Threshold for eviction (0.0-1.0)")
|
|
131
|
-
|
|
132
|
-
# Cleanup settings
|
|
133
|
-
cleanup_interval_seconds: float = Field(default=300.0, description="Cleanup interval")
|
|
134
|
-
compression_enabled: bool = Field(
|
|
135
|
-
default=True, description="Enable compression for large objects"
|
|
136
|
-
)
|
|
137
|
-
compression_threshold_bytes: int = Field(
|
|
138
|
-
default=1024, description="Size threshold for compression"
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
# Performance settings
|
|
142
|
-
enable_statistics: bool = Field(default=True, description="Enable cache statistics")
|
|
143
|
-
warm_cache_on_startup: bool = Field(default=False, description="Warm cache on startup")
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
class CacheOperation(BaseModel):
|
|
147
|
-
"""Cache operation tracking model."""
|
|
148
|
-
|
|
149
|
-
model_config = ConfigDict(extra="forbid")
|
|
150
|
-
|
|
151
|
-
operation_id: str = Field(default_factory=lambda: str(uuid.uuid4()))
|
|
152
|
-
operation_type: CacheEventType = Field(..., description="Type of cache operation")
|
|
153
|
-
cache_key: str = Field(..., description="Cache key involved")
|
|
154
|
-
timestamp: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
155
|
-
duration_ms: Optional[float] = Field(
|
|
156
|
-
default=None, description="Operation duration in milliseconds"
|
|
157
|
-
)
|
|
158
|
-
success: bool = Field(default=True, description="Whether operation was successful")
|
|
159
|
-
error_message: Optional[str] = Field(default=None, description="Error message if failed")
|
|
160
|
-
details: Dict[str, Any] = Field(
|
|
161
|
-
default_factory=dict, description="Additional operation details"
|
|
162
|
-
)
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
class CacheMetrics(BaseModel):
|
|
166
|
-
"""Real-time cache metrics model."""
|
|
167
|
-
|
|
168
|
-
model_config = ConfigDict(extra="forbid")
|
|
169
|
-
|
|
170
|
-
# Performance metrics
|
|
171
|
-
avg_get_time_ms: float = Field(default=0.0, description="Average GET operation time")
|
|
172
|
-
avg_set_time_ms: float = Field(default=0.0, description="Average SET operation time")
|
|
173
|
-
peak_memory_usage_bytes: int = Field(default=0, description="Peak memory usage")
|
|
174
|
-
|
|
175
|
-
# Efficiency metrics
|
|
176
|
-
hit_rate_last_hour: float = Field(default=0.0, description="Hit rate in last hour")
|
|
177
|
-
eviction_rate_per_hour: float = Field(default=0.0, description="Evictions per hour")
|
|
178
|
-
compression_ratio: float = Field(default=1.0, description="Average compression ratio")
|
|
179
|
-
|
|
180
|
-
# Capacity metrics
|
|
181
|
-
memory_utilization_percent: float = Field(
|
|
182
|
-
default=0.0, description="Memory utilization percentage"
|
|
183
|
-
)
|
|
184
|
-
entry_utilization_percent: float = Field(
|
|
185
|
-
default=0.0, description="Entry count utilization percentage"
|
|
186
|
-
)
|
|
187
|
-
|
|
188
|
-
# Recent activity (last 5 minutes)
|
|
189
|
-
recent_operations: int = Field(default=0, description="Operations in last 5 minutes")
|
|
190
|
-
recent_hits: int = Field(default=0, description="Cache hits in last 5 minutes")
|
|
191
|
-
recent_misses: int = Field(default=0, description="Cache misses in last 5 minutes")
|
|
192
|
-
|
|
193
|
-
# Timestamp
|
|
194
|
-
collected_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
__all__ = [
|
|
198
|
-
# Enums
|
|
199
|
-
"CachePolicy",
|
|
200
|
-
"CacheLevel",
|
|
201
|
-
"CacheEventType",
|
|
202
|
-
# Data models
|
|
203
|
-
"CacheEntry",
|
|
204
|
-
"CacheStatistics",
|
|
205
|
-
"CacheConfig",
|
|
206
|
-
"CacheOperation",
|
|
207
|
-
"CacheMetrics",
|
|
208
|
-
]
|
unrealon_sdk/src/dto/common.py
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Common Data Transfer Objects
|
|
3
|
-
|
|
4
|
-
Shared DTO models used across multiple SDK components.
|
|
5
|
-
These are utility DTOs that don't fit into specific categories.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from datetime import datetime
|
|
9
|
-
from typing import Any, Dict, List, Optional
|
|
10
|
-
|
|
11
|
-
from pydantic import BaseModel, Field, ConfigDict
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
# Placeholder for future common DTOs
|
|
15
|
-
# Will be expanded as needed
|
|
16
|
-
|
|
17
|
-
__all__: List[str] = [
|
|
18
|
-
# Will be populated as common DTOs are added
|
|
19
|
-
]
|