quantum-framework 0.9.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 (262) hide show
  1. quantum/__init__.py +1 -0
  2. quantum/cli/__init__.py +2 -0
  3. quantum/cli/commands/__init__.py +15 -0
  4. quantum/cli/commands/build.py +417 -0
  5. quantum/cli/commands/dev.py +185 -0
  6. quantum/cli/commands/docs.py +329 -0
  7. quantum/cli/commands/lint.py +523 -0
  8. quantum/cli/commands/migrate.py +527 -0
  9. quantum/cli/commands/new.py +622 -0
  10. quantum/cli/commands/serve.py +190 -0
  11. quantum/cli/commands/test.py +193 -0
  12. quantum/cli/deploy.py +810 -0
  13. quantum/cli/hot_reload.py +951 -0
  14. quantum/cli/jobs.py +356 -0
  15. quantum/cli/mq.py +582 -0
  16. quantum/cli/pkg.py +390 -0
  17. quantum/cli/runner.py +547 -0
  18. quantum/cli/server_process.py +159 -0
  19. quantum/cli/utils.py +334 -0
  20. quantum/compiler/__init__.py +30 -0
  21. quantum/compiler/base_generator.py +367 -0
  22. quantum/compiler/cli.py +295 -0
  23. quantum/compiler/expression_transformer.py +444 -0
  24. quantum/compiler/javascript/__init__.py +10 -0
  25. quantum/compiler/javascript/generator.py +659 -0
  26. quantum/compiler/optimizer.py +270 -0
  27. quantum/compiler/python/__init__.py +10 -0
  28. quantum/compiler/python/generator.py +883 -0
  29. quantum/compiler/python/runtime.py +863 -0
  30. quantum/compiler/transpiler.py +330 -0
  31. quantum/core/__init__.py +3 -0
  32. quantum/core/ast_nodes.py +2611 -0
  33. quantum/core/expression_diagnostics.py +87 -0
  34. quantum/core/expression_stdlib.py +148 -0
  35. quantum/core/expressions.py +591 -0
  36. quantum/core/features/agents/src/__init__.py +30 -0
  37. quantum/core/features/agents/src/ast_node.py +540 -0
  38. quantum/core/features/conditionals/src/__init__.py +8 -0
  39. quantum/core/features/conditionals/src/ast_node.py +68 -0
  40. quantum/core/features/data_fetching/src/__init__.py +21 -0
  41. quantum/core/features/data_fetching/src/ast_node.py +312 -0
  42. quantum/core/features/data_fetching/src/desktop_adapter.py +351 -0
  43. quantum/core/features/data_fetching/src/html_adapter.py +474 -0
  44. quantum/core/features/data_fetching/src/parser.py +225 -0
  45. quantum/core/features/data_import/src/__init__.py +0 -0
  46. quantum/core/features/data_import/src/ast_node.py +291 -0
  47. quantum/core/features/data_import/src/runtime.py +538 -0
  48. quantum/core/features/dump/src/__init__.py +12 -0
  49. quantum/core/features/dump/src/ast_node.py +106 -0
  50. quantum/core/features/dump/src/parser.py +61 -0
  51. quantum/core/features/dump/src/runtime.py +246 -0
  52. quantum/core/features/functions/src/__init__.py +8 -0
  53. quantum/core/features/functions/src/ast_node.py +149 -0
  54. quantum/core/features/game_engine_2d/src/__init__.py +19 -0
  55. quantum/core/features/game_engine_2d/src/ast_nodes.py +1719 -0
  56. quantum/core/features/game_engine_2d/src/parser.py +983 -0
  57. quantum/core/features/invocation/src/__init__.py +0 -0
  58. quantum/core/features/invocation/src/ast_node.py +146 -0
  59. quantum/core/features/invocation/src/runtime.py +327 -0
  60. quantum/core/features/knowledge_base/src/__init__.py +6 -0
  61. quantum/core/features/knowledge_base/src/ast_node.py +113 -0
  62. quantum/core/features/knowledge_base/src/parser.py +82 -0
  63. quantum/core/features/logging/src/__init__.py +12 -0
  64. quantum/core/features/logging/src/ast_node.py +111 -0
  65. quantum/core/features/logging/src/parser.py +50 -0
  66. quantum/core/features/logging/src/runtime.py +190 -0
  67. quantum/core/features/loops/src/__init__.py +8 -0
  68. quantum/core/features/loops/src/ast_node.py +60 -0
  69. quantum/core/features/query/src/__init__.py +0 -0
  70. quantum/core/features/query/src/database_service.py +322 -0
  71. quantum/core/features/query/src/query_validators.py +20 -0
  72. quantum/core/features/state_management/src/__init__.py +11 -0
  73. quantum/core/features/state_management/src/ast_node.py +228 -0
  74. quantum/core/features/terminal_engine/src/__init__.py +21 -0
  75. quantum/core/features/terminal_engine/src/ast_nodes.py +560 -0
  76. quantum/core/features/terminal_engine/src/parser.py +361 -0
  77. quantum/core/features/testing_engine/src/__init__.py +41 -0
  78. quantum/core/features/testing_engine/src/ast_nodes.py +1212 -0
  79. quantum/core/features/testing_engine/src/parser.py +604 -0
  80. quantum/core/features/theming/src/__init__.py +48 -0
  81. quantum/core/features/theming/src/ast_node.py +137 -0
  82. quantum/core/features/theming/src/presets.py +405 -0
  83. quantum/core/features/ui_engine/src/__init__.py +20 -0
  84. quantum/core/features/ui_engine/src/ast_nodes.py +1854 -0
  85. quantum/core/features/ui_engine/src/parser.py +1106 -0
  86. quantum/core/features/websocket/src/__init__.py +24 -0
  87. quantum/core/features/websocket/src/ast_node.py +247 -0
  88. quantum/core/html_compat.py +299 -0
  89. quantum/core/parser.py +1235 -0
  90. quantum/core/parser_registry.py +213 -0
  91. quantum/core/parsers/__init__.py +76 -0
  92. quantum/core/parsers/ai/__init__.py +12 -0
  93. quantum/core/parsers/ai/agent_parser.py +106 -0
  94. quantum/core/parsers/ai/knowledge_parser.py +86 -0
  95. quantum/core/parsers/ai/llm_parser.py +78 -0
  96. quantum/core/parsers/ai/team_parser.py +88 -0
  97. quantum/core/parsers/base.py +322 -0
  98. quantum/core/parsers/composition/__init__.py +10 -0
  99. quantum/core/parsers/composition/import_parser.py +50 -0
  100. quantum/core/parsers/composition/slot_parser.py +48 -0
  101. quantum/core/parsers/control_flow/__init__.py +11 -0
  102. quantum/core/parsers/control_flow/if_parser.py +68 -0
  103. quantum/core/parsers/control_flow/loop_parser.py +105 -0
  104. quantum/core/parsers/control_flow/set_parser.py +89 -0
  105. quantum/core/parsers/data/__init__.py +12 -0
  106. quantum/core/parsers/data/data_parser.py +217 -0
  107. quantum/core/parsers/data/invoke_parser.py +116 -0
  108. quantum/core/parsers/data/query_parser.py +188 -0
  109. quantum/core/parsers/data/transaction_parser.py +77 -0
  110. quantum/core/parsers/events/__init__.py +9 -0
  111. quantum/core/parsers/events/dispatch_event_parser.py +44 -0
  112. quantum/core/parsers/forms/__init__.py +11 -0
  113. quantum/core/parsers/forms/action_parser.py +54 -0
  114. quantum/core/parsers/forms/flash_parser.py +34 -0
  115. quantum/core/parsers/forms/redirect_parser.py +33 -0
  116. quantum/core/parsers/functions/__init__.py +11 -0
  117. quantum/core/parsers/functions/function_parser.py +137 -0
  118. quantum/core/parsers/functions/param_parser.py +66 -0
  119. quantum/core/parsers/functions/return_parser.py +31 -0
  120. quantum/core/parsers/html/__init__.py +10 -0
  121. quantum/core/parsers/html/component_call_parser.py +130 -0
  122. quantum/core/parsers/html/html_parser.py +115 -0
  123. quantum/core/parsers/jobs/__init__.py +11 -0
  124. quantum/core/parsers/jobs/job_parser.py +71 -0
  125. quantum/core/parsers/jobs/schedule_parser.py +62 -0
  126. quantum/core/parsers/jobs/thread_parser.py +57 -0
  127. quantum/core/parsers/messaging/__init__.py +17 -0
  128. quantum/core/parsers/messaging/message_ack_parser.py +30 -0
  129. quantum/core/parsers/messaging/message_nack_parser.py +30 -0
  130. quantum/core/parsers/messaging/message_parser.py +114 -0
  131. quantum/core/parsers/messaging/queue_parser.py +61 -0
  132. quantum/core/parsers/messaging/websocket_parser.py +121 -0
  133. quantum/core/parsers/persistence/__init__.py +9 -0
  134. quantum/core/parsers/persistence/persist_parser.py +64 -0
  135. quantum/core/parsers/routing/__init__.py +9 -0
  136. quantum/core/parsers/routing/route_parser.py +41 -0
  137. quantum/core/parsers/scripting/__init__.py +12 -0
  138. quantum/core/parsers/scripting/pyclass_parser.py +62 -0
  139. quantum/core/parsers/scripting/pydecorator_parser.py +68 -0
  140. quantum/core/parsers/scripting/pyimport_parser.py +52 -0
  141. quantum/core/parsers/scripting/python_parser.py +49 -0
  142. quantum/core/parsers/services/__init__.py +12 -0
  143. quantum/core/parsers/services/dump_parser.py +52 -0
  144. quantum/core/parsers/services/file_parser.py +48 -0
  145. quantum/core/parsers/services/log_parser.py +46 -0
  146. quantum/core/parsers/services/mail_parser.py +65 -0
  147. quantum/core/tiers.py +82 -0
  148. quantum/packages/__init__.py +28 -0
  149. quantum/packages/manager.py +413 -0
  150. quantum/packages/manifest.py +351 -0
  151. quantum/packages/registry.py +399 -0
  152. quantum/packages/resolver.py +336 -0
  153. quantum/plugins/__init__.py +33 -0
  154. quantum/plugins/hooks.py +329 -0
  155. quantum/plugins/loader.py +479 -0
  156. quantum/plugins/manifest.py +336 -0
  157. quantum/plugins/registry.py +371 -0
  158. quantum/runtime/__init__.py +28 -0
  159. quantum/runtime/action_handler.py +443 -0
  160. quantum/runtime/adapters/__init__.py +88 -0
  161. quantum/runtime/adapters/memory_adapter.py +690 -0
  162. quantum/runtime/adapters/rabbitmq_adapter.py +715 -0
  163. quantum/runtime/adapters/redis_adapter.py +582 -0
  164. quantum/runtime/adapters/sqlite_adapter.py +414 -0
  165. quantum/runtime/agent_service.py +1133 -0
  166. quantum/runtime/api_server.py +86 -0
  167. quantum/runtime/ast_cache.py +506 -0
  168. quantum/runtime/auth_service.py +267 -0
  169. quantum/runtime/component.py +990 -0
  170. quantum/runtime/component_composer.py +319 -0
  171. quantum/runtime/component_resolver.py +174 -0
  172. quantum/runtime/database_service.py +598 -0
  173. quantum/runtime/email_service.py +162 -0
  174. quantum/runtime/error_handler.py +295 -0
  175. quantum/runtime/execution_context.py +286 -0
  176. quantum/runtime/executor_registry.py +171 -0
  177. quantum/runtime/executors/__init__.py +71 -0
  178. quantum/runtime/executors/ai/__init__.py +12 -0
  179. quantum/runtime/executors/ai/agent_executor.py +217 -0
  180. quantum/runtime/executors/ai/knowledge_executor.py +114 -0
  181. quantum/runtime/executors/ai/llm_executor.py +153 -0
  182. quantum/runtime/executors/ai/team_executor.py +171 -0
  183. quantum/runtime/executors/base.py +262 -0
  184. quantum/runtime/executors/control_flow/__init__.py +11 -0
  185. quantum/runtime/executors/control_flow/if_executor.py +93 -0
  186. quantum/runtime/executors/control_flow/loop_executor.py +307 -0
  187. quantum/runtime/executors/control_flow/set_executor.py +412 -0
  188. quantum/runtime/executors/data/__init__.py +12 -0
  189. quantum/runtime/executors/data/data_executor.py +145 -0
  190. quantum/runtime/executors/data/invoke_executor.py +176 -0
  191. quantum/runtime/executors/data/query_executor.py +256 -0
  192. quantum/runtime/executors/data/transaction_executor.py +91 -0
  193. quantum/runtime/executors/jobs/__init__.py +11 -0
  194. quantum/runtime/executors/jobs/job_executor.py +190 -0
  195. quantum/runtime/executors/jobs/schedule_executor.py +132 -0
  196. quantum/runtime/executors/jobs/thread_executor.py +127 -0
  197. quantum/runtime/executors/messaging/__init__.py +17 -0
  198. quantum/runtime/executors/messaging/message_ack_executor.py +51 -0
  199. quantum/runtime/executors/messaging/message_executor.py +174 -0
  200. quantum/runtime/executors/messaging/queue_executor.py +103 -0
  201. quantum/runtime/executors/messaging/websocket_executor.py +197 -0
  202. quantum/runtime/executors/scripting/__init__.py +11 -0
  203. quantum/runtime/executors/scripting/pyclass_executor.py +90 -0
  204. quantum/runtime/executors/scripting/pyimport_executor.py +81 -0
  205. quantum/runtime/executors/scripting/python_executor.py +249 -0
  206. quantum/runtime/executors/services/__init__.py +12 -0
  207. quantum/runtime/executors/services/dump_executor.py +72 -0
  208. quantum/runtime/executors/services/file_executor.py +89 -0
  209. quantum/runtime/executors/services/log_executor.py +77 -0
  210. quantum/runtime/executors/services/mail_executor.py +81 -0
  211. quantum/runtime/expression_cache.py +498 -0
  212. quantum/runtime/file_upload_service.py +326 -0
  213. quantum/runtime/function_registry.py +118 -0
  214. quantum/runtime/game_builder.py +166 -0
  215. quantum/runtime/game_code_generator.py +2371 -0
  216. quantum/runtime/game_templates.py +2006 -0
  217. quantum/runtime/godot_code_generator.py +4681 -0
  218. quantum/runtime/godot_templates.py +1449 -0
  219. quantum/runtime/job_executor.py +1599 -0
  220. quantum/runtime/knowledge_service.py +500 -0
  221. quantum/runtime/llm_cache.py +100 -0
  222. quantum/runtime/llm_providers.py +704 -0
  223. quantum/runtime/llm_service.py +287 -0
  224. quantum/runtime/logging_setup.py +140 -0
  225. quantum/runtime/message_broker.py +364 -0
  226. quantum/runtime/message_queue_service.py +571 -0
  227. quantum/runtime/param_validation.py +184 -0
  228. quantum/runtime/pypy_compat.py +315 -0
  229. quantum/runtime/python_bridge.py +698 -0
  230. quantum/runtime/query_validators.py +304 -0
  231. quantum/runtime/renderer.py +733 -0
  232. quantum/runtime/service_container.py +444 -0
  233. quantum/runtime/terminal_builder.py +76 -0
  234. quantum/runtime/terminal_code_generator.py +607 -0
  235. quantum/runtime/terminal_templates.py +243 -0
  236. quantum/runtime/testing_builder.py +77 -0
  237. quantum/runtime/testing_code_generator.py +833 -0
  238. quantum/runtime/testing_templates.py +85 -0
  239. quantum/runtime/ui_builder.py +188 -0
  240. quantum/runtime/ui_desktop_adapter.py +1730 -0
  241. quantum/runtime/ui_desktop_templates.py +307 -0
  242. quantum/runtime/ui_html_adapter.py +2691 -0
  243. quantum/runtime/ui_html_templates.py +2297 -0
  244. quantum/runtime/ui_mobile_adapter.py +1832 -0
  245. quantum/runtime/ui_mobile_templates.py +1003 -0
  246. quantum/runtime/ui_textual_adapter.py +1866 -0
  247. quantum/runtime/ui_textual_templates.py +45 -0
  248. quantum/runtime/ui_tokens.py +465 -0
  249. quantum/runtime/ui_validator.py +365 -0
  250. quantum/runtime/validators.py +256 -0
  251. quantum/runtime/web_server.py +1766 -0
  252. quantum/runtime/websocket_adapter.py +501 -0
  253. quantum/runtime/websocket_service.py +585 -0
  254. quantum/runtime/websocket_transport.py +289 -0
  255. quantum/runtime/wsgi.py +101 -0
  256. quantum/utils/__init__.py +1 -0
  257. quantum_framework-0.9.0.dist-info/METADATA +244 -0
  258. quantum_framework-0.9.0.dist-info/RECORD +262 -0
  259. quantum_framework-0.9.0.dist-info/WHEEL +5 -0
  260. quantum_framework-0.9.0.dist-info/entry_points.txt +2 -0
  261. quantum_framework-0.9.0.dist-info/licenses/LICENSE +21 -0
  262. quantum_framework-0.9.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,364 @@
1
+ """
2
+ Message Queue System - Message Broker Abstraction
3
+
4
+ Provides a unified interface for message queue operations across
5
+ different backends (In-Memory, Redis, RabbitMQ).
6
+
7
+ Supports:
8
+ - Publish/Subscribe (topics)
9
+ - Direct queue messaging
10
+ - Request/Reply pattern
11
+ - Message acknowledgment
12
+ - Dead letter queues
13
+ """
14
+
15
+ from abc import ABC, abstractmethod
16
+ from dataclasses import dataclass, field
17
+ from typing import Dict, Any, Optional, Callable, List
18
+ import uuid
19
+ import time
20
+ import json
21
+
22
+
23
+ class MessageBrokerError(Exception):
24
+ """Base exception for message broker errors"""
25
+ pass
26
+
27
+
28
+ class ConnectionError(MessageBrokerError):
29
+ """Raised when connection to broker fails"""
30
+ pass
31
+
32
+
33
+ class PublishError(MessageBrokerError):
34
+ """Raised when message publish fails"""
35
+ pass
36
+
37
+
38
+ class SubscribeError(MessageBrokerError):
39
+ """Raised when subscription fails"""
40
+ pass
41
+
42
+
43
+ class QueueError(MessageBrokerError):
44
+ """Raised when queue operation fails"""
45
+ pass
46
+
47
+
48
+ @dataclass
49
+ class Message:
50
+ """
51
+ Represents a message in the queue system.
52
+
53
+ Attributes:
54
+ id: Unique message identifier
55
+ topic: Topic name (for pub/sub)
56
+ queue: Queue name (for direct messaging)
57
+ body: Message payload (can be any JSON-serializable type)
58
+ headers: Custom message headers
59
+ timestamp: Message creation timestamp
60
+ reply_to: Queue for reply (used in request/reply pattern)
61
+ correlation_id: ID linking request and response
62
+ """
63
+ id: str = field(default_factory=lambda: str(uuid.uuid4()))
64
+ topic: Optional[str] = None
65
+ queue: Optional[str] = None
66
+ body: Any = None
67
+ headers: Dict[str, str] = field(default_factory=dict)
68
+ timestamp: float = field(default_factory=time.time)
69
+ reply_to: Optional[str] = None
70
+ correlation_id: Optional[str] = None
71
+
72
+ def to_dict(self) -> Dict[str, Any]:
73
+ """Serialize message to dictionary"""
74
+ return {
75
+ 'id': self.id,
76
+ 'topic': self.topic,
77
+ 'queue': self.queue,
78
+ 'body': self.body,
79
+ 'headers': self.headers,
80
+ 'timestamp': self.timestamp,
81
+ 'reply_to': self.reply_to,
82
+ 'correlation_id': self.correlation_id
83
+ }
84
+
85
+ @classmethod
86
+ def from_dict(cls, data: Dict[str, Any]) -> 'Message':
87
+ """Deserialize message from dictionary"""
88
+ return cls(
89
+ id=data.get('id', str(uuid.uuid4())),
90
+ topic=data.get('topic'),
91
+ queue=data.get('queue'),
92
+ body=data.get('body'),
93
+ headers=data.get('headers', {}),
94
+ timestamp=data.get('timestamp', time.time()),
95
+ reply_to=data.get('reply_to'),
96
+ correlation_id=data.get('correlation_id')
97
+ )
98
+
99
+ def to_json(self) -> str:
100
+ """Serialize message to JSON string"""
101
+ return json.dumps(self.to_dict())
102
+
103
+ @classmethod
104
+ def from_json(cls, json_str: str) -> 'Message':
105
+ """Deserialize message from JSON string"""
106
+ return cls.from_dict(json.loads(json_str))
107
+
108
+
109
+ @dataclass
110
+ class QueueInfo:
111
+ """
112
+ Information about a queue.
113
+
114
+ Attributes:
115
+ name: Queue name
116
+ message_count: Number of messages in queue
117
+ consumer_count: Number of active consumers
118
+ durable: Whether queue survives broker restart
119
+ auto_delete: Whether queue is deleted when last consumer disconnects
120
+ """
121
+ name: str
122
+ message_count: int = 0
123
+ consumer_count: int = 0
124
+ durable: bool = True
125
+ auto_delete: bool = False
126
+
127
+
128
+ # Type alias for message handler callbacks
129
+ MessageHandler = Callable[[Message], None]
130
+
131
+
132
+ class MessageBroker(ABC):
133
+ """
134
+ Abstract base class for message broker implementations.
135
+
136
+ Provides a unified interface for:
137
+ - Connection management
138
+ - Publishing to topics
139
+ - Sending to queues
140
+ - Subscribing to topics/queues
141
+ - Message acknowledgment
142
+ - Queue management
143
+ """
144
+
145
+ @abstractmethod
146
+ def connect(self, config: Dict[str, Any]) -> None:
147
+ """
148
+ Connect to the message broker.
149
+
150
+ Args:
151
+ config: Connection configuration (host, port, credentials, etc.)
152
+
153
+ Raises:
154
+ ConnectionError: If connection fails
155
+ """
156
+ pass
157
+
158
+ @abstractmethod
159
+ def disconnect(self) -> None:
160
+ """
161
+ Disconnect from the message broker.
162
+
163
+ Should clean up all resources, close connections, and
164
+ cancel any active subscriptions.
165
+ """
166
+ pass
167
+
168
+ @abstractmethod
169
+ def is_connected(self) -> bool:
170
+ """
171
+ Check if connected to the broker.
172
+
173
+ Returns:
174
+ True if connected, False otherwise
175
+ """
176
+ pass
177
+
178
+ @abstractmethod
179
+ def publish(self, topic: str, message: Message) -> None:
180
+ """
181
+ Publish a message to a topic (pub/sub pattern).
182
+
183
+ All subscribers to the topic will receive the message.
184
+
185
+ Args:
186
+ topic: Topic name (supports wildcards in some implementations)
187
+ message: Message to publish
188
+
189
+ Raises:
190
+ PublishError: If publish fails
191
+ """
192
+ pass
193
+
194
+ @abstractmethod
195
+ def send(self, queue: str, message: Message) -> None:
196
+ """
197
+ Send a message directly to a queue (point-to-point).
198
+
199
+ Only one consumer will receive the message.
200
+
201
+ Args:
202
+ queue: Queue name
203
+ message: Message to send
204
+
205
+ Raises:
206
+ PublishError: If send fails
207
+ """
208
+ pass
209
+
210
+ @abstractmethod
211
+ def request(self, queue: str, message: Message, timeout: int = 5000) -> Message:
212
+ """
213
+ Send a request and wait for a reply (request/reply pattern).
214
+
215
+ Args:
216
+ queue: Queue to send request to
217
+ message: Request message
218
+ timeout: Timeout in milliseconds
219
+
220
+ Returns:
221
+ Response message
222
+
223
+ Raises:
224
+ PublishError: If request fails
225
+ TimeoutError: If no response within timeout
226
+ """
227
+ pass
228
+
229
+ @abstractmethod
230
+ def subscribe(self, topic: str, handler: MessageHandler) -> str:
231
+ """
232
+ Subscribe to a topic.
233
+
234
+ Args:
235
+ topic: Topic pattern to subscribe to
236
+ handler: Callback function for received messages
237
+
238
+ Returns:
239
+ Subscription ID (for unsubscribing)
240
+
241
+ Raises:
242
+ SubscribeError: If subscription fails
243
+ """
244
+ pass
245
+
246
+ @abstractmethod
247
+ def consume(self, queue: str, handler: MessageHandler, prefetch: int = 1) -> str:
248
+ """
249
+ Start consuming messages from a queue.
250
+
251
+ Args:
252
+ queue: Queue name
253
+ handler: Callback function for received messages
254
+ prefetch: Number of messages to prefetch
255
+
256
+ Returns:
257
+ Consumer ID (for stopping consumption)
258
+
259
+ Raises:
260
+ SubscribeError: If consumption setup fails
261
+ """
262
+ pass
263
+
264
+ @abstractmethod
265
+ def unsubscribe(self, subscription_id: str) -> None:
266
+ """
267
+ Unsubscribe from a topic or stop consuming from a queue.
268
+
269
+ Args:
270
+ subscription_id: ID returned from subscribe() or consume()
271
+ """
272
+ pass
273
+
274
+ @abstractmethod
275
+ def ack(self, message: Message) -> None:
276
+ """
277
+ Acknowledge successful message processing.
278
+
279
+ Args:
280
+ message: Message to acknowledge
281
+ """
282
+ pass
283
+
284
+ @abstractmethod
285
+ def nack(self, message: Message, requeue: bool = True) -> None:
286
+ """
287
+ Negative acknowledge - reject a message.
288
+
289
+ Args:
290
+ message: Message to reject
291
+ requeue: If True, requeue the message; if False, discard or send to DLQ
292
+ """
293
+ pass
294
+
295
+ @abstractmethod
296
+ def declare_queue(
297
+ self,
298
+ name: str,
299
+ durable: bool = True,
300
+ exclusive: bool = False,
301
+ auto_delete: bool = False,
302
+ dead_letter_queue: Optional[str] = None,
303
+ ttl: Optional[int] = None
304
+ ) -> None:
305
+ """
306
+ Declare a queue (create if not exists).
307
+
308
+ Args:
309
+ name: Queue name
310
+ durable: Survive broker restart
311
+ exclusive: Only this connection can access
312
+ auto_delete: Delete when last consumer disconnects
313
+ dead_letter_queue: Queue for rejected/expired messages
314
+ ttl: Message TTL in milliseconds
315
+
316
+ Raises:
317
+ QueueError: If declaration fails
318
+ """
319
+ pass
320
+
321
+ @abstractmethod
322
+ def purge_queue(self, name: str) -> int:
323
+ """
324
+ Purge all messages from a queue.
325
+
326
+ Args:
327
+ name: Queue name
328
+
329
+ Returns:
330
+ Number of messages purged
331
+
332
+ Raises:
333
+ QueueError: If purge fails
334
+ """
335
+ pass
336
+
337
+ @abstractmethod
338
+ def delete_queue(self, name: str) -> None:
339
+ """
340
+ Delete a queue.
341
+
342
+ Args:
343
+ name: Queue name
344
+
345
+ Raises:
346
+ QueueError: If deletion fails
347
+ """
348
+ pass
349
+
350
+ @abstractmethod
351
+ def get_queue_info(self, name: str) -> QueueInfo:
352
+ """
353
+ Get information about a queue.
354
+
355
+ Args:
356
+ name: Queue name
357
+
358
+ Returns:
359
+ QueueInfo with queue statistics
360
+
361
+ Raises:
362
+ QueueError: If queue doesn't exist or info retrieval fails
363
+ """
364
+ pass