explicit-python 2.4.0__tar.gz → 2.4.1__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 (38) hide show
  1. {explicit_python-2.4.0/src/explicit_python.egg-info → explicit_python-2.4.1}/PKG-INFO +1 -1
  2. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/messagebus/exceptions.py +2 -0
  3. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/messagebus/messagebus.py +22 -13
  4. {explicit_python-2.4.0 → explicit_python-2.4.1/src/explicit_python.egg-info}/PKG-INFO +1 -1
  5. {explicit_python-2.4.0 → explicit_python-2.4.1}/LICENSE +0 -0
  6. {explicit_python-2.4.0 → explicit_python-2.4.1}/MANIFEST.in +0 -0
  7. {explicit_python-2.4.0 → explicit_python-2.4.1}/README.md +0 -0
  8. {explicit_python-2.4.0 → explicit_python-2.4.1}/pyproject.toml +0 -0
  9. {explicit_python-2.4.0 → explicit_python-2.4.1}/setup.cfg +0 -0
  10. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/adapters/__init__.py +0 -0
  11. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/adapters/db.py +0 -0
  12. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/adapters/fs.py +0 -0
  13. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/adapters/messaging.py +0 -0
  14. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/contrib/__init__.py +0 -0
  15. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/contrib/domain/__init__.py +0 -0
  16. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/contrib/domain/model/__init__.py +0 -0
  17. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/contrib/domain/model/fields.py +0 -0
  18. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/contrib/messagebus/__init__.py +0 -0
  19. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/contrib/messagebus/event_registry.py +0 -0
  20. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/domain/__init__.py +0 -0
  21. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/domain/factories.py +0 -0
  22. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/domain/fields.py +0 -0
  23. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/domain/model.py +0 -0
  24. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/domain/types.py +0 -0
  25. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/domain/validation/__init__.py +0 -0
  26. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/domain/validation/exceptions.py +0 -0
  27. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/messagebus/__init__.py +0 -0
  28. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/messagebus/commands.py +0 -0
  29. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/messagebus/dependency_injection.py +0 -0
  30. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/messagebus/events.py +0 -0
  31. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/messagebus/queries.py +0 -0
  32. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/py.typed +0 -0
  33. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit/unit_of_work.py +0 -0
  34. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit_python.egg-info/SOURCES.txt +0 -0
  35. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit_python.egg-info/dependency_links.txt +0 -0
  36. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit_python.egg-info/requires.txt +0 -0
  37. {explicit_python-2.4.0 → explicit_python-2.4.1}/src/explicit_python.egg-info/top_level.txt +0 -0
  38. {explicit_python-2.4.0 → explicit_python-2.4.1}/version.conf +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: explicit-python
3
- Version: 2.4.0
3
+ Version: 2.4.1
4
4
  Summary: Набор компонентов для построения многослойной архитектуры
5
5
  Author-email: BARS Group <bars@bars-open.ru>
6
6
  Project-URL: Homepage, https://stash.bars-open.ru/projects/EDUBASE/repos/explicit/browse
@@ -1,3 +1,5 @@
1
+ """Исключения шины сообщений."""
2
+
1
3
  from typing import Any
2
4
 
3
5
 
@@ -67,24 +67,33 @@ class MessageBus(DependencyInjectionMixin, QueryBusMixin, CommandBusMixin, Event
67
67
  def handle(self, message):
68
68
  result = None
69
69
 
70
- self._message_queue[:] = [message]
70
+ parent_queue = getattr(self._thread_local, 'message_bus_queue', None)
71
+ # Для вложенного вызова bus.handle() создаём отдельную рабочую очередь,
72
+ # чтобы не потерять pending-сообщения внешнего вызова.
73
+ self._thread_local.message_bus_queue = [message]
71
74
 
72
- while self._message_queue:
73
- message = self._message_queue.pop(0)
75
+ try:
76
+ while self._message_queue:
77
+ message = self._message_queue.pop(0)
74
78
 
75
- if isinstance(message, Query):
76
- result = self.handle_query(message)
79
+ if isinstance(message, Query):
80
+ result = self.handle_query(message)
77
81
 
78
- elif isinstance(message, Command):
79
- result = self.handle_command(message)
82
+ elif isinstance(message, Command):
83
+ result = self.handle_command(message)
80
84
 
81
- elif isinstance(message, Event):
82
- # результат обработки события нас не интересует.
83
- self.handle_event(message)
85
+ elif isinstance(message, Event):
86
+ # результат обработки события нас не интересует.
87
+ self.handle_event(message)
84
88
 
85
- else:
86
- raise ValueError(f'Unknown message type: {message}')
89
+ else:
90
+ raise ValueError(f'Unknown message type: {message}')
87
91
 
88
- self._collect_events()
92
+ self._collect_events()
93
+ finally:
94
+ if parent_queue is None:
95
+ self._thread_local.message_bus_queue = []
96
+ else:
97
+ self._thread_local.message_bus_queue = parent_queue
89
98
 
90
99
  return result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: explicit-python
3
- Version: 2.4.0
3
+ Version: 2.4.1
4
4
  Summary: Набор компонентов для построения многослойной архитектуры
5
5
  Author-email: BARS Group <bars@bars-open.ru>
6
6
  Project-URL: Homepage, https://stash.bars-open.ru/projects/EDUBASE/repos/explicit/browse
File without changes