jararaca 0.3.9__tar.gz → 0.3.11__tar.gz

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.

Potentially problematic release.


This version of jararaca might be problematic. Click here for more details.

Files changed (90) hide show
  1. {jararaca-0.3.9 → jararaca-0.3.11}/PKG-INFO +2 -1
  2. {jararaca-0.3.9 → jararaca-0.3.11}/docs/index.md +1 -17
  3. {jararaca-0.3.9 → jararaca-0.3.11}/docs/messagebus.md +2 -0
  4. jararaca-0.3.11/docs/retry.md +79 -0
  5. {jararaca-0.3.9 → jararaca-0.3.11}/pyproject.toml +6 -1
  6. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/__init__.py +76 -5
  7. jararaca-0.3.11/src/jararaca/cli.py +837 -0
  8. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/core/uow.py +17 -12
  9. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/messagebus/decorators.py +33 -30
  10. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/messagebus/interceptors/aiopika_publisher_interceptor.py +30 -2
  11. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +7 -3
  12. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/messagebus/publisher.py +14 -6
  13. jararaca-0.3.11/src/jararaca/messagebus/worker.py +1416 -0
  14. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/microservice.py +137 -34
  15. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/observability/decorators.py +7 -3
  16. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/observability/interceptor.py +4 -2
  17. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/observability/providers/otel.py +14 -10
  18. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/persistence/base.py +2 -1
  19. jararaca-0.3.11/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +215 -0
  20. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/persistence/utilities.py +32 -20
  21. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/presentation/decorators.py +96 -10
  22. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/presentation/server.py +31 -4
  23. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/presentation/websocket/context.py +30 -4
  24. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/presentation/websocket/types.py +2 -2
  25. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/presentation/websocket/websocket_interceptor.py +28 -4
  26. jararaca-0.3.11/src/jararaca/reflect/controller_inspect.py +75 -0
  27. {jararaca-0.3.9/src/jararaca/tools → jararaca-0.3.11/src/jararaca/reflect}/metadata.py +25 -5
  28. jararaca-0.3.9/src/jararaca/scheduler/scheduler_v2.py → jararaca-0.3.11/src/jararaca/scheduler/beat_worker.py +49 -53
  29. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/scheduler/decorators.py +55 -20
  30. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/tools/app_config/interceptor.py +4 -2
  31. jararaca-0.3.11/src/jararaca/utils/__init__.py +0 -0
  32. jararaca-0.3.11/src/jararaca/utils/rabbitmq_utils.py +346 -0
  33. jararaca-0.3.11/src/jararaca/utils/retry.py +141 -0
  34. jararaca-0.3.9/src/jararaca/cli.py +0 -493
  35. jararaca-0.3.9/src/jararaca/messagebus/worker.py +0 -402
  36. jararaca-0.3.9/src/jararaca/messagebus/worker_v2.py +0 -617
  37. jararaca-0.3.9/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -64
  38. jararaca-0.3.9/src/jararaca/scheduler/scheduler.py +0 -161
  39. jararaca-0.3.9/src/jararaca/utils/rabbitmq_utils.py +0 -92
  40. {jararaca-0.3.9 → jararaca-0.3.11}/LICENSE +0 -0
  41. {jararaca-0.3.9 → jararaca-0.3.11}/README.md +0 -0
  42. {jararaca-0.3.9 → jararaca-0.3.11}/docs/CNAME +0 -0
  43. {jararaca-0.3.9 → jararaca-0.3.11}/docs/architecture.md +0 -0
  44. {jararaca-0.3.9 → jararaca-0.3.11}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
  45. {jararaca-0.3.9 → jararaca-0.3.11}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
  46. {jararaca-0.3.9 → jararaca-0.3.11}/docs/assets/tracing_example.png +0 -0
  47. {jararaca-0.3.9 → jararaca-0.3.11}/docs/scheduler.md +0 -0
  48. {jararaca-0.3.9 → jararaca-0.3.11}/docs/stylesheets/custom.css +0 -0
  49. {jararaca-0.3.9 → jararaca-0.3.11}/docs/websocket.md +0 -0
  50. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/__main__.py +0 -0
  51. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/broker_backend/__init__.py +0 -0
  52. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/broker_backend/mapper.py +0 -0
  53. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/broker_backend/redis_broker_backend.py +0 -0
  54. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/common/__init__.py +0 -0
  55. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/core/__init__.py +0 -0
  56. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/core/providers.py +0 -0
  57. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/di.py +0 -0
  58. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/files/entity.py.mako +0 -0
  59. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/lifecycle.py +0 -0
  60. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/messagebus/__init__.py +0 -0
  61. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/messagebus/bus_message_controller.py +0 -0
  62. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/messagebus/consumers/__init__.py +0 -0
  63. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
  64. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/messagebus/message.py +0 -0
  65. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/observability/providers/__init__.py +0 -0
  66. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/persistence/exports.py +0 -0
  67. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/persistence/interceptors/__init__.py +0 -0
  68. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/persistence/session.py +0 -0
  69. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/persistence/sort_filter.py +0 -0
  70. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/presentation/__init__.py +0 -0
  71. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/presentation/hooks.py +0 -0
  72. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/presentation/http_microservice.py +0 -0
  73. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/presentation/websocket/__init__.py +0 -0
  74. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/presentation/websocket/base_types.py +0 -0
  75. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/presentation/websocket/decorators.py +0 -0
  76. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/presentation/websocket/redis.py +0 -0
  77. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/py.typed +0 -0
  78. {jararaca-0.3.9/src/jararaca/rpc → jararaca-0.3.11/src/jararaca/reflect}/__init__.py +0 -0
  79. {jararaca-0.3.9/src/jararaca/rpc/http → jararaca-0.3.11/src/jararaca/rpc}/__init__.py +0 -0
  80. {jararaca-0.3.9/src/jararaca/rpc/http/backends → jararaca-0.3.11/src/jararaca/rpc/http}/__init__.py +0 -0
  81. {jararaca-0.3.9/src/jararaca/scheduler → jararaca-0.3.11/src/jararaca/rpc/http/backends}/__init__.py +0 -0
  82. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/rpc/http/backends/httpx.py +0 -0
  83. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/rpc/http/backends/otel.py +0 -0
  84. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/rpc/http/decorators.py +0 -0
  85. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/rpc/http/httpx.py +0 -0
  86. {jararaca-0.3.9/src/jararaca/tools/app_config → jararaca-0.3.11/src/jararaca/scheduler}/__init__.py +0 -0
  87. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/scheduler/types.py +0 -0
  88. {jararaca-0.3.9/src/jararaca/utils → jararaca-0.3.11/src/jararaca/tools/app_config}/__init__.py +0 -0
  89. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/tools/app_config/decorators.py +0 -0
  90. {jararaca-0.3.9 → jararaca-0.3.11}/src/jararaca/tools/typescript/interface_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: jararaca
3
- Version: 0.3.9
3
+ Version: 0.3.11
4
4
  Summary: A simple and fast API framework for Python
5
5
  Author: Lucas S
6
6
  Author-email: me@luscasleo.dev
@@ -16,6 +16,7 @@ Provides-Extra: watch
16
16
  Requires-Dist: aio-pika (>=9.4.3,<10.0.0)
17
17
  Requires-Dist: croniter (>=3.0.3,<4.0.0)
18
18
  Requires-Dist: fastapi (>=0.113.0,<0.114.0)
19
+ Requires-Dist: frozendict (>=2.4.6,<3.0.0)
19
20
  Requires-Dist: mako (>=1.3.5,<2.0.0)
20
21
  Requires-Dist: opentelemetry-api (>=1.27.0,<2.0.0) ; extra == "opentelemetry"
21
22
  Requires-Dist: opentelemetry-distro (>=0.49b2,<0.50) ; extra == "opentelemetry"
@@ -33,25 +33,9 @@ Starts a message bus worker that processes asynchronous messages from a message
33
33
 
34
34
  **Options:**
35
35
 
36
- - `--url`: AMQP URL (default: "amqp://guest:guest@localhost/")
37
- - `--username`: AMQP username (optional)
38
- - `--password`: AMQP password (optional)
39
- - `--exchange`: Exchange name (default: "jararaca_ex")
40
- - `--queue`: Queue name (default: "jararaca_q")
41
- - `--prefetch-count`: Number of messages to prefetch (default: 1)
42
-
43
- ### `worker_v2` - Enhanced Message Bus Worker
44
-
45
- ```bash
46
- jararaca worker_v2 APP_PATH [OPTIONS]
47
- ```
48
-
49
- Starts an enhanced version of the message bus worker with improved backend support.
50
-
51
- **Options:**
52
-
53
36
  - `--broker-url`: The URL for the message broker (required)
54
37
  - `--backend-url`: The URL for the message broker backend (required)
38
+ - `--handlers`: Comma-separated list of handler names to listen to (optional)
55
39
 
56
40
  ### `server` - HTTP Server
57
41
 
@@ -29,6 +29,7 @@ graph TB
29
29
  ack[ack]
30
30
  nack[nack]
31
31
  retry[retry]
32
+ retry_later[retry_later]
32
33
  reject[reject]
33
34
  end
34
35
 
@@ -42,6 +43,7 @@ graph TB
42
43
  BusMessageController --> nack
43
44
  BusMessageController --> reject
44
45
  BusMessageController --> retry
46
+ BusMessageController --> retry_later
45
47
  ```
46
48
 
47
49
  ## Message Structure
@@ -0,0 +1,79 @@
1
+ # Retry Mechanism with Exponential Backoff
2
+
3
+ Jararaca implements a robust retry mechanism with exponential backoff for handling transient failures in RabbitMQ connections and operations. This mechanism helps the system gracefully handle temporary network issues, broker unavailability, and other transient failures.
4
+
5
+ ## Core Components
6
+
7
+ The retry system consists of these main components:
8
+
9
+ 1. `RetryConfig` - Configuration class for customizing retry behavior
10
+ 2. `retry_with_backoff` - Utility function to execute operations with retry
11
+ 3. `with_retry` - Decorator for applying retry logic to functions
12
+
13
+ ## Retry Configuration
14
+
15
+ The `RetryConfig` class allows customization of various retry parameters:
16
+
17
+ ```python
18
+ class RetryConfig:
19
+ def __init__(
20
+ self,
21
+ max_retries: int = 5, # Maximum number of retry attempts
22
+ initial_delay: float = 1.0, # Initial delay between retries (seconds)
23
+ max_delay: float = 60.0, # Maximum delay between retries (seconds)
24
+ backoff_factor: float = 2.0, # Multiplier for delay after each retry
25
+ jitter: bool = True, # Add randomness to delay to prevent thundering herd
26
+ ):
27
+ ...
28
+ ```
29
+
30
+ ## Integration with MessageBus Worker
31
+
32
+ The RabbitMQ consumer in the message bus system uses the retry mechanism in several key areas:
33
+
34
+ 1. **Connection Establishment**: When establishing a connection to RabbitMQ, the system will automatically retry with increasing backoff periods if the connection fails.
35
+
36
+ 2. **Channel Creation**: When creating channels for publishing or consuming messages, failures trigger the retry mechanism.
37
+
38
+ 3. **Consumer Setup**: Setting up message consumers uses retry logic to handle temporary failures.
39
+
40
+ ## URL Configuration Parameters
41
+
42
+ Retry behavior can be customized through URL parameters when configuring the RabbitMQ connection:
43
+
44
+ | Parameter | Description | Default |
45
+ |-----------|-------------|---------|
46
+ | `connection_retry_max` | Maximum number of connection retry attempts | 5 |
47
+ | `connection_retry_delay` | Initial delay between connection retries (seconds) | 1.0 |
48
+ | `connection_retry_max_delay` | Maximum delay between connection retries (seconds) | 60.0 |
49
+ | `connection_retry_backoff` | Multiplier for delay after each connection retry | 2.0 |
50
+ | `consumer_retry_max` | Maximum number of consumer setup retry attempts | 3 |
51
+ | `consumer_retry_delay` | Initial delay between consumer setup retries (seconds) | 0.5 |
52
+ | `consumer_retry_max_delay` | Maximum delay between consumer setup retries (seconds) | 5.0 |
53
+ | `consumer_retry_backoff` | Multiplier for delay after each consumer setup retry | 2.0 |
54
+
55
+ ## Example Usage
56
+
57
+ ```python
58
+ # Configure with custom retry settings in URL:
59
+ broker_url = "amqp://guest:guest@localhost:5672/?exchange=jararaca&prefetch_count=10&connection_retry_max=10&connection_retry_delay=2.0"
60
+
61
+ # Use custom retry configuration in code:
62
+ from jararaca.utils.retry import RetryConfig, retry_with_backoff
63
+
64
+ config = RetryConfig(max_retries=3, initial_delay=1.0, max_delay=30.0)
65
+
66
+ async def connect_with_retry():
67
+ return await retry_with_backoff(
68
+ establish_connection,
69
+ retry_config=config,
70
+ retry_exceptions=(ConnectionError, TimeoutError)
71
+ )
72
+ ```
73
+
74
+ ## Benefits
75
+
76
+ 1. **Resilience** - The system can recover automatically from transient failures
77
+ 2. **Reduced downtime** - Automatic reconnection minimizes service disruption
78
+ 3. **Configuration flexibility** - Retry behavior can be tailored to different environments
79
+ 4. **Smart backoff** - Exponential backoff with jitter prevents overloading services during recovery
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "jararaca"
3
- version = "0.3.9"
3
+ version = "0.3.11"
4
4
  description = "A simple and fast API framework for Python"
5
5
  authors = ["Lucas S <me@luscasleo.dev>"]
6
6
  readme = "README.md"
@@ -28,6 +28,7 @@ types-croniter = "^3.0.3.20240731"
28
28
  types-redis = "^4.6.0.20240903"
29
29
  mako = "^1.3.5"
30
30
  watchdog = { version = "^3.0.0", optional = true }
31
+ frozendict = "^2.4.6"
31
32
 
32
33
 
33
34
  [tool.poetry.extras]
@@ -78,3 +79,7 @@ strict = true
78
79
  # JARARACA CONFIG
79
80
  [tool.poetry.scripts]
80
81
  jararaca = "jararaca.cli:cli"
82
+
83
+ [[tool.mypy.overrides]]
84
+ module = "mako.*"
85
+ ignore_missing_imports = true
@@ -11,7 +11,7 @@ if TYPE_CHECKING:
11
11
  retry_later,
12
12
  use_bus_message_controller,
13
13
  )
14
- from jararaca.microservice import AppContext, AppInterceptor
14
+ from jararaca.microservice import AppContext, AppInterceptor, AppTransactionContext
15
15
  from jararaca.observability.interceptor import ObservabilityInterceptor
16
16
  from jararaca.observability.providers.otel import OtelObservabilityProvider
17
17
  from jararaca.persistence.sort_filter import (
@@ -32,6 +32,17 @@ if TYPE_CHECKING:
32
32
  raises_500_on,
33
33
  raises_http_exception_on,
34
34
  )
35
+ from jararaca.reflect.controller_inspect import (
36
+ ControllerMemberReflect,
37
+ ControllerReflect,
38
+ )
39
+ from jararaca.reflect.metadata import (
40
+ SetMetadata,
41
+ get_all_metadata,
42
+ get_metadata,
43
+ get_metadata_value,
44
+ provide_metadata,
45
+ )
35
46
  from jararaca.rpc.http.backends.httpx import HTTPXHttpRPCAsyncBackend
36
47
  from jararaca.rpc.http.backends.otel import TracedRequestMiddleware
37
48
  from jararaca.rpc.http.decorators import Body
@@ -53,6 +64,7 @@ if TYPE_CHECKING:
53
64
  RestClient,
54
65
  RouteHttpErrorHandler,
55
66
  RPCRequestNetworkError,
67
+ RPCUnhandleError,
56
68
  )
57
69
 
58
70
  from .core.providers import ProviderSpec, Token
@@ -67,13 +79,22 @@ if TYPE_CHECKING:
67
79
  )
68
80
  from .messagebus.message import Message, MessageOf
69
81
  from .messagebus.publisher import use_publisher
70
- from .messagebus.worker import MessageBusWorker
71
- from .microservice import Microservice, use_app_context, use_current_container
82
+ from .microservice import (
83
+ Microservice,
84
+ use_app_context,
85
+ use_app_transaction_context,
86
+ use_app_tx_ctx_data,
87
+ use_current_container,
88
+ )
72
89
  from .persistence.base import T_BASEMODEL, BaseEntity
73
90
  from .persistence.interceptors.aiosqa_interceptor import (
74
91
  AIOSQAConfig,
75
92
  AIOSqlAlchemySessionInterceptor,
93
+ providing_new_session,
94
+ providing_session,
95
+ providing_transaction,
76
96
  use_session,
97
+ use_transaction,
77
98
  )
78
99
  from .persistence.utilities import (
79
100
  CriteriaBasedAttributeQueryInjector,
@@ -118,6 +139,11 @@ if TYPE_CHECKING:
118
139
  from .tools.app_config.interceptor import AppConfigurationInterceptor
119
140
 
120
141
  __all__ = [
142
+ "SetMetadata",
143
+ "provide_metadata",
144
+ "get_metadata",
145
+ "get_all_metadata",
146
+ "get_metadata_value",
121
147
  "RedisMessageBrokerBackend",
122
148
  "FilterRuleApplier",
123
149
  "SortRuleApplier",
@@ -128,6 +154,7 @@ if TYPE_CHECKING:
128
154
  "retry",
129
155
  "retry_later",
130
156
  "RPCRequestNetworkError",
157
+ "RPCUnhandleError",
131
158
  "FILTER_SORT_ENTITY_ATTR_MAP",
132
159
  "FilterModel",
133
160
  "SortFilterRunner",
@@ -187,10 +214,14 @@ if TYPE_CHECKING:
187
214
  "AIOSqlAlchemySessionInterceptor",
188
215
  "AIOSQAConfig",
189
216
  "create_http_server",
190
- "MessageBusWorker",
191
217
  "Container",
192
218
  "WebSocketInterceptor",
193
219
  "use_session",
220
+ "use_transaction",
221
+ "providing_session",
222
+ "provide_session",
223
+ "providing_transaction",
224
+ "providing_new_session",
194
225
  "Post",
195
226
  "Get",
196
227
  "Patch",
@@ -212,7 +243,12 @@ if TYPE_CHECKING:
212
243
  "HttpRpcClientBuilder",
213
244
  "HTTPXHttpRPCAsyncBackend",
214
245
  "use_app_context",
246
+ "use_app_transaction_context",
247
+ "use_app_tx_ctx_data",
248
+ "AppTransactionContext",
215
249
  "AppContext",
250
+ "ControllerMemberReflect",
251
+ "ControllerReflect",
216
252
  "AppInterceptor",
217
253
  "OtelObservabilityProvider",
218
254
  ]
@@ -220,6 +256,11 @@ if TYPE_CHECKING:
220
256
  __SPEC_PARENT__: str = __spec__.parent # type: ignore
221
257
  # A mapping of {<member name>: (package, <module name>)} defining dynamic imports
222
258
  _dynamic_imports: "dict[str, tuple[str, str, str | None]]" = {
259
+ "SetMetadata": (__SPEC_PARENT__, "reflect.metadata", None),
260
+ "provide_metadata": (__SPEC_PARENT__, "reflect.metadata", None),
261
+ "get_metadata": (__SPEC_PARENT__, "reflect.metadata", None),
262
+ "get_all_metadata": (__SPEC_PARENT__, "reflect.metadata", None),
263
+ "get_metadata_value": (__SPEC_PARENT__, "reflect.metadata", None),
223
264
  "RedisMessageBrokerBackend": (
224
265
  __SPEC_PARENT__,
225
266
  "broker_backend.redis_broker_backend",
@@ -243,6 +284,7 @@ _dynamic_imports: "dict[str, tuple[str, str, str | None]]" = {
243
284
  "retry": (__SPEC_PARENT__, "messagebus.bus_message_controller", None),
244
285
  "retry_later": (__SPEC_PARENT__, "messagebus.bus_message_controller", None),
245
286
  "RPCRequestNetworkError": (__SPEC_PARENT__, "rpc.http.decorators", None),
287
+ "RPCUnhandleError": (__SPEC_PARENT__, "rpc.http.decorators", None),
246
288
  "FILTER_SORT_ENTITY_ATTR_MAP": (__SPEC_PARENT__, "persistence.sort_filter", None),
247
289
  "FilterModel": (__SPEC_PARENT__, "persistence.sort_filter", None),
248
290
  "SortFilterRunner": (__SPEC_PARENT__, "persistence.sort_filter", None),
@@ -323,7 +365,6 @@ _dynamic_imports: "dict[str, tuple[str, str, str | None]]" = {
323
365
  None,
324
366
  ),
325
367
  "create_http_server": (__SPEC_PARENT__, "presentation.server", None),
326
- "MessageBusWorker": (__SPEC_PARENT__, "messagebus.worker", None),
327
368
  "Container": (__SPEC_PARENT__, "di", None),
328
369
  "WebSocketInterceptor": (
329
370
  __SPEC_PARENT__,
@@ -335,6 +376,31 @@ _dynamic_imports: "dict[str, tuple[str, str, str | None]]" = {
335
376
  "persistence.interceptors.aiosqa_interceptor",
336
377
  None,
337
378
  ),
379
+ "use_transaction": (
380
+ __SPEC_PARENT__,
381
+ "persistence.interceptors.aiosqa_interceptor",
382
+ None,
383
+ ),
384
+ "providing_session": (
385
+ __SPEC_PARENT__,
386
+ "persistence.interceptors.aiosqa_interceptor",
387
+ None,
388
+ ),
389
+ "provide_session": (
390
+ __SPEC_PARENT__,
391
+ "persistence.interceptors.aiosqa_interceptor",
392
+ None,
393
+ ),
394
+ "providing_new_session": (
395
+ __SPEC_PARENT__,
396
+ "persistence.interceptors.aiosqa_interceptor",
397
+ None,
398
+ ),
399
+ "providing_transaction": (
400
+ __SPEC_PARENT__,
401
+ "persistence.interceptors.aiosqa_interceptor",
402
+ None,
403
+ ),
338
404
  "Post": (__SPEC_PARENT__, "presentation.decorators", None),
339
405
  "Get": (__SPEC_PARENT__, "presentation.decorators", None),
340
406
  "Patch": (__SPEC_PARENT__, "presentation.decorators", None),
@@ -375,8 +441,13 @@ _dynamic_imports: "dict[str, tuple[str, str, str | None]]" = {
375
441
  "HttpRpcClientBuilder": (__SPEC_PARENT__, "rpc.http.decorators", None),
376
442
  "HTTPXHttpRPCAsyncBackend": (__SPEC_PARENT__, "rpc.http.backends.httpx", None),
377
443
  "use_app_context": (__SPEC_PARENT__, "microservice", None),
444
+ "use_app_transaction_context": (__SPEC_PARENT__, "microservice", None),
445
+ "use_app_tx_ctx_data": (__SPEC_PARENT__, "microservice", None),
378
446
  "AppContext": (__SPEC_PARENT__, "microservice", None),
379
447
  "AppInterceptor": (__SPEC_PARENT__, "microservice", None),
448
+ "AppTransactionContext": (__SPEC_PARENT__, "microservice", None),
449
+ "ControllerMemberReflect": (__SPEC_PARENT__, "reflect.controller_inspect", None),
450
+ "ControllerReflect": (__SPEC_PARENT__, "reflect.controller_inspect", None),
380
451
  }
381
452
 
382
453