edri 2025.12.1rc1__tar.gz → 2025.12.1rc3__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 (168) hide show
  1. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/PKG-INFO +1 -1
  2. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/abstract/manager/manager_base.py +6 -2
  3. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/handlers/http_handler.py +4 -1
  4. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/listener.py +1 -1
  5. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/config/setting.py +8 -4
  6. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/dataclass/directive/http.py +4 -0
  7. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri.egg-info/PKG-INFO +1 -1
  8. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/setup.py +1 -1
  9. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/README.md +0 -0
  10. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/__init__.py +0 -0
  11. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/abstract/__init__.py +0 -0
  12. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/abstract/manager/__init__.py +0 -0
  13. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/abstract/manager/manager_priority_base.py +0 -0
  14. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/abstract/manager/worker.py +0 -0
  15. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/abstract/worker/__init__.py +0 -0
  16. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/abstract/worker/worker.py +0 -0
  17. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/abstract/worker/worker_process.py +0 -0
  18. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/abstract/worker/worker_thread.py +0 -0
  19. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/__init__.py +0 -0
  20. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/broker.py +0 -0
  21. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/dataclass/__init__.py +0 -0
  22. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/dataclass/api_event.py +0 -0
  23. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/dataclass/client.py +0 -0
  24. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/dataclass/file.py +0 -0
  25. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/extensions/__init__.py +0 -0
  26. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/extensions/url_extension.py +0 -0
  27. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/extensions/url_prefix.py +0 -0
  28. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/handlers/__init__.py +0 -0
  29. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/handlers/base_handler.py +0 -0
  30. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/handlers/html_handler.py +0 -0
  31. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/handlers/rest_handler.py +0 -0
  32. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/handlers/websocket_handler.py +0 -0
  33. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/middleware.py +0 -0
  34. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/static_pages/documentation.j2 +0 -0
  35. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/static_pages/health_check_status.j2 +0 -0
  36. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/static_pages/status_300.j2 +0 -0
  37. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/static_pages/status_400.j2 +0 -0
  38. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/api/static_pages/status_500.j2 +0 -0
  39. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/config/__init__.py +0 -0
  40. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/config/constant.py +0 -0
  41. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/dataclass/__init__.py +0 -0
  42. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/dataclass/directive/__init__.py +0 -0
  43. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/dataclass/directive/base.py +0 -0
  44. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/dataclass/directive/html.py +0 -0
  45. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/dataclass/event.py +0 -0
  46. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/dataclass/health_checker.py +0 -0
  47. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/dataclass/injection.py +0 -0
  48. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/dataclass/response.py +0 -0
  49. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/__init__.py +0 -0
  50. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/__init__.py +0 -0
  51. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/client/__init__.py +0 -0
  52. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/client/documentation.py +0 -0
  53. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/client/register.py +0 -0
  54. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/client/unregister.py +0 -0
  55. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/group/__init__.py +0 -0
  56. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/group/client.py +0 -0
  57. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/group/manage.py +0 -0
  58. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/manage/__init__.py +0 -0
  59. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/manage/list_registered.py +0 -0
  60. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/manage/register.py +0 -0
  61. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/manage/unregister.py +0 -0
  62. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/api/manage/unregister_all.py +0 -0
  63. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/__init__.py +0 -0
  64. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/group/__init__.py +0 -0
  65. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/group/manager.py +0 -0
  66. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/group/router.py +0 -0
  67. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/group/scheduler.py +0 -0
  68. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/group/store.py +0 -0
  69. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/group/switch.py +0 -0
  70. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/group/test.py +0 -0
  71. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/manager/__init__.py +0 -0
  72. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/manager/restart.py +0 -0
  73. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/manager/stream_close.py +0 -0
  74. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/manager/stream_create.py +0 -0
  75. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/manager/stream_message.py +0 -0
  76. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/manager/worker_quit.py +0 -0
  77. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/router/__init__.py +0 -0
  78. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/router/demands.py +0 -0
  79. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/router/health_check.py +0 -0
  80. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/router/last_events.py +0 -0
  81. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/router/send_from.py +0 -0
  82. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/router/subscribe.py +0 -0
  83. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/router/subscribe_connector.py +0 -0
  84. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/router/subscribed_external.py +0 -0
  85. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/router/subscribed_new.py +0 -0
  86. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/router/unsubscribe.py +0 -0
  87. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/router/unsubscribe_all.py +0 -0
  88. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/scheduler/__init__.py +0 -0
  89. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/scheduler/cancel.py +0 -0
  90. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/scheduler/set.py +0 -0
  91. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/scheduler/set_or_update.py +0 -0
  92. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/scheduler/update.py +0 -0
  93. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/store/__init__.py +0 -0
  94. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/store/delete.py +0 -0
  95. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/store/get.py +0 -0
  96. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/store/get_callback.py +0 -0
  97. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/events/edri/store/set.py +0 -0
  98. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/router/__init__.py +0 -0
  99. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/router/cache.py +0 -0
  100. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/router/connector/__init__.py +0 -0
  101. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/router/connector/connector.py +0 -0
  102. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/router/connector/socket.py +0 -0
  103. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/router/health_checker.py +0 -0
  104. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/router/router.py +0 -0
  105. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/switch/__init__.py +0 -0
  106. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/switch/connection.py +0 -0
  107. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/switch/forwarder.py +0 -0
  108. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/switch/receiver.py +0 -0
  109. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/switch/sender.py +0 -0
  110. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/switch/switch.py +0 -0
  111. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/__init__.py +0 -0
  112. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/cache.py +0 -0
  113. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/function.py +0 -0
  114. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/json_encoder.py +0 -0
  115. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/manager/__init__.py +0 -0
  116. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/manager/scheduler.py +0 -0
  117. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/manager/store.py +0 -0
  118. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/normalized_default_dict.py +0 -0
  119. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/queue.py +0 -0
  120. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/shared_memory_pipe.py +0 -0
  121. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/storage.py +0 -0
  122. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/transformation.py +0 -0
  123. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/validation.py +0 -0
  124. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri/utility/watcher.py +0 -0
  125. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri.egg-info/SOURCES.txt +0 -0
  126. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri.egg-info/dependency_links.txt +0 -0
  127. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri.egg-info/requires.txt +0 -0
  128. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/edri.egg-info/top_level.txt +0 -0
  129. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/setup.cfg +0 -0
  130. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/__init__.py +0 -0
  131. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/abstract/__init__.py +0 -0
  132. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/abstract/manager/__init__.py +0 -0
  133. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/abstract/manager/test_manager_base.py +0 -0
  134. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/abstract/manager/test_manager_base_priority.py +0 -0
  135. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/abstract/worker/__init__.py +0 -0
  136. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/abstract/worker/test_worker.py +0 -0
  137. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/api/__init__.py +0 -0
  138. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/api/handlers/__init__.py +0 -0
  139. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/api/handlers/test_base_handler.py +0 -0
  140. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/api/handlers/test_html_handler.py +0 -0
  141. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/api/handlers/test_http_handler.py +0 -0
  142. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/api/test_broker.py +0 -0
  143. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/dataclass/__init__.py +0 -0
  144. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/dataclass/event/__init__.py +0 -0
  145. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/dataclass/event/test_event.py +0 -0
  146. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/dataclass/event/test_event_init.py +0 -0
  147. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/dataclass/event/test_response.py +0 -0
  148. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/events/__init__.py +0 -0
  149. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/events/test/__init__.py +0 -0
  150. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/events/test/event_request.py +0 -0
  151. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/events/test/ping.py +0 -0
  152. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/events/test/ping2.py +0 -0
  153. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/router/__init__.py +0 -0
  154. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/router/test_cache.py +0 -0
  155. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/router/test_health_checker.py +0 -0
  156. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/router/test_router.py +0 -0
  157. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/test_edri_init.py +0 -0
  158. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/utility/__init__.py +0 -0
  159. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/utility/manager/__init__.py +0 -0
  160. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/utility/manager/test_scheduler.py +0 -0
  161. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/utility/manager/test_store.py +0 -0
  162. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/utility/test_function.py +0 -0
  163. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/utility/test_json_encoder.py +0 -0
  164. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/utility/test_normalized_default_dict.py +0 -0
  165. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/utility/test_shared_memory_pipe.py +0 -0
  166. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/utility/test_storage.py +0 -0
  167. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/utility/test_transformation.py +0 -0
  168. {edri-2025.12.1rc1 → edri-2025.12.1rc3}/tests/utility/test_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edri
3
- Version: 2025.12.1rc1
3
+ Version: 2025.12.1rc3
4
4
  Summary: Event Driven Routing Infrastructure
5
5
  Author: Marek Olšan
6
6
  Author-email: marek.olsan@gmail.com
@@ -17,7 +17,7 @@ from typing import Optional, Type, Tuple, Callable, Union, TypeVar, Never, get_a
17
17
  from edri.abstract.manager.worker import Worker
18
18
  from edri.abstract.worker import WorkerProcess
19
19
  from edri.api.dataclass.api_event import api_events
20
- from edri.config.setting import API_CACHE_CONTROL
20
+ from edri.config.setting import API_CACHE_CONTROL, API_CACHE_HEADERS
21
21
  from edri.dataclass.directive.http import NotModifiedResponseDirective, HeaderResponseDirective
22
22
  from edri.dataclass.event import Event
23
23
  from edri.dataclass.health_checker import Status
@@ -127,6 +127,9 @@ class ManagerBase(ABC, Process, metaclass=ManagerBaseMeta):
127
127
  self._store_get: Optional[Callable] = None
128
128
  self._exceptions: list[tuple[str, dict, Exception, str]] = []
129
129
  self._cache: Cache
130
+ self._cache_vary = "Accept,Accept-Encoding"
131
+ if API_CACHE_HEADERS:
132
+ self._cache_vary += f",{API_CACHE_HEADERS}"
130
133
 
131
134
  def _subscribe(self) -> None:
132
135
  """
@@ -645,6 +648,7 @@ class ManagerBase(ABC, Process, metaclass=ManagerBaseMeta):
645
648
  else:
646
649
  event.response.add_directive(HeaderResponseDirective(name="ETag", value=etag))
647
650
  event.response.add_directive(HeaderResponseDirective(name="Cache-Control", value=API_CACHE_CONTROL))
651
+ event.response.add_directive(HeaderResponseDirective(name="Vary", value=self._cache_vary))
648
652
  self.router_queue.put(event)
649
653
 
650
654
  def get_pipes(self) -> set[Connection]:
@@ -696,7 +700,7 @@ class ManagerBase(ABC, Process, metaclass=ManagerBaseMeta):
696
700
  self.logger.debug("Received event: %s", event)
697
701
  except EOFError as e:
698
702
  self.logger.error("Communication problems", exc_info=e)
699
- continue
703
+ return
700
704
  except OSError as e:
701
705
  self.logger.error("OS problems", exc_info=e)
702
706
  continue
@@ -32,7 +32,7 @@ from edri.dataclass.directive.base import InternalServerErrorResponseDirective,
32
32
  from edri.dataclass.directive.http import CookieResponseDirective, AccessDeniedResponseDirective, \
33
33
  NotFoundResponseDirective, \
34
34
  ConflictResponseDirective, HeaderResponseDirective, UnprocessableContentResponseDirective, \
35
- BadRequestResponseDirective, NotModifiedResponseDirective
35
+ BadRequestResponseDirective, NotModifiedResponseDirective, ServiceUnavailableResponseDirective
36
36
  from edri.dataclass.event import Event
37
37
  from edri.dataclass.injection import Injection
38
38
  from edri.utility import NormalizedDefaultDict
@@ -276,6 +276,9 @@ class HTTPHandler[T: HTTPResponseDirective](BaseHandler, ABC):
276
276
  },
277
277
  NotModifiedResponseDirective: {
278
278
  "status": HTTPStatus.NOT_MODIFIED,
279
+ },
280
+ ServiceUnavailableResponseDirective: {
281
+ "status": HTTPStatus.SERVICE_UNAVAILABLE,
279
282
  }
280
283
  }
281
284
 
@@ -147,7 +147,7 @@ class Listener(Process):
147
147
  if isinstance(handler, HTMLHandler):
148
148
  if await handler.response_assets(scope["path"]):
149
149
  return
150
- self.logger.debug("Unknown url %s", scope["path"])
150
+ self.logger.warning("Unknown url %s", scope["path"])
151
151
  await handler.response_error(HTTPStatus.NOT_FOUND, {
152
152
  "reasons": [{
153
153
  "status_code": HTTPStatus.NOT_FOUND,
@@ -15,11 +15,18 @@ ENVIRONMENT: Literal["development", "production"] = "production" if getenv("ENVI
15
15
 
16
16
  HEALTH_CHECK_TIMEOUT = int(getenv("EDRI_HEALTH_CHECK_TIMEOUT", 10))
17
17
  HEALTH_CHECK_FAILURE_LIMIT = int(getenv("EDRI_HEALTH_CHECK_FAILURE_LIMIT", 3))
18
+
19
+ CORS_ORIGINS = getenv("EDRI_CORS_ORIGINS")
20
+ CORS_HEADERS = getenv("EDRI_CORS_HEADERS")
21
+ CORS_CREDENTIALS = bool(getenv("EDRI_CORS_CREDENTIALS", False))
22
+ CORS_MAX_AGE = getenv("EDRI_CORS_MAX_AGE", None)
23
+
18
24
  TIMEZONE = timezone(getenv("EDRI_TIMEZONE", "UTC"))
19
25
  API_RESPONSE_TIMEOUT = int(getenv("EDRI_API_RESPONSE_TIMEOUT", 60))
20
26
  API_RESPONSE_WRAPPED = getenv_bool("EDRI_API_RESPONSE_WRAPPED", True)
21
27
  API_RESPONSE_TIMING = getenv_bool("EDRI_API_RESPONSE_TIMING", ENVIRONMENT == 'development')
22
28
  API_CACHE_CONTROL = getenv("EDRI_API_CACHE_CONTROL", "max-age=0, must-revalidate")
29
+ API_CACHE_HEADERS = getenv("EDRI_API_CACHE_HEADERS", CORS_HEADERS)
23
30
 
24
31
  SWITCH_KEY_LENGTH = int(getenv("EDRI_SWITCH_KEY_LENGTH ", 8))
25
32
  SWITCH_HOST = getenv("EDRI_SWITCH_HOST", "localhost")
@@ -41,7 +48,4 @@ ASSETS_PATH = getenv("EDRI_ASSETS_PATH", "assets")
41
48
  MAX_BODY_SIZE = int(getenv("EDRI_MAX_BODY_SIZE", 4096 * 1024))
42
49
  CHUNK_SIZE = int(getenv("EDRI_CHUNK_SIZE", 256 * 1024))
43
50
 
44
- CORS_ORIGINS = getenv("EDRI_CORS_ORIGINS")
45
- CORS_HEADERS = getenv("EDRI_CORS_HEADERS")
46
- CORS_CREDENTIALS = bool(getenv("EDRI_CORS_CREDENTIALS", False))
47
- CORS_MAX_AGE = getenv("EDRI_CORS_MAX_AGE", None)
51
+
@@ -69,3 +69,7 @@ class BadRequestResponseDirective(HTTPResponseDirective):
69
69
  @dataclass
70
70
  class NotModifiedResponseDirective(HTTPResponseDirective):
71
71
  pass
72
+
73
+ @dataclass
74
+ class ServiceUnavailableResponseDirective(HTTPResponseDirective):
75
+ message: str | None = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edri
3
- Version: 2025.12.1rc1
3
+ Version: 2025.12.1rc3
4
4
  Summary: Event Driven Routing Infrastructure
5
5
  Author: Marek Olšan
6
6
  Author-email: marek.olsan@gmail.com
@@ -122,7 +122,7 @@ Whether you're building a real-time data processing system, a distributed servic
122
122
 
123
123
  setup(
124
124
  name='edri',
125
- version='2025.12.01rc1',
125
+ version='2025.12.01rc3',
126
126
  packages=find_packages(),
127
127
  description='Event Driven Routing Infrastructure',
128
128
  long_description=long_description,
File without changes
File without changes