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.
Files changed (302) hide show
  1. unrealon/__init__.py +23 -21
  2. unrealon-1.1.0.dist-info/METADATA +164 -0
  3. unrealon-1.1.0.dist-info/RECORD +82 -0
  4. {unrealon-1.0.9.dist-info → unrealon-1.1.0.dist-info}/WHEEL +1 -1
  5. unrealon-1.1.0.dist-info/entry_points.txt +9 -0
  6. {unrealon-1.0.9.dist-info → unrealon-1.1.0.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
@@ -0,0 +1,63 @@
1
+ """
2
+ Parser-related models.
3
+
4
+ Contains models for parser registration, information, and statistics.
5
+ """
6
+
7
+ from typing import List, Optional, Dict, Literal
8
+ from datetime import datetime
9
+ from pydantic import Field
10
+ from typing_extensions import Annotated
11
+
12
+ from .base import BaseParserModel
13
+
14
+
15
+ class ParserInfo(BaseParserModel):
16
+ """Parser registration and status information."""
17
+
18
+ parser_id: Annotated[str, Field(min_length=1, description="Unique parser identifier")]
19
+ parser_type: Annotated[str, Field(min_length=1, description="Type of parser (encar, autotrader, etc.)")]
20
+ version: Annotated[str, Field(min_length=1, description="Parser version")]
21
+ capabilities: List[str] = Field(default_factory=list, description="List of parser capabilities")
22
+ status: Literal["active", "inactive", "error"] = "active"
23
+ metadata: Dict[str, str] = Field(default_factory=dict, description="Additional parser metadata")
24
+ registered_at: datetime = Field(default_factory=datetime.now)
25
+ last_heartbeat: datetime = Field(default_factory=datetime.now)
26
+
27
+
28
+ class ParserStats(BaseParserModel):
29
+ """Parser performance and usage statistics."""
30
+
31
+ parser_id: Annotated[str, Field(min_length=1, description="Parser ID")]
32
+ total_commands: Annotated[int, Field(ge=0)] = 0
33
+ successful_commands: Annotated[int, Field(ge=0)] = 0
34
+ failed_commands: Annotated[int, Field(ge=0)] = 0
35
+ average_response_time: Annotated[float, Field(ge=0)] = 0.0
36
+ uptime_seconds: Annotated[int, Field(ge=0)] = 0
37
+ memory_usage_mb: Annotated[float, Field(ge=0)] = 0.0
38
+ cpu_usage_percent: Annotated[float, Field(ge=0, le=100)] = 0.0
39
+ last_updated: datetime = Field(default_factory=datetime.now)
40
+
41
+
42
+ class ParserHealth(BaseParserModel):
43
+ """Parser health check information."""
44
+
45
+ parser_id: Annotated[str, Field(min_length=1, description="Parser ID")]
46
+ status: Literal["healthy", "degraded", "unhealthy"] = "healthy"
47
+ last_check: datetime = Field(default_factory=datetime.now)
48
+ response_time: Annotated[float, Field(ge=0)] = 0.0
49
+ memory_usage: Annotated[float, Field(ge=0)] = 0.0
50
+ cpu_usage: Annotated[float, Field(ge=0, le=100)] = 0.0
51
+ active_connections: Annotated[int, Field(ge=0)] = 0
52
+ queue_size: Annotated[int, Field(ge=0)] = 0
53
+ errors: List[str] = Field(default_factory=list)
54
+
55
+
56
+ class ParserSystemStats(BaseParserModel):
57
+ """System-wide parser statistics."""
58
+
59
+ total_parsers: Annotated[int, Field(ge=0)] = 0
60
+ active_sessions: Annotated[int, Field(ge=0)] = 0
61
+ total_commands: Annotated[int, Field(ge=0)] = 0
62
+ allocated_proxies: Annotated[int, Field(ge=0)] = 0
63
+ parser_types: Dict[str, int] = Field(default_factory=dict, description="Count by parser type")
@@ -0,0 +1,41 @@
1
+ """
2
+ Proxy-related models.
3
+
4
+ Contains models for proxy allocation, management, and health checking.
5
+ """
6
+
7
+ from typing import Optional, Literal
8
+ from datetime import datetime
9
+ from pydantic import Field
10
+ from typing_extensions import Annotated
11
+
12
+ from .base import BaseParserModel
13
+
14
+
15
+ class ProxyRequest(BaseParserModel):
16
+ """Request for proxy allocation."""
17
+
18
+ parser_id: Annotated[str, Field(min_length=1, description="Parser ID requesting proxy")]
19
+ proxy_type: Literal["http", "https", "socks4", "socks5"] = "http"
20
+ location: Optional[Annotated[str, Field(min_length=1, description="Preferred proxy location")]] = None
21
+ session_duration: Annotated[int, Field(gt=0, le=86400, description="Session duration in seconds")] = 3600
22
+ bandwidth_limit: Optional[Annotated[int, Field(gt=0, description="Bandwidth limit in MB/s")]] = None
23
+
24
+
25
+ class ProxyInfo(BaseParserModel):
26
+ """Proxy allocation information."""
27
+
28
+ proxy_id: Annotated[str, Field(min_length=1, description="Unique proxy identifier")]
29
+ parser_id: Annotated[str, Field(min_length=1, description="Parser ID using this proxy")]
30
+ host: Annotated[str, Field(min_length=1, description="Proxy host")]
31
+ port: Annotated[int, Field(gt=0, le=65535, description="Proxy port")]
32
+ proxy_type: Literal["http", "https", "socks4", "socks5"] = "http"
33
+ username: Optional[str] = None
34
+ password: Optional[str] = None
35
+ location: Optional[str] = None
36
+ status: Literal["active", "inactive", "error"] = "active"
37
+ allocated_at: datetime = Field(default_factory=datetime.now)
38
+ expires_at: Optional[datetime] = None
39
+ last_used: Optional[datetime] = None
40
+ usage_count: Annotated[int, Field(ge=0)] = 0
41
+ bandwidth_used: Annotated[float, Field(ge=0)] = 0.0
@@ -0,0 +1,95 @@
1
+ """
2
+ RPC request models.
3
+
4
+ Strict typing for all RPC requests - NO Dict[str, Any] allowed!
5
+ """
6
+
7
+ from typing import Optional, Dict, List
8
+ from pydantic import Field
9
+
10
+ from .base import BaseRPCRequest
11
+
12
+
13
+ class ParserRegisterRequest(BaseRPCRequest):
14
+ """Request for parser registration."""
15
+
16
+ parser_id: str = Field(description="Unique parser identifier")
17
+ parser_type: str = Field(description="Type of parser")
18
+ version: str = Field(description="Parser version")
19
+ capabilities: List[str] = Field(default_factory=list, description="Parser capabilities")
20
+ metadata: Optional[Dict[str, str]] = Field(default=None, description="Additional metadata")
21
+
22
+
23
+ class ParserStatusRequest(BaseRPCRequest):
24
+ """Request for parser status."""
25
+
26
+ parser_id: str = Field(description="Parser ID to get status for")
27
+
28
+
29
+ class ParserListRequest(BaseRPCRequest):
30
+ """Request for parser list."""
31
+
32
+ parser_type: Optional[str] = Field(default=None, description="Filter by parser type")
33
+
34
+
35
+ class ParserHealthRequest(BaseRPCRequest):
36
+ """Request for parser health check."""
37
+
38
+ parser_id: str = Field(description="Parser ID to check health for")
39
+
40
+
41
+ class SessionStartRequest(BaseRPCRequest):
42
+ """Request for session start."""
43
+
44
+ parser_id: str = Field(description="Parser ID")
45
+ session_type: str = Field(description="Type of session")
46
+ metadata: Optional[Dict[str, str]] = Field(default=None, description="Session metadata")
47
+
48
+
49
+ class SessionEndRequest(BaseRPCRequest):
50
+ """Request for session end."""
51
+
52
+ session_id: str = Field(description="Session ID to end")
53
+
54
+
55
+ class CommandExecuteRequest(BaseRPCRequest):
56
+ """Request for command execution."""
57
+
58
+ command_type: str = Field(description="Type of command")
59
+ parser_id: str = Field(description="Parser ID")
60
+ parameters: Dict[str, str] = Field(default_factory=dict, description="Command parameters")
61
+ timeout: int = Field(default=300, description="Command timeout in seconds")
62
+
63
+
64
+ class CommandCreateRequest(BaseRPCRequest):
65
+ """Request for command creation."""
66
+
67
+ command_type: str = Field(description="Type of command")
68
+ parser_id: str = Field(description="Parser ID")
69
+ parameters: Dict[str, str] = Field(default_factory=dict, description="Command parameters")
70
+
71
+
72
+ class CommandStatusRequest(BaseRPCRequest):
73
+ """Request for command status."""
74
+
75
+ command_id: str = Field(description="Command ID to get status for")
76
+
77
+
78
+ class ProxyAllocateRequest(BaseRPCRequest):
79
+ """Request for proxy allocation."""
80
+
81
+ parser_id: str = Field(description="Parser ID requesting proxy")
82
+ proxy_type: str = Field(default="http", description="Type of proxy needed")
83
+ location: Optional[str] = Field(default=None, description="Preferred proxy location")
84
+
85
+
86
+ class ProxyReleaseRequest(BaseRPCRequest):
87
+ """Request for proxy release."""
88
+
89
+ proxy_id: str = Field(description="Proxy ID to release")
90
+
91
+
92
+ class ProxyCheckRequest(BaseRPCRequest):
93
+ """Request for proxy health check."""
94
+
95
+ proxy_id: str = Field(description="Proxy ID to check")
@@ -0,0 +1,88 @@
1
+ """
2
+ RPC response models.
3
+
4
+ Strict typing for all RPC responses - NO raw dicts allowed!
5
+ """
6
+
7
+ from typing import Optional, List
8
+ from pydantic import Field
9
+
10
+ from .base import BaseRPCResponse
11
+ from .parser import ParserInfo, ParserHealth
12
+ from .session import ParserSession
13
+ from .command import ParserCommand, CommandResult
14
+ from .proxy import ProxyInfo
15
+
16
+
17
+ class ParserRegisterResponse(BaseRPCResponse):
18
+ """Response for parser registration."""
19
+
20
+ parser_id: Optional[str] = Field(default=None, description="Registered parser ID")
21
+
22
+
23
+ class ParserStatusResponse(BaseRPCResponse):
24
+ """Response for parser status request."""
25
+
26
+ parser: Optional[ParserInfo] = Field(default=None, description="Parser information")
27
+
28
+
29
+ class ParserListResponse(BaseRPCResponse):
30
+ """Response for parser list request."""
31
+
32
+ parsers: List[ParserInfo] = Field(default_factory=list, description="List of parsers")
33
+ total: int = Field(default=0, description="Total number of parsers")
34
+
35
+
36
+ class ParserHealthResponse(BaseRPCResponse):
37
+ """Response for parser health check."""
38
+
39
+ health: Optional[ParserHealth] = Field(default=None, description="Parser health information")
40
+
41
+
42
+ class SessionStartResponse(BaseRPCResponse):
43
+ """Response for session start."""
44
+
45
+ session: Optional[ParserSession] = Field(default=None, description="Started session information")
46
+
47
+
48
+ class SessionEndResponse(BaseRPCResponse):
49
+ """Response for session end."""
50
+
51
+ session_id: Optional[str] = Field(default=None, description="Ended session ID")
52
+
53
+
54
+ class CommandExecuteResponse(BaseRPCResponse):
55
+ """Response for command execution."""
56
+
57
+ result: Optional[CommandResult] = Field(default=None, description="Command execution result")
58
+
59
+
60
+ class CommandCreateResponse(BaseRPCResponse):
61
+ """Response for command creation."""
62
+
63
+ command: Optional[ParserCommand] = Field(default=None, description="Created command")
64
+
65
+
66
+ class CommandStatusResponse(BaseRPCResponse):
67
+ """Response for command status request."""
68
+
69
+ command: Optional[ParserCommand] = Field(default=None, description="Command information")
70
+
71
+
72
+ class ProxyAllocateResponse(BaseRPCResponse):
73
+ """Response for proxy allocation."""
74
+
75
+ proxy: Optional[ProxyInfo] = Field(default=None, description="Allocated proxy information")
76
+
77
+
78
+ class ProxyReleaseResponse(BaseRPCResponse):
79
+ """Response for proxy release."""
80
+
81
+ proxy_id: Optional[str] = Field(default=None, description="Released proxy ID")
82
+
83
+
84
+ class ProxyCheckResponse(BaseRPCResponse):
85
+ """Response for proxy health check."""
86
+
87
+ proxy_id: Optional[str] = Field(default=None, description="Checked proxy ID")
88
+ status: Optional[str] = Field(default=None, description="Proxy status")