ergon-framework-python 0.2.2__tar.gz → 0.2.3__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.
Files changed (124) hide show
  1. {ergon_framework_python-0.2.2/src/ergon_framework_python.egg-info → ergon_framework_python-0.2.3}/PKG-INFO +1 -1
  2. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/pyproject.toml +1 -1
  3. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/__init__.py +1 -1
  4. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/rabbitmq/async_service.py +61 -18
  5. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/mixins/consumer.py +1 -1
  6. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3/src/ergon_framework_python.egg-info}/PKG-INFO +1 -1
  7. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/tests/test_smoke.py +1 -1
  8. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/LICENSE +0 -0
  9. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/README.md +0 -0
  10. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/setup.cfg +0 -0
  11. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/__init__.py +0 -0
  12. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/_observability/docker-compose.telemetry.yml +0 -0
  13. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/_observability/grafana.yaml +0 -0
  14. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/_observability/loki.yaml +0 -0
  15. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/_observability/otel-collector-config.yaml +0 -0
  16. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/_observability/prometheus.yaml +0 -0
  17. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/_observability/tempo.yaml +0 -0
  18. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/connectors/__init__.py +0 -0
  19. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/main.py +0 -0
  20. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/tasks/__init__.py +0 -0
  21. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/tasks/constants.py +0 -0
  22. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/tasks/example_task/__init__.py +0 -0
  23. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/tasks/example_task/config.py +0 -0
  24. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/tasks/example_task/exceptions.py +0 -0
  25. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/tasks/example_task/helpers.py +0 -0
  26. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/tasks/example_task/schemas.py +0 -0
  27. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/tasks/example_task/task.py +0 -0
  28. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/tasks/exceptions.py +0 -0
  29. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/tasks/helpers.py +0 -0
  30. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/tasks/schemas.py +0 -0
  31. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/bootstrap/src/__project__/tasks/settings.py +0 -0
  32. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/cli.py +0 -0
  33. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/__init__.py +0 -0
  34. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/_lazy.py +0 -0
  35. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/connector.py +0 -0
  36. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/__init__.py +0 -0
  37. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/_client.py +0 -0
  38. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/async_connector.py +0 -0
  39. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/channels/__init__.py +0 -0
  40. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/channels/adapters.py +0 -0
  41. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/channels/async_connector.py +0 -0
  42. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/channels/connector.py +0 -0
  43. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/channels/models.py +0 -0
  44. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/channels/services/__init__.py +0 -0
  45. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/channels/services/activity.py +0 -0
  46. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/channels/services/addresses.py +0 -0
  47. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/channels/services/attachments.py +0 -0
  48. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/channels/services/messages.py +0 -0
  49. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/channels/services/records.py +0 -0
  50. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/channels/services/service.py +0 -0
  51. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/connector.py +0 -0
  52. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/models.py +0 -0
  53. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/utils.py +0 -0
  54. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/workflows/__init__.py +0 -0
  55. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/workflows/_operations.py +0 -0
  56. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/workflows/async_connector.py +0 -0
  57. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/workflows/connector.py +0 -0
  58. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/workflows/models.py +0 -0
  59. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/ergon_platform/workflows/utils.py +0 -0
  60. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/excel/__init__.py +0 -0
  61. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/excel/connector.py +0 -0
  62. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/excel/models.py +0 -0
  63. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/excel/service.py +0 -0
  64. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/nylas/__init__.py +0 -0
  65. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/nylas/async_auth_service.py +0 -0
  66. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/nylas/async_connector.py +0 -0
  67. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/nylas/async_service.py +0 -0
  68. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/nylas/auth_service.py +0 -0
  69. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/nylas/connector.py +0 -0
  70. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/nylas/models.py +0 -0
  71. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/nylas/service.py +0 -0
  72. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/nylas/utils.py +0 -0
  73. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/pipefy/__init__.py +0 -0
  74. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/pipefy/async_connector.py +0 -0
  75. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/pipefy/async_service.py +0 -0
  76. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/pipefy/connector.py +0 -0
  77. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/pipefy/models.py +0 -0
  78. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/pipefy/service.py +0 -0
  79. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/pipefy/version.py +0 -0
  80. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/postgres/__init__.py +0 -0
  81. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/postgres/async_connector.py +0 -0
  82. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/postgres/async_service.py +0 -0
  83. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/postgres/models.py +0 -0
  84. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/rabbitmq/__init__.py +0 -0
  85. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/rabbitmq/async_connector.py +0 -0
  86. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/rabbitmq/connector.py +0 -0
  87. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/rabbitmq/helper.py +0 -0
  88. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/rabbitmq/models.py +0 -0
  89. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/rabbitmq/service.py +0 -0
  90. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/sqs/__init__.py +0 -0
  91. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/sqs/async_connector.py +0 -0
  92. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/sqs/async_service.py +0 -0
  93. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/sqs/connector.py +0 -0
  94. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/sqs/models.py +0 -0
  95. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/sqs/service.py +0 -0
  96. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/connector/transaction.py +0 -0
  97. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/py.typed +0 -0
  98. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/service/__init__.py +0 -0
  99. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/service/service.py +0 -0
  100. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/__init__.py +0 -0
  101. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/base.py +0 -0
  102. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/exceptions.py +0 -0
  103. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/helpers.py +0 -0
  104. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/liveness.py +0 -0
  105. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/manager.py +0 -0
  106. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/mixins/__init__.py +0 -0
  107. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/mixins/metrics.py +0 -0
  108. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/mixins/producer.py +0 -0
  109. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/policies.py +0 -0
  110. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/runner.py +0 -0
  111. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/task/utils.py +0 -0
  112. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/telemetry/__init__.py +0 -0
  113. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/telemetry/_resource.py +0 -0
  114. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/telemetry/logging.py +0 -0
  115. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/telemetry/metrics.py +0 -0
  116. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/telemetry/tracing.py +0 -0
  117. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/utils/__init__.py +0 -0
  118. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon/utils/env.py +0 -0
  119. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon_framework_python.egg-info/SOURCES.txt +0 -0
  120. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon_framework_python.egg-info/dependency_links.txt +0 -0
  121. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon_framework_python.egg-info/entry_points.txt +0 -0
  122. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon_framework_python.egg-info/requires.txt +0 -0
  123. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/src/ergon_framework_python.egg-info/top_level.txt +0 -0
  124. {ergon_framework_python-0.2.2 → ergon_framework_python-0.2.3}/tests/test_optional_connectors.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ergon-framework-python
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: Ergon internal task-oriented project bootstrapper
5
5
  Author-email: Ergondata Technologies <anza.vossos@protonmail.com>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ergon-framework-python"
3
- version = "0.2.2"
3
+ version = "0.2.3"
4
4
  description = "Ergon internal task-oriented project bootstrapper"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -10,4 +10,4 @@ __all__ = [
10
10
  "manager",
11
11
  ]
12
12
 
13
- __version__ = "0.2.2"
13
+ __version__ = "0.2.3"
@@ -55,13 +55,14 @@ _DEAD_CHANNEL_EXCEPTIONS: tuple[type[BaseException], ...] = (
55
55
  aio_pika.exceptions.ChannelClosed,
56
56
  )
57
57
 
58
- # Same as above plus ``TimeoutError`` (raised by the async timeout context when an
59
- # ack/nack stalls on a half-open socket). A stalled ack is functionally a dead
60
- # channel: we tear down and let the broker redeliver instead of blocking until
61
- # the heartbeat eventually fires.
58
+ # Same as above plus ``asyncio.TimeoutError`` (raised by the async timeout
59
+ # context when an ack/nack stalls on a half-open socket). A stalled ack is
60
+ # functionally a dead channel: we tear down and let the broker redeliver instead
61
+ # of blocking until the heartbeat eventually fires. Use asyncio's name
62
+ # explicitly because it is distinct from builtins.TimeoutError on Python 3.10.
62
63
  _DEAD_CHANNEL_TIMEOUT_EXCEPTIONS: tuple[type[BaseException], ...] = (
63
64
  *_DEAD_CHANNEL_EXCEPTIONS,
64
- TimeoutError,
65
+ asyncio.TimeoutError,
65
66
  )
66
67
 
67
68
 
@@ -107,6 +108,54 @@ class AsyncRabbitMQService:
107
108
 
108
109
  # ---------- Connection / Channel ----------
109
110
 
111
+ async def _open_owned_robust_connection(
112
+ self,
113
+ url: str,
114
+ kwargs: Dict[str, Any],
115
+ ) -> AbstractRobustConnection:
116
+ """Open a robust connection without losing ownership on startup failure.
117
+
118
+ ``aio_pika.connect_robust`` constructs ``RobustConnection`` and starts
119
+ its background reconnection task before awaiting the initial broker
120
+ connection. If that await times out or is cancelled, the helper never
121
+ returns the connection object, so callers cannot close the reconnect
122
+ task and ``asyncio.run`` can hang while shutting it down.
123
+
124
+ aio-pika exposes ``connection_class`` as its connection factory. Capture
125
+ the object synchronously at that boundary, before its first await, and
126
+ close it on every unsuccessful exit from ``connect_robust``.
127
+ """
128
+ pending_connection: Optional[AbstractRobustConnection] = None
129
+
130
+ def capture_connection(*args: Any, **connection_kwargs: Any) -> AbstractRobustConnection:
131
+ nonlocal pending_connection
132
+ pending_connection = aio_pika.RobustConnection(*args, **connection_kwargs)
133
+ return pending_connection
134
+
135
+ connection_factory = cast(type[AbstractRobustConnection], capture_connection)
136
+ try:
137
+ async with timeout_after(self.client.connect_timeout):
138
+ return await aio_pika.connect_robust( # type: ignore[call-overload]
139
+ url,
140
+ heartbeat=self.client.heartbeat,
141
+ timeout=self.client.connect_timeout,
142
+ connection_class=connection_factory,
143
+ **kwargs,
144
+ )
145
+ except BaseException as exc:
146
+ connection_to_close = pending_connection
147
+ pending_connection = None
148
+ try:
149
+ await self._close_connection_safely(
150
+ connection_to_close,
151
+ f"initial connection attempt failed: {type(exc).__name__}",
152
+ )
153
+ finally:
154
+ # Do not retain the partial connection in this exception's
155
+ # traceback after its reconnect task has been stopped.
156
+ del connection_to_close
157
+ raise
158
+
110
159
  async def _get_connection(self) -> AbstractRobustConnection:
111
160
  async with self._connection_lock:
112
161
  if self._connection is not None and not self._connection.is_closed:
@@ -116,7 +165,7 @@ class AsyncRabbitMQService:
116
165
  try:
117
166
  async with timeout_after(self.client.connect_timeout):
118
167
  await connected.wait()
119
- except TimeoutError:
168
+ except asyncio.TimeoutError:
120
169
  self._consumer_state = "connect_stalled"
121
170
  await self._reset_connection("robust reconnect timed out")
122
171
  raise
@@ -133,14 +182,8 @@ class AsyncRabbitMQService:
133
182
 
134
183
  self._consumer_state = "connecting"
135
184
  try:
136
- async with timeout_after(self.client.connect_timeout):
137
- connection = await aio_pika.connect_robust( # type: ignore[call-overload]
138
- url,
139
- heartbeat=self.client.heartbeat,
140
- timeout=self.client.connect_timeout,
141
- **kwargs,
142
- )
143
- except TimeoutError:
185
+ connection = await self._open_owned_robust_connection(url, kwargs)
186
+ except asyncio.TimeoutError:
144
187
  self._consumer_state = "connect_stalled"
145
188
  raise
146
189
  except BaseException:
@@ -181,7 +224,7 @@ class AsyncRabbitMQService:
181
224
  try:
182
225
  async with timeout_after(close_timeout):
183
226
  await connection.close()
184
- except TimeoutError:
227
+ except asyncio.TimeoutError:
185
228
  logger.error(
186
229
  "Timed out closing RabbitMQ connection after %.1fs (%s)",
187
230
  close_timeout,
@@ -293,7 +336,7 @@ class AsyncRabbitMQService:
293
336
  try:
294
337
  async with timeout_after(self.client.channel_timeout):
295
338
  self._consume_channel = await connection.channel()
296
- except TimeoutError:
339
+ except asyncio.TimeoutError:
297
340
  self._consumer_state = "connect_stalled"
298
341
  await self._reset_connection("consume channel creation timed out")
299
342
  raise
@@ -328,7 +371,7 @@ class AsyncRabbitMQService:
328
371
  try:
329
372
  async with timeout_after(self.client.channel_timeout):
330
373
  self._publish_channel = await connection.channel()
331
- except TimeoutError:
374
+ except asyncio.TimeoutError:
332
375
  await self._reset_connection("publish channel creation timed out")
333
376
  raise
334
377
 
@@ -455,7 +498,7 @@ class AsyncRabbitMQService:
455
498
  break
456
499
  if epoch == self._consumer_epoch and delivery is not None:
457
500
  buffer.append(delivery)
458
- except TimeoutError:
501
+ except asyncio.TimeoutError:
459
502
  poll_completed = True
460
503
  else:
461
504
  poll_completed = True
@@ -869,7 +869,7 @@ class AsyncConsumerMixin(ABC):
869
869
  trace_name=f"{self.__class__.__name__}.start_processing",
870
870
  trace_attrs={"transaction_id": tr.id},
871
871
  )
872
- except TimeoutError as exc:
872
+ except asyncio.TimeoutError as exc:
873
873
  timeout_error = exceptions.TransactionTimeoutException(
874
874
  transaction_id=tr.id,
875
875
  cause=exc,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ergon-framework-python
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: Ergon internal task-oriented project bootstrapper
5
5
  Author-email: Ergondata Technologies <anza.vossos@protonmail.com>
6
6
  License-Expression: MIT
@@ -4,4 +4,4 @@ import ergon
4
4
 
5
5
 
6
6
  def test_ergon_package_is_importable() -> None:
7
- assert ergon.__version__ == "0.2.2"
7
+ assert ergon.__version__ == "0.2.3"