unrealon 1.0.9__py3-none-any.whl → 1.1.1__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.
Files changed (302) hide show
  1. unrealon/__init__.py +23 -21
  2. unrealon-1.1.1.dist-info/METADATA +722 -0
  3. unrealon-1.1.1.dist-info/RECORD +82 -0
  4. {unrealon-1.0.9.dist-info → unrealon-1.1.1.dist-info}/WHEEL +1 -1
  5. unrealon-1.1.1.dist-info/entry_points.txt +9 -0
  6. {unrealon-1.0.9.dist-info → unrealon-1.1.1.dist-info/licenses}/LICENSE +1 -1
  7. unrealon_bridge/__init__.py +114 -0
  8. unrealon_bridge/cli.py +316 -0
  9. unrealon_bridge/client/__init__.py +93 -0
  10. unrealon_bridge/client/base.py +78 -0
  11. unrealon_bridge/client/commands.py +89 -0
  12. unrealon_bridge/client/connection.py +90 -0
  13. unrealon_bridge/client/events.py +65 -0
  14. unrealon_bridge/client/health.py +38 -0
  15. unrealon_bridge/client/html_parser.py +146 -0
  16. unrealon_bridge/client/logging.py +139 -0
  17. unrealon_bridge/client/proxy.py +70 -0
  18. unrealon_bridge/client/scheduler.py +450 -0
  19. unrealon_bridge/client/session.py +70 -0
  20. unrealon_bridge/configs/__init__.py +14 -0
  21. unrealon_bridge/configs/bridge_config.py +212 -0
  22. unrealon_bridge/configs/bridge_config.yaml +39 -0
  23. unrealon_bridge/models/__init__.py +138 -0
  24. unrealon_bridge/models/base.py +28 -0
  25. unrealon_bridge/models/command.py +41 -0
  26. unrealon_bridge/models/events.py +40 -0
  27. unrealon_bridge/models/html_parser.py +79 -0
  28. unrealon_bridge/models/logging.py +55 -0
  29. unrealon_bridge/models/parser.py +63 -0
  30. unrealon_bridge/models/proxy.py +41 -0
  31. unrealon_bridge/models/requests.py +95 -0
  32. unrealon_bridge/models/responses.py +88 -0
  33. unrealon_bridge/models/scheduler.py +592 -0
  34. unrealon_bridge/models/session.py +28 -0
  35. unrealon_bridge/server/__init__.py +91 -0
  36. unrealon_bridge/server/base.py +171 -0
  37. unrealon_bridge/server/handlers/__init__.py +23 -0
  38. unrealon_bridge/server/handlers/command.py +110 -0
  39. unrealon_bridge/server/handlers/html_parser.py +139 -0
  40. unrealon_bridge/server/handlers/logging.py +95 -0
  41. unrealon_bridge/server/handlers/parser.py +95 -0
  42. unrealon_bridge/server/handlers/proxy.py +75 -0
  43. unrealon_bridge/server/handlers/scheduler.py +545 -0
  44. unrealon_bridge/server/handlers/session.py +66 -0
  45. unrealon_browser/__init__.py +61 -18
  46. unrealon_browser/{src/cli → cli}/browser_cli.py +6 -13
  47. unrealon_browser/{src/cli → cli}/cookies_cli.py +5 -1
  48. unrealon_browser/{src/core → core}/browser_manager.py +2 -2
  49. unrealon_browser/{src/managers → managers}/captcha.py +1 -1
  50. unrealon_browser/{src/managers → managers}/cookies.py +1 -1
  51. unrealon_browser/managers/logger_bridge.py +231 -0
  52. unrealon_browser/{src/managers → managers}/profile.py +1 -1
  53. unrealon_driver/__init__.py +73 -19
  54. unrealon_driver/browser/__init__.py +8 -0
  55. unrealon_driver/browser/config.py +74 -0
  56. unrealon_driver/browser/manager.py +416 -0
  57. unrealon_driver/exceptions.py +28 -0
  58. unrealon_driver/parser/__init__.py +55 -0
  59. unrealon_driver/parser/cli_manager.py +141 -0
  60. unrealon_driver/parser/daemon_manager.py +227 -0
  61. unrealon_driver/parser/managers/__init__.py +46 -0
  62. unrealon_driver/parser/managers/browser.py +51 -0
  63. unrealon_driver/parser/managers/config.py +281 -0
  64. unrealon_driver/parser/managers/error.py +412 -0
  65. unrealon_driver/parser/managers/html.py +732 -0
  66. unrealon_driver/parser/managers/logging.py +609 -0
  67. unrealon_driver/parser/managers/result.py +321 -0
  68. unrealon_driver/parser/parser_manager.py +628 -0
  69. unrealon/sdk_config.py +0 -88
  70. unrealon-1.0.9.dist-info/METADATA +0 -810
  71. unrealon-1.0.9.dist-info/RECORD +0 -246
  72. unrealon_browser/pyproject.toml +0 -182
  73. unrealon_browser/src/__init__.py +0 -62
  74. unrealon_browser/src/managers/logger_bridge.py +0 -395
  75. unrealon_driver/README.md +0 -204
  76. unrealon_driver/pyproject.toml +0 -187
  77. unrealon_driver/src/__init__.py +0 -90
  78. unrealon_driver/src/cli/__init__.py +0 -10
  79. unrealon_driver/src/cli/main.py +0 -66
  80. unrealon_driver/src/cli/simple.py +0 -510
  81. unrealon_driver/src/config/__init__.py +0 -11
  82. unrealon_driver/src/config/auto_config.py +0 -478
  83. unrealon_driver/src/core/__init__.py +0 -18
  84. unrealon_driver/src/core/exceptions.py +0 -289
  85. unrealon_driver/src/core/parser.py +0 -638
  86. unrealon_driver/src/dto/__init__.py +0 -66
  87. unrealon_driver/src/dto/cli.py +0 -119
  88. unrealon_driver/src/dto/config.py +0 -18
  89. unrealon_driver/src/dto/events.py +0 -237
  90. unrealon_driver/src/dto/execution.py +0 -313
  91. unrealon_driver/src/dto/services.py +0 -311
  92. unrealon_driver/src/execution/__init__.py +0 -23
  93. unrealon_driver/src/execution/daemon_mode.py +0 -317
  94. unrealon_driver/src/execution/interactive_mode.py +0 -88
  95. unrealon_driver/src/execution/modes.py +0 -45
  96. unrealon_driver/src/execution/scheduled_mode.py +0 -209
  97. unrealon_driver/src/execution/test_mode.py +0 -250
  98. unrealon_driver/src/logging/__init__.py +0 -24
  99. unrealon_driver/src/logging/driver_logger.py +0 -512
  100. unrealon_driver/src/services/__init__.py +0 -24
  101. unrealon_driver/src/services/browser_service.py +0 -726
  102. unrealon_driver/src/services/llm/__init__.py +0 -15
  103. unrealon_driver/src/services/llm/browser_llm_service.py +0 -363
  104. unrealon_driver/src/services/llm/llm.py +0 -195
  105. unrealon_driver/src/services/logger_service.py +0 -232
  106. unrealon_driver/src/services/metrics_service.py +0 -185
  107. unrealon_driver/src/services/scheduler_service.py +0 -489
  108. unrealon_driver/src/services/websocket_service.py +0 -362
  109. unrealon_driver/src/utils/__init__.py +0 -16
  110. unrealon_driver/src/utils/service_factory.py +0 -317
  111. unrealon_driver/src/utils/time_formatter.py +0 -338
  112. unrealon_llm/README.md +0 -44
  113. unrealon_llm/__init__.py +0 -26
  114. unrealon_llm/pyproject.toml +0 -154
  115. unrealon_llm/src/__init__.py +0 -228
  116. unrealon_llm/src/cli/__init__.py +0 -0
  117. unrealon_llm/src/core/__init__.py +0 -11
  118. unrealon_llm/src/core/smart_client.py +0 -438
  119. unrealon_llm/src/dto/__init__.py +0 -155
  120. unrealon_llm/src/dto/models/__init__.py +0 -0
  121. unrealon_llm/src/dto/models/config.py +0 -343
  122. unrealon_llm/src/dto/models/core.py +0 -328
  123. unrealon_llm/src/dto/models/enums.py +0 -123
  124. unrealon_llm/src/dto/models/html_analysis.py +0 -345
  125. unrealon_llm/src/dto/models/statistics.py +0 -473
  126. unrealon_llm/src/dto/models/translation.py +0 -383
  127. unrealon_llm/src/dto/models/type_conversion.py +0 -462
  128. unrealon_llm/src/dto/schemas/__init__.py +0 -0
  129. unrealon_llm/src/exceptions.py +0 -392
  130. unrealon_llm/src/llm_config/__init__.py +0 -20
  131. unrealon_llm/src/llm_config/logging_config.py +0 -178
  132. unrealon_llm/src/llm_logging/__init__.py +0 -42
  133. unrealon_llm/src/llm_logging/llm_events.py +0 -107
  134. unrealon_llm/src/llm_logging/llm_logger.py +0 -466
  135. unrealon_llm/src/managers/__init__.py +0 -15
  136. unrealon_llm/src/managers/cache_manager.py +0 -67
  137. unrealon_llm/src/managers/cost_manager.py +0 -107
  138. unrealon_llm/src/managers/request_manager.py +0 -298
  139. unrealon_llm/src/modules/__init__.py +0 -0
  140. unrealon_llm/src/modules/html_processor/__init__.py +0 -25
  141. unrealon_llm/src/modules/html_processor/base_processor.py +0 -415
  142. unrealon_llm/src/modules/html_processor/details_processor.py +0 -85
  143. unrealon_llm/src/modules/html_processor/listing_processor.py +0 -91
  144. unrealon_llm/src/modules/html_processor/models/__init__.py +0 -20
  145. unrealon_llm/src/modules/html_processor/models/processing_models.py +0 -40
  146. unrealon_llm/src/modules/html_processor/models/universal_model.py +0 -56
  147. unrealon_llm/src/modules/html_processor/processor.py +0 -102
  148. unrealon_llm/src/modules/llm/__init__.py +0 -0
  149. unrealon_llm/src/modules/translator/__init__.py +0 -0
  150. unrealon_llm/src/provider.py +0 -116
  151. unrealon_llm/src/utils/__init__.py +0 -95
  152. unrealon_llm/src/utils/common.py +0 -64
  153. unrealon_llm/src/utils/data_extractor.py +0 -188
  154. unrealon_llm/src/utils/html_cleaner.py +0 -767
  155. unrealon_llm/src/utils/language_detector.py +0 -308
  156. unrealon_llm/src/utils/models_cache.py +0 -592
  157. unrealon_llm/src/utils/smart_counter.py +0 -229
  158. unrealon_llm/src/utils/token_counter.py +0 -189
  159. unrealon_sdk/README.md +0 -25
  160. unrealon_sdk/__init__.py +0 -30
  161. unrealon_sdk/pyproject.toml +0 -231
  162. unrealon_sdk/src/__init__.py +0 -150
  163. unrealon_sdk/src/cli/__init__.py +0 -12
  164. unrealon_sdk/src/cli/commands/__init__.py +0 -22
  165. unrealon_sdk/src/cli/commands/benchmark.py +0 -42
  166. unrealon_sdk/src/cli/commands/diagnostics.py +0 -573
  167. unrealon_sdk/src/cli/commands/health.py +0 -46
  168. unrealon_sdk/src/cli/commands/integration.py +0 -498
  169. unrealon_sdk/src/cli/commands/reports.py +0 -43
  170. unrealon_sdk/src/cli/commands/security.py +0 -36
  171. unrealon_sdk/src/cli/commands/server.py +0 -483
  172. unrealon_sdk/src/cli/commands/servers.py +0 -56
  173. unrealon_sdk/src/cli/commands/tests.py +0 -55
  174. unrealon_sdk/src/cli/main.py +0 -126
  175. unrealon_sdk/src/cli/utils/reporter.py +0 -519
  176. unrealon_sdk/src/clients/openapi.yaml +0 -3347
  177. unrealon_sdk/src/clients/python_http/__init__.py +0 -3
  178. unrealon_sdk/src/clients/python_http/api_config.py +0 -228
  179. unrealon_sdk/src/clients/python_http/models/BaseModel.py +0 -12
  180. unrealon_sdk/src/clients/python_http/models/BroadcastDeliveryStats.py +0 -33
  181. unrealon_sdk/src/clients/python_http/models/BroadcastMessage.py +0 -17
  182. unrealon_sdk/src/clients/python_http/models/BroadcastMessageRequest.py +0 -35
  183. unrealon_sdk/src/clients/python_http/models/BroadcastPriority.py +0 -10
  184. unrealon_sdk/src/clients/python_http/models/BroadcastResponse.py +0 -21
  185. unrealon_sdk/src/clients/python_http/models/BroadcastResultResponse.py +0 -33
  186. unrealon_sdk/src/clients/python_http/models/BroadcastTarget.py +0 -11
  187. unrealon_sdk/src/clients/python_http/models/ConnectionStats.py +0 -27
  188. unrealon_sdk/src/clients/python_http/models/ConnectionsResponse.py +0 -21
  189. unrealon_sdk/src/clients/python_http/models/DeveloperMessageResponse.py +0 -23
  190. unrealon_sdk/src/clients/python_http/models/ErrorResponse.py +0 -25
  191. unrealon_sdk/src/clients/python_http/models/HTTPValidationError.py +0 -16
  192. unrealon_sdk/src/clients/python_http/models/HealthResponse.py +0 -23
  193. unrealon_sdk/src/clients/python_http/models/HealthStatus.py +0 -33
  194. unrealon_sdk/src/clients/python_http/models/LogLevel.py +0 -10
  195. unrealon_sdk/src/clients/python_http/models/LoggingRequest.py +0 -27
  196. unrealon_sdk/src/clients/python_http/models/LoggingResponse.py +0 -23
  197. unrealon_sdk/src/clients/python_http/models/MaintenanceMode.py +0 -9
  198. unrealon_sdk/src/clients/python_http/models/MaintenanceModeRequest.py +0 -33
  199. unrealon_sdk/src/clients/python_http/models/MaintenanceStatusResponse.py +0 -39
  200. unrealon_sdk/src/clients/python_http/models/ParserCommandRequest.py +0 -25
  201. unrealon_sdk/src/clients/python_http/models/ParserMessageResponse.py +0 -21
  202. unrealon_sdk/src/clients/python_http/models/ParserRegistrationRequest.py +0 -28
  203. unrealon_sdk/src/clients/python_http/models/ParserRegistrationResponse.py +0 -25
  204. unrealon_sdk/src/clients/python_http/models/ParserType.py +0 -10
  205. unrealon_sdk/src/clients/python_http/models/ProxyBlockRequest.py +0 -19
  206. unrealon_sdk/src/clients/python_http/models/ProxyEndpointResponse.py +0 -20
  207. unrealon_sdk/src/clients/python_http/models/ProxyListResponse.py +0 -19
  208. unrealon_sdk/src/clients/python_http/models/ProxyProvider.py +0 -10
  209. unrealon_sdk/src/clients/python_http/models/ProxyPurchaseRequest.py +0 -25
  210. unrealon_sdk/src/clients/python_http/models/ProxyResponse.py +0 -47
  211. unrealon_sdk/src/clients/python_http/models/ProxyRotationRequest.py +0 -23
  212. unrealon_sdk/src/clients/python_http/models/ProxyStatus.py +0 -10
  213. unrealon_sdk/src/clients/python_http/models/ProxyUsageRequest.py +0 -19
  214. unrealon_sdk/src/clients/python_http/models/ProxyUsageStatsResponse.py +0 -26
  215. unrealon_sdk/src/clients/python_http/models/ServiceRegistrationDto.py +0 -23
  216. unrealon_sdk/src/clients/python_http/models/ServiceStatsResponse.py +0 -31
  217. unrealon_sdk/src/clients/python_http/models/SessionStartRequest.py +0 -23
  218. unrealon_sdk/src/clients/python_http/models/SuccessResponse.py +0 -25
  219. unrealon_sdk/src/clients/python_http/models/SystemNotificationResponse.py +0 -23
  220. unrealon_sdk/src/clients/python_http/models/ValidationError.py +0 -18
  221. unrealon_sdk/src/clients/python_http/models/ValidationErrorResponse.py +0 -21
  222. unrealon_sdk/src/clients/python_http/models/WebSocketMetrics.py +0 -21
  223. unrealon_sdk/src/clients/python_http/models/__init__.py +0 -44
  224. unrealon_sdk/src/clients/python_http/services/None_service.py +0 -35
  225. unrealon_sdk/src/clients/python_http/services/ParserManagement_service.py +0 -190
  226. unrealon_sdk/src/clients/python_http/services/ProxyManagement_service.py +0 -289
  227. unrealon_sdk/src/clients/python_http/services/SocketLogging_service.py +0 -187
  228. unrealon_sdk/src/clients/python_http/services/SystemHealth_service.py +0 -119
  229. unrealon_sdk/src/clients/python_http/services/WebSocketAPI_service.py +0 -198
  230. unrealon_sdk/src/clients/python_http/services/__init__.py +0 -0
  231. unrealon_sdk/src/clients/python_http/services/admin_service.py +0 -125
  232. unrealon_sdk/src/clients/python_http/services/async_None_service.py +0 -35
  233. unrealon_sdk/src/clients/python_http/services/async_ParserManagement_service.py +0 -190
  234. unrealon_sdk/src/clients/python_http/services/async_ProxyManagement_service.py +0 -289
  235. unrealon_sdk/src/clients/python_http/services/async_SocketLogging_service.py +0 -189
  236. unrealon_sdk/src/clients/python_http/services/async_SystemHealth_service.py +0 -123
  237. unrealon_sdk/src/clients/python_http/services/async_WebSocketAPI_service.py +0 -200
  238. unrealon_sdk/src/clients/python_http/services/async_admin_service.py +0 -125
  239. unrealon_sdk/src/clients/python_websocket/__init__.py +0 -28
  240. unrealon_sdk/src/clients/python_websocket/client.py +0 -490
  241. unrealon_sdk/src/clients/python_websocket/events.py +0 -732
  242. unrealon_sdk/src/clients/python_websocket/example.py +0 -136
  243. unrealon_sdk/src/clients/python_websocket/types.py +0 -871
  244. unrealon_sdk/src/core/__init__.py +0 -64
  245. unrealon_sdk/src/core/client.py +0 -556
  246. unrealon_sdk/src/core/config.py +0 -465
  247. unrealon_sdk/src/core/exceptions.py +0 -239
  248. unrealon_sdk/src/core/metadata.py +0 -191
  249. unrealon_sdk/src/core/models.py +0 -142
  250. unrealon_sdk/src/core/types.py +0 -68
  251. unrealon_sdk/src/dto/__init__.py +0 -268
  252. unrealon_sdk/src/dto/authentication.py +0 -108
  253. unrealon_sdk/src/dto/cache.py +0 -208
  254. unrealon_sdk/src/dto/common.py +0 -19
  255. unrealon_sdk/src/dto/concurrency.py +0 -393
  256. unrealon_sdk/src/dto/events.py +0 -108
  257. unrealon_sdk/src/dto/health.py +0 -339
  258. unrealon_sdk/src/dto/load_balancing.py +0 -336
  259. unrealon_sdk/src/dto/logging.py +0 -230
  260. unrealon_sdk/src/dto/performance.py +0 -165
  261. unrealon_sdk/src/dto/rate_limiting.py +0 -295
  262. unrealon_sdk/src/dto/resource_pooling.py +0 -128
  263. unrealon_sdk/src/dto/structured_logging.py +0 -112
  264. unrealon_sdk/src/dto/task_scheduling.py +0 -121
  265. unrealon_sdk/src/dto/websocket.py +0 -55
  266. unrealon_sdk/src/enterprise/__init__.py +0 -59
  267. unrealon_sdk/src/enterprise/authentication.py +0 -401
  268. unrealon_sdk/src/enterprise/cache_manager.py +0 -578
  269. unrealon_sdk/src/enterprise/error_recovery.py +0 -494
  270. unrealon_sdk/src/enterprise/event_system.py +0 -549
  271. unrealon_sdk/src/enterprise/health_monitor.py +0 -747
  272. unrealon_sdk/src/enterprise/load_balancer.py +0 -964
  273. unrealon_sdk/src/enterprise/logging/__init__.py +0 -68
  274. unrealon_sdk/src/enterprise/logging/cleanup.py +0 -156
  275. unrealon_sdk/src/enterprise/logging/development.py +0 -744
  276. unrealon_sdk/src/enterprise/logging/service.py +0 -410
  277. unrealon_sdk/src/enterprise/multithreading_manager.py +0 -853
  278. unrealon_sdk/src/enterprise/performance_monitor.py +0 -539
  279. unrealon_sdk/src/enterprise/proxy_manager.py +0 -696
  280. unrealon_sdk/src/enterprise/rate_limiter.py +0 -652
  281. unrealon_sdk/src/enterprise/resource_pool.py +0 -763
  282. unrealon_sdk/src/enterprise/task_scheduler.py +0 -709
  283. unrealon_sdk/src/internal/__init__.py +0 -10
  284. unrealon_sdk/src/internal/command_router.py +0 -497
  285. unrealon_sdk/src/internal/connection_manager.py +0 -397
  286. unrealon_sdk/src/internal/http_client.py +0 -446
  287. unrealon_sdk/src/internal/websocket_client.py +0 -420
  288. unrealon_sdk/src/provider.py +0 -471
  289. unrealon_sdk/src/utils.py +0 -234
  290. /unrealon_browser/{src/cli → cli}/__init__.py +0 -0
  291. /unrealon_browser/{src/cli → cli}/interactive_mode.py +0 -0
  292. /unrealon_browser/{src/cli → cli}/main.py +0 -0
  293. /unrealon_browser/{src/core → core}/__init__.py +0 -0
  294. /unrealon_browser/{src/dto → dto}/__init__.py +0 -0
  295. /unrealon_browser/{src/dto → dto}/models/config.py +0 -0
  296. /unrealon_browser/{src/dto → dto}/models/core.py +0 -0
  297. /unrealon_browser/{src/dto → dto}/models/dataclasses.py +0 -0
  298. /unrealon_browser/{src/dto → dto}/models/detection.py +0 -0
  299. /unrealon_browser/{src/dto → dto}/models/enums.py +0 -0
  300. /unrealon_browser/{src/dto → dto}/models/statistics.py +0 -0
  301. /unrealon_browser/{src/managers → managers}/__init__.py +0 -0
  302. /unrealon_browser/{src/managers → managers}/stealth.py +0 -0
@@ -1,119 +0,0 @@
1
- """
2
- CLI Configuration Models for UnrealOn Driver v3.0
3
-
4
- Type-safe configuration for CLI interface.
5
- COMPLIANCE: 100% Pydantic v2 compliant.
6
- """
7
-
8
- from pydantic import BaseModel, Field, ConfigDict, field_validator
9
- from typing import Optional, Dict, Any
10
-
11
- from .config import LogLevel
12
-
13
-
14
- class ParserInstanceConfig(BaseModel):
15
- """
16
- Pydantic configuration model for Parser initialization.
17
- COMPLIANCE: CRITICAL_REQUIREMENTS.md - Pydantic v2 validation.
18
- """
19
-
20
- model_config = ConfigDict(
21
- validate_assignment=True,
22
- extra="forbid",
23
- str_strip_whitespace=True,
24
- )
25
-
26
- # Core identity
27
- parser_id: str = Field(
28
- ...,
29
- min_length=2,
30
- max_length=50,
31
- pattern=r"^[a-z][a-z0-9_]*$",
32
- description="Unique parser identifier (snake_case)",
33
- )
34
- parser_name: Optional[str] = Field(
35
- default=None,
36
- min_length=1,
37
- max_length=100,
38
- description="Human-readable parser name (auto-generated if None)",
39
- )
40
-
41
- # System configuration
42
- system_dir: str = Field(
43
- default="system",
44
- min_length=1,
45
- description="System directory for logs and files",
46
- )
47
- log_level: LogLevel = Field(default=LogLevel.INFO, description="Logging level")
48
-
49
- # Optional metadata
50
- description: Optional[str] = Field(
51
- default=None, max_length=200, description="Parser description"
52
- )
53
- version: str = Field(
54
- default="1.0.0",
55
- pattern=r"^\d+\.\d+\.\d+$",
56
- description="Parser version (semantic versioning)",
57
- )
58
-
59
- @field_validator("parser_name")
60
- @classmethod
61
- def generate_parser_name(cls, v: Optional[str], info) -> str:
62
- """Auto-generate parser_name from parser_id if not provided."""
63
- if v is None and "parser_id" in info.data:
64
- parser_id = info.data["parser_id"]
65
- return parser_id.replace("_", " ").title()
66
- return v or "Unknown Parser"
67
-
68
- def to_parser_config(self) -> dict:
69
- """Convert to dict for Parser initialization."""
70
- return {
71
- "parser_id": self.parser_id,
72
- "parser_name": self.parser_name,
73
- "debug_mode": self.log_level in {LogLevel.DEBUG, LogLevel.TRACE},
74
- "system_dir": self.system_dir,
75
- "environment": (
76
- "development"
77
- if self.log_level in {LogLevel.DEBUG, LogLevel.TRACE}
78
- else "production"
79
- ),
80
- "logger": {"log_level": self.log_level.value},
81
- }
82
-
83
-
84
- def create_parser_config(
85
- parser_id: str,
86
- parser_name: Optional[str] = None,
87
- system_dir: str = "system",
88
- log_level: str = "INFO",
89
- **kwargs,
90
- ) -> ParserInstanceConfig:
91
- """
92
- Factory function for creating ParserInstanceConfig.
93
- COMPLIANCE: CRITICAL_REQUIREMENTS.md - Factory for clean instantiation.
94
-
95
- Args:
96
- parser_id: Unique parser identifier
97
- parser_name: Human-readable name (auto-generated if None)
98
- system_dir: System directory
99
- log_level: Logging level
100
- **kwargs: Additional parameters
101
-
102
- Returns:
103
- Validated ParserInstanceConfig
104
-
105
- Example:
106
- config = create_parser_config(
107
- parser_id="simple_extractor",
108
- system_dir="system",
109
- log_level="DEBUG"
110
- )
111
- parser = SimpleParser(config)
112
- """
113
- return ParserInstanceConfig(
114
- parser_id=parser_id,
115
- parser_name=parser_name,
116
- system_dir=system_dir,
117
- log_level=LogLevel(log_level.upper()),
118
- **kwargs,
119
- )
@@ -1,18 +0,0 @@
1
- """
2
- Configuration models for UnrealOn Driver v3.0
3
-
4
- Pydantic v2 models for type-safe configuration.
5
- """
6
-
7
- from enum import Enum
8
-
9
-
10
- class LogLevel(str, Enum):
11
- """Logging levels enumeration."""
12
-
13
- TRACE = "TRACE"
14
- DEBUG = "DEBUG"
15
- INFO = "INFO"
16
- WARNING = "WARNING"
17
- ERROR = "ERROR"
18
- CRITICAL = "CRITICAL"
@@ -1,237 +0,0 @@
1
- """
2
- Driver Event Types - UnrealOn Driver v3.0
3
-
4
- Specialized event types for driver operations with full SDK integration.
5
- Provides structured logging for browser automation, parsing, and system monitoring.
6
-
7
- COMPLIANCE: 100% Pydantic v2 compliant, no Dict[str, Any] usage.
8
- """
9
-
10
- from enum import Enum
11
- from typing import Optional, List
12
- from datetime import datetime
13
- from pydantic import BaseModel, Field, ConfigDict
14
-
15
-
16
- class DriverEventType(str, Enum):
17
- """
18
- 🎯 Driver-specific event types for comprehensive operation tracking.
19
-
20
- Each event has a unique string value for proper enum behavior and naming.
21
- Provides driver-specific semantics for better monitoring and debugging.
22
- """
23
-
24
- # ==========================================
25
- # SERVICE LIFECYCLE EVENTS
26
- # ==========================================
27
- SERVICE_INITIALIZED = "service_initialized"
28
- SERVICE_CONFIGURED = "service_configured"
29
- SERVICE_STARTED = "service_started"
30
- SERVICE_STOPPED = "service_stopped"
31
- SERVICE_ERROR = "service_error"
32
- SERVICE_HEALTH_CHECK = "service_health_check"
33
-
34
- # ==========================================
35
- # DRIVER-SPECIFIC BROWSER EVENTS (not covered by unrealon_browser)
36
- # ==========================================
37
- BROWSER_CONTENT_EXTRACTED = (
38
- "browser_content_extracted" # Driver's structured extraction
39
- )
40
- BROWSER_SCREENSHOT_TAKEN = "browser_screenshot_taken" # Driver's screenshot feature
41
-
42
- # ==========================================
43
- # PARSER OPERATION EVENTS
44
- # ==========================================
45
- PARSER_STARTED = "parser_started"
46
- PARSER_COMPLETED = "parser_completed"
47
- PARSER_FAILED = "parser_failed"
48
- PARSER_DATA_EXTRACTED = "parser_data_extracted"
49
- PARSER_VALIDATION_PASSED = "parser_validation_passed"
50
- PARSER_VALIDATION_FAILED = "parser_validation_failed"
51
- PARSER_SCHEMA_APPLIED = "parser_schema_applied"
52
- PARSER_RETRY_ATTEMPTED = "parser_retry_attempted"
53
- PARSER_TIMEOUT = "parser_timeout"
54
-
55
- # ==========================================
56
- # DRIVER-SPECIFIC LLM EVENTS (not covered by unrealon_llm)
57
- # ==========================================
58
- LLM_EXTRACTION_WITH_BROWSER = (
59
- "llm_extraction_with_browser" # Driver's browser+LLM integration
60
- )
61
- LLM_BATCH_PROCESSING = "llm_batch_processing" # Driver's batch processing
62
-
63
- # ==========================================
64
- # SCHEDULER EVENTS
65
- # ==========================================
66
- SCHEDULER_TASK_QUEUED = "scheduler_task_queued"
67
- SCHEDULER_TASK_STARTED = "scheduler_task_started"
68
- SCHEDULER_TASK_COMPLETED = "scheduler_task_completed"
69
- SCHEDULER_TASK_FAILED = "scheduler_task_failed"
70
- SCHEDULER_TASK_RETRY = "scheduler_task_retry"
71
- SCHEDULER_CRON_TRIGGERED = "scheduler_cron_triggered"
72
- SCHEDULER_QUEUE_FULL = "scheduler_queue_full"
73
-
74
- # ==========================================
75
- # WEBSOCKET SERVICE EVENTS (driver-specific only, SDK handles connection events)
76
- # ==========================================
77
- WEBSOCKET_COMMAND_HANDLER_REGISTERED = "websocket_command_handler_registered"
78
-
79
- # ==========================================
80
- # METRICS SERVICE EVENTS (driver-specific metrics collection)
81
- # ==========================================
82
- METRICS_COLLECTION_STARTED = "metrics_collection_started"
83
- METRICS_COLLECTION_COMPLETED = "metrics_collection_completed"
84
- METRICS_DATA_AGGREGATED = "metrics_data_aggregated"
85
-
86
-
87
- # Convenience mappings for common event scenarios
88
- BROWSER_EVENTS = [
89
- DriverEventType.BROWSER_CONTENT_EXTRACTED, # Driver-specific structured extraction
90
- DriverEventType.BROWSER_SCREENSHOT_TAKEN, # Driver-specific screenshot feature
91
- ]
92
-
93
- PARSER_EVENTS = [
94
- DriverEventType.PARSER_STARTED,
95
- DriverEventType.PARSER_DATA_EXTRACTED,
96
- DriverEventType.PARSER_VALIDATION_PASSED,
97
- DriverEventType.PARSER_COMPLETED,
98
- ]
99
-
100
- LLM_EVENTS = [
101
- DriverEventType.LLM_EXTRACTION_WITH_BROWSER, # Driver-specific browser+LLM integration
102
- DriverEventType.LLM_BATCH_PROCESSING, # Driver-specific batch processing
103
- ]
104
-
105
- SCHEDULER_EVENTS = [
106
- DriverEventType.SCHEDULER_TASK_QUEUED,
107
- DriverEventType.SCHEDULER_TASK_STARTED,
108
- DriverEventType.SCHEDULER_TASK_COMPLETED,
109
- DriverEventType.SCHEDULER_CRON_TRIGGERED,
110
- ]
111
-
112
- WEBSOCKET_EVENTS = [
113
- DriverEventType.WEBSOCKET_COMMAND_HANDLER_REGISTERED, # Driver-specific handler registration
114
- ]
115
-
116
- METRICS_EVENTS = [
117
- DriverEventType.METRICS_COLLECTION_STARTED,
118
- DriverEventType.METRICS_COLLECTION_COMPLETED,
119
- DriverEventType.METRICS_DATA_AGGREGATED,
120
- ]
121
-
122
- ERROR_EVENTS = [
123
- DriverEventType.SERVICE_ERROR,
124
- DriverEventType.PARSER_FAILED,
125
- DriverEventType.PARSER_VALIDATION_FAILED,
126
- DriverEventType.PARSER_TIMEOUT,
127
- DriverEventType.SCHEDULER_TASK_FAILED,
128
- DriverEventType.SCHEDULER_QUEUE_FULL,
129
- ]
130
-
131
-
132
- class DriverEventContext(BaseModel):
133
- """
134
- 🎯 Structured context for driver events with full type safety.
135
-
136
- Provides rich context information for driver operations
137
- with automatic validation and serialization.
138
- """
139
-
140
- model_config = ConfigDict(
141
- validate_assignment=True,
142
- extra="forbid",
143
- str_strip_whitespace=True,
144
- )
145
-
146
- # Core identification
147
- parser_id: str = Field(..., description="Parser identifier")
148
- parser_name: str = Field(..., description="Human-readable parser name")
149
-
150
- # Event details
151
- event_type: DriverEventType = Field(..., description="Type of driver event")
152
- timestamp: datetime = Field(
153
- default_factory=datetime.utcnow, description="Event timestamp"
154
- )
155
-
156
- # Operation context
157
- operation_id: Optional[str] = Field(
158
- default=None, description="Unique operation identifier"
159
- )
160
- session_id: Optional[str] = Field(default=None, description="Session identifier")
161
-
162
- # Performance metrics
163
- duration_ms: Optional[float] = Field(
164
- default=None, ge=0, description="Operation duration in milliseconds"
165
- )
166
- memory_usage_mb: Optional[float] = Field(
167
- default=None, ge=0, description="Memory usage in MB"
168
- )
169
-
170
- # Browser context
171
- page_url: Optional[str] = Field(default=None, description="Current page URL")
172
- page_title: Optional[str] = Field(default=None, description="Page title")
173
- browser_version: Optional[str] = Field(default=None, description="Browser version")
174
-
175
- # LLM context
176
- llm_model: Optional[str] = Field(default=None, description="LLM model used")
177
- tokens_used: Optional[int] = Field(
178
- default=None, ge=0, description="Tokens consumed"
179
- )
180
- cost_usd: Optional[float] = Field(
181
- default=None, ge=0, description="Operation cost in USD"
182
- )
183
-
184
- # Data context
185
- items_processed: Optional[int] = Field(
186
- default=None, ge=0, description="Number of items processed"
187
- )
188
- data_size_bytes: Optional[int] = Field(
189
- default=None, ge=0, description="Data size in bytes"
190
- )
191
-
192
- # Error context
193
- error_type: Optional[str] = Field(default=None, description="Error type if failed")
194
- error_message: Optional[str] = Field(default=None, description="Error message")
195
- stack_trace: Optional[str] = Field(
196
- default=None, description="Stack trace for debugging"
197
- )
198
-
199
- # Additional metadata
200
- environment: str = Field(default="development", description="Runtime environment")
201
- service_name: Optional[str] = Field(
202
- default=None, description="Service that generated the event"
203
- )
204
- tags: List[str] = Field(
205
- default_factory=list, description="Event tags for filtering"
206
- )
207
-
208
-
209
- class DriverEventMetrics(BaseModel):
210
- """Performance metrics for driver events."""
211
-
212
- model_config = ConfigDict(validate_assignment=True, extra="forbid")
213
-
214
- # Timing metrics
215
- start_time: datetime = Field(..., description="Event start time")
216
- end_time: Optional[datetime] = Field(default=None, description="Event end time")
217
- duration_seconds: Optional[float] = Field(
218
- default=None, ge=0, description="Duration in seconds"
219
- )
220
-
221
- # Resource metrics
222
- cpu_percent: Optional[float] = Field(
223
- default=None, ge=0, le=100, description="CPU usage percentage"
224
- )
225
- memory_mb: Optional[float] = Field(
226
- default=None, ge=0, description="Memory usage in MB"
227
- )
228
- network_bytes: Optional[int] = Field(
229
- default=None, ge=0, description="Network bytes transferred"
230
- )
231
-
232
- # Success metrics
233
- success_rate: Optional[float] = Field(
234
- default=None, ge=0, le=1, description="Success rate (0-1)"
235
- )
236
- retry_count: int = Field(default=0, ge=0, description="Number of retries")
237
- error_count: int = Field(default=0, ge=0, description="Number of errors")
@@ -1,313 +0,0 @@
1
- """
2
- Execution mode configuration models for UnrealOn Driver v3.0
3
-
4
- Type-safe configuration for all execution modes.
5
- COMPLIANCE: 100% Pydantic v2 compliant, no Dict[str, Any] usage.
6
- """
7
-
8
- from pydantic import BaseModel, Field, ConfigDict
9
- from typing import Optional, List
10
- from enum import Enum
11
-
12
- from .config import LogLevel
13
-
14
-
15
- class ExecutionEnvironment(str, Enum):
16
- """Execution environment enumeration."""
17
-
18
- DEVELOPMENT = "development"
19
- TESTING = "testing"
20
- STAGING = "staging"
21
- PRODUCTION = "production"
22
-
23
-
24
- class ParserTestConfig(BaseModel):
25
- """Type-safe configuration for test mode execution."""
26
-
27
- model_config = ConfigDict(
28
- validate_assignment=True,
29
- extra="forbid",
30
- str_strip_whitespace=True,
31
- )
32
-
33
- # Core settings
34
- environment: ExecutionEnvironment = Field(default=ExecutionEnvironment.TESTING)
35
- verbose: bool = Field(default=False, description="Enable verbose output")
36
- show_browser: bool = Field(default=False, description="Show browser window")
37
- save_screenshots: bool = Field(default=False, description="Save debug screenshots")
38
-
39
- # Performance settings
40
- timeout_seconds: int = Field(default=60, ge=1, le=3600, description="Test timeout")
41
- max_retries: int = Field(
42
- default=3, ge=0, le=10, description="Maximum retry attempts"
43
- )
44
-
45
- # Output settings
46
- output_format: str = Field(default="json", pattern=r"^(json|yaml|csv)$")
47
- save_results: bool = Field(default=False, description="Save results to file")
48
- results_file: Optional[str] = Field(default=None, description="Results file path")
49
-
50
-
51
- class DaemonModeConfig(BaseModel):
52
- """Type-safe configuration for daemon mode execution."""
53
-
54
- model_config = ConfigDict(
55
- validate_assignment=True,
56
- extra="forbid",
57
- str_strip_whitespace=True,
58
- )
59
-
60
- # WebSocket settings
61
- server_url: Optional[str] = Field(default=None, description="WebSocket server URL")
62
- api_key: Optional[str] = Field(default=None, description="Authentication API key")
63
- auto_reconnect: bool = Field(
64
- default=True, description="Auto-reconnect on disconnect"
65
- )
66
-
67
- # Connection settings
68
- connection_timeout: int = Field(
69
- default=30, ge=1, le=300, description="Connection timeout"
70
- )
71
- heartbeat_interval: int = Field(
72
- default=30, ge=5, le=300, description="Heartbeat interval"
73
- )
74
- max_reconnect_attempts: int = Field(
75
- default=10, ge=1, le=100, description="Max reconnection attempts"
76
- )
77
-
78
- # Health monitoring
79
- health_check_interval: int = Field(
80
- default=60, ge=10, le=3600, description="Health check interval"
81
- )
82
- enable_metrics: bool = Field(default=True, description="Enable metrics collection")
83
-
84
-
85
- class ScheduledModeConfig(BaseModel):
86
- """Type-safe configuration for scheduled mode execution."""
87
-
88
- model_config = ConfigDict(
89
- validate_assignment=True,
90
- extra="forbid",
91
- str_strip_whitespace=True,
92
- )
93
-
94
- # Scheduling settings
95
- every: str = Field(..., description="Schedule interval (30m, 1h, daily)")
96
- at: Optional[str] = Field(
97
- default=None, description="Specific time for daily schedules"
98
- )
99
- max_runs: Optional[int] = Field(
100
- default=None, ge=1, description="Maximum number of runs"
101
- )
102
-
103
- # Execution settings
104
- timeout: int = Field(default=300, ge=30, le=3600, description="Task timeout")
105
- retry_attempts: int = Field(
106
- default=3, ge=0, le=10, description="Retry attempts on failure"
107
- )
108
- max_concurrent: int = Field(
109
- default=1, ge=1, le=10, description="Max concurrent tasks"
110
- )
111
-
112
- # Advanced settings
113
- jitter: bool = Field(default=True, description="Enable jitter for load balancing")
114
- jitter_range: float = Field(
115
- default=0.1, ge=0.0, le=0.5, description="Jitter range (0.1 = ±10%)"
116
- )
117
- error_handling: str = Field(default="retry", pattern=r"^(retry|skip|stop)$")
118
-
119
-
120
- class InteractiveModeConfig(BaseModel):
121
- """Type-safe configuration for interactive mode execution."""
122
-
123
- model_config = ConfigDict(
124
- validate_assignment=True,
125
- extra="forbid",
126
- str_strip_whitespace=True,
127
- )
128
-
129
- # Interface settings
130
- enable_debugger: bool = Field(
131
- default=True, description="Enable interactive debugger"
132
- )
133
- show_browser: bool = Field(default=True, description="Show browser window")
134
- auto_reload: bool = Field(default=True, description="Auto-reload on code changes")
135
-
136
- # Development settings
137
- log_level: LogLevel = Field(default=LogLevel.DEBUG, description="Logging level")
138
- enable_profiling: bool = Field(
139
- default=False, description="Enable performance profiling"
140
- )
141
- save_session: bool = Field(default=True, description="Save interactive session")
142
-
143
-
144
- class ExecutionResult(BaseModel):
145
- """Type-safe execution result model."""
146
-
147
- model_config = ConfigDict(
148
- validate_assignment=True,
149
- extra="forbid",
150
- )
151
-
152
- # Status
153
- success: bool = Field(..., description="Execution success status")
154
- execution_id: str = Field(..., description="Unique execution identifier")
155
-
156
- # Timing
157
- start_time: str = Field(default="", description="Execution start time (ISO format)")
158
- end_time: str = Field(default="", description="Execution end time (ISO format)")
159
- duration_seconds: float = Field(default=0.0, ge=0.0, description="Execution duration")
160
-
161
- # Data
162
- data: Optional[dict] = Field(default=None, description="Parsed data result")
163
- items_processed: int = Field(
164
- default=0, ge=0, description="Number of items processed"
165
- )
166
-
167
- # Error information
168
- error: Optional["ErrorInfo"] = Field(
169
- default=None, description="Error details if failed"
170
- )
171
-
172
- # Performance metrics
173
- performance_metrics: Optional["PerformanceMetrics"] = Field(
174
- default=None, description="Performance metrics if available"
175
- )
176
-
177
- # Metadata
178
- parser_id: str = Field(default="", description="Parser identifier")
179
- execution_mode: str = Field(default="test", description="Execution mode used")
180
- environment: ExecutionEnvironment = Field(default=ExecutionEnvironment.TESTING, description="Execution environment")
181
-
182
-
183
- class ErrorInfo(BaseModel):
184
- """Type-safe error information model."""
185
-
186
- model_config = ConfigDict(
187
- validate_assignment=True,
188
- extra="allow",
189
- )
190
-
191
- message: str = Field(..., description="Error message")
192
- error_type: str = Field(..., description="Error type/class")
193
- error_code: Optional[str] = Field(
194
- default=None, description="Application error code"
195
- )
196
- traceback: Optional[str] = Field(default=None, description="Error traceback")
197
- context: Optional[dict] = Field(
198
- default=None, description="Error context information"
199
- )
200
-
201
-
202
- class PerformanceMetrics(BaseModel):
203
- """Type-safe performance metrics model."""
204
-
205
- model_config = ConfigDict(
206
- validate_assignment=True,
207
- extra="forbid",
208
- )
209
-
210
- # Basic metrics
211
- execution_time_seconds: float = Field(
212
- default=0.0, ge=0.0, description="Total execution time"
213
- )
214
- memory_usage_mb: float = Field(default=0.0, ge=0.0, description="Peak memory usage")
215
- cpu_usage_percent: float = Field(
216
- default=0.0, ge=0.0, le=100.0, description="CPU usage percentage"
217
- )
218
-
219
- # Operation metrics
220
- operations_count: int = Field(
221
- default=0, ge=0, description="Number of operations performed"
222
- )
223
- operations_per_second: float = Field(
224
- default=0.0, ge=0.0, description="Operations per second"
225
- )
226
-
227
- # Service metrics
228
- browser_operations: int = Field(
229
- default=0, ge=0, description="Browser operations count"
230
- )
231
- llm_operations: int = Field(default=0, ge=0, description="LLM operations count")
232
- websocket_messages: int = Field(
233
- default=0, ge=0, description="WebSocket messages count"
234
- )
235
-
236
-
237
- class ScheduledModeStatus(BaseModel):
238
- """Type-safe scheduled mode status model."""
239
-
240
- model_config = ConfigDict(
241
- validate_assignment=True,
242
- extra="forbid",
243
- )
244
-
245
- status: str = Field(..., pattern=r"^(not_started|running|stopped|error)$")
246
- is_running: bool = Field(..., description="Whether scheduler is running")
247
- parser_id: str = Field(..., description="Parser identifier")
248
- parser_name: str = Field(..., description="Parser name")
249
- scheduler_health: Optional[dict] = Field(
250
- default=None, description="Scheduler health data"
251
- )
252
-
253
-
254
- class DaemonCommandResult(BaseModel):
255
- """Type-safe daemon command result model."""
256
-
257
- model_config = ConfigDict(
258
- validate_assignment=True,
259
- extra="forbid",
260
- )
261
-
262
- status: str = Field(..., pattern=r"^(success|error)$")
263
- data: Optional[dict] = Field(default=None, description="Command result data")
264
- items_processed: int = Field(default=0, ge=0, description="Items processed")
265
- duration_seconds: float = Field(..., ge=0.0, description="Command duration")
266
- parser_id: str = Field(..., description="Parser identifier")
267
- timestamp: str = Field(..., description="Command timestamp")
268
- error: Optional[ErrorInfo] = Field(
269
- default=None, description="Error details if failed"
270
- )
271
-
272
-
273
- class DaemonStatusResult(BaseModel):
274
- """Type-safe daemon status result model."""
275
-
276
- model_config = ConfigDict(
277
- validate_assignment=True,
278
- extra="forbid",
279
- )
280
-
281
- status: str = Field(..., pattern=r"^(success|error)$")
282
- parser_id: str = Field(..., description="Parser identifier")
283
- parser_name: str = Field(..., description="Parser name")
284
- daemon_running: bool = Field(..., description="Whether daemon is running")
285
- health: Optional[dict] = Field(default=None, description="Parser health data")
286
- timestamp: str = Field(..., description="Status timestamp")
287
- error: Optional[ErrorInfo] = Field(
288
- default=None, description="Error details if failed"
289
- )
290
-
291
-
292
- class DaemonHealthResult(BaseModel):
293
- """Type-safe daemon health result model."""
294
-
295
- model_config = ConfigDict(
296
- validate_assignment=True,
297
- extra="forbid",
298
- )
299
-
300
- status: str = Field(..., pattern=r"^(healthy|unhealthy)$")
301
- data: Optional[dict] = Field(default=None, description="Health check data")
302
- parser_id: str = Field(..., description="Parser identifier")
303
- timestamp: str = Field(..., description="Health check timestamp")
304
- error: Optional[ErrorInfo] = Field(
305
- default=None, description="Error details if failed"
306
- )
307
-
308
-
309
- # Update forward references
310
- ExecutionResult.model_rebuild()
311
- DaemonCommandResult.model_rebuild()
312
- DaemonStatusResult.model_rebuild()
313
- DaemonHealthResult.model_rebuild()