buz 2.17.0rc2__py3-none-any.whl → 2.17.0rc4__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.
@@ -1,10 +1,13 @@
1
1
  from abc import ABC, abstractmethod
2
+ from typing import Generic, TypeVar
2
3
 
3
- from buz.event import Event
4
+ from buz.event.event import Event
4
5
  from buz.event.meta_subscriber import MetaSubscriber
5
6
 
7
+ TEvent = TypeVar("TEvent", bound=Event)
6
8
 
7
- class AsyncSubscriber(MetaSubscriber, ABC):
9
+
10
+ class AsyncSubscriber(Generic[TEvent], MetaSubscriber[TEvent], ABC):
8
11
  @abstractmethod
9
- async def consume(self, event: Event) -> None:
12
+ async def consume(self, event: TEvent) -> None:
10
13
  pass
@@ -1,8 +1,12 @@
1
1
  from abc import ABC
2
+ from typing import Generic, TypeVar
2
3
 
4
+ from buz.event.event import Event
3
5
  from buz.event.async_subscriber import AsyncSubscriber
4
6
  from buz.event.meta_base_subscriber import MetaBaseSubscriber
5
7
 
8
+ TEvent = TypeVar("TEvent", bound=Event)
6
9
 
7
- class BaseAsyncSubscriber(AsyncSubscriber, MetaBaseSubscriber, ABC):
10
+
11
+ class BaseAsyncSubscriber(Generic[TEvent], AsyncSubscriber[TEvent], MetaBaseSubscriber[TEvent], ABC):
8
12
  pass
@@ -1,7 +1,12 @@
1
1
  from abc import ABC
2
- from buz.event import Subscriber
2
+ from typing import Generic, TypeVar
3
+
4
+ from buz.event.event import Event
5
+ from buz.event.subscriber import Subscriber
3
6
  from buz.event.meta_base_subscriber import MetaBaseSubscriber
4
7
 
8
+ TEvent = TypeVar("TEvent", bound=Event)
9
+
5
10
 
6
- class BaseSubscriber(Subscriber, MetaBaseSubscriber, ABC):
11
+ class BaseSubscriber(Generic[TEvent], Subscriber[TEvent], MetaBaseSubscriber[TEvent], ABC):
7
12
  pass
@@ -1,23 +1,26 @@
1
1
  from abc import ABC
2
- from typing import Type, get_type_hints
2
+ from typing import Generic, Type, TypeVar, cast, get_type_hints
3
3
 
4
- from buz.event import Event
4
+ from buz.event.event import Event
5
5
  from buz.event.meta_subscriber import MetaSubscriber
6
6
 
7
+ TEvent = TypeVar("TEvent", bound=Event)
7
8
 
8
- class MetaBaseSubscriber(MetaSubscriber, ABC):
9
+
10
+ class MetaBaseSubscriber(Generic[TEvent], MetaSubscriber[TEvent], ABC):
9
11
  @classmethod
10
12
  def fqn(cls) -> str:
11
13
  return f"subscriber.{cls.__module__}.{cls.__name__}"
12
14
 
13
15
  @classmethod
14
- def handles(cls) -> Type[Event]:
16
+ def handles(cls) -> Type[TEvent]:
15
17
  consume_types = get_type_hints(cls.consume)
16
18
 
17
- if "event" not in consume_types:
19
+ t_event = consume_types.get("event")
20
+ if t_event is None:
18
21
  raise TypeError("event parameter not found in consume method")
19
22
 
20
- if not issubclass(consume_types["event"], Event):
23
+ if not issubclass(t_event, Event):
21
24
  raise TypeError("event parameter is not an buz.event.Event subclass")
22
25
 
23
- return consume_types["event"]
26
+ return cast(Type[TEvent], t_event)
@@ -1,16 +1,18 @@
1
1
  from abc import ABC, abstractmethod
2
- from typing import Awaitable, Type, Union
2
+ from typing import Awaitable, Generic, Type, TypeVar, Union
3
3
 
4
4
  from buz import Handler
5
- from buz.event import Event
5
+ from buz.event.event import Event
6
6
 
7
+ TEvent = TypeVar("TEvent", bound=Event)
7
8
 
8
- class MetaSubscriber(Handler, ABC):
9
+
10
+ class MetaSubscriber(Generic[TEvent], Handler[TEvent], ABC):
9
11
  @abstractmethod
10
- def consume(self, event: Event) -> Union[None, Awaitable[None]]:
12
+ def consume(self, event: TEvent) -> Union[None, Awaitable[None]]:
11
13
  pass
12
14
 
13
15
  @classmethod
14
16
  @abstractmethod
15
- def handles(cls) -> Type[Event]:
17
+ def handles(cls) -> Type[TEvent]:
16
18
  pass
buz/event/subscriber.py CHANGED
@@ -1,10 +1,13 @@
1
1
  from abc import ABC, abstractmethod
2
+ from typing import Generic, TypeVar
2
3
 
3
- from buz.event import Event
4
+ from buz.event.event import Event
4
5
  from buz.event.meta_subscriber import MetaSubscriber
5
6
 
7
+ TEvent = TypeVar("TEvent", bound=Event)
6
8
 
7
- class Subscriber(MetaSubscriber, ABC):
9
+
10
+ class Subscriber(Generic[TEvent], MetaSubscriber[TEvent], ABC):
8
11
  @abstractmethod
9
- def consume(self, event: Event) -> None:
12
+ def consume(self, event: TEvent) -> None:
10
13
  pass
@@ -31,10 +31,10 @@ class TransactionalOutboxEventBus(EventBus):
31
31
 
32
32
  def bulk_publish(self, events: Iterable[Event]) -> None:
33
33
  outbox_records: list[OutboxRecord] = []
34
+
34
35
  for event in events:
35
- self.__publish_middleware_chain_resolver.resolve(
36
- event, lambda resolved_event: outbox_records.append(self.__process_event(resolved_event))
37
- )
36
+ self.__publish_middleware_chain_resolver.resolve(event, lambda resolved_event: None)
37
+ outbox_records.append(self.__process_event(event))
38
38
 
39
39
  if len(outbox_records) == 0:
40
40
  return None
@@ -1,20 +1,19 @@
1
- from abc import abstractmethod
1
+ from abc import ABC, abstractmethod
2
2
  from typing import Generic, Type, TypeVar
3
3
 
4
4
  from buz import Handler
5
5
  from buz.query import Query, QueryResponse
6
6
 
7
-
8
7
  TQuery = TypeVar("TQuery", bound=Query)
9
8
  TQueryResponse = TypeVar("TQueryResponse", bound=QueryResponse)
10
9
 
11
10
 
12
- class QueryHandler(Generic[TQuery, TQueryResponse], Handler[TQuery]):
11
+ class QueryHandler(Generic[TQuery, TQueryResponse], Handler[TQuery], ABC):
13
12
  @classmethod
14
13
  @abstractmethod
15
14
  def handles(cls) -> Type[TQuery]:
16
15
  pass
17
16
 
18
17
  @abstractmethod
19
- async def handle(self, query: Query) -> TQueryResponse:
18
+ async def handle(self, query: TQuery) -> TQueryResponse:
20
19
  pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buz
3
- Version: 2.17.0rc2
3
+ Version: 2.17.0rc4
4
4
  Summary: Buz is a set of light, simple and extensible implementations of event, command and query buses.
5
5
  License: MIT
6
6
  Author: Luis Pintado Lozano
@@ -27,10 +27,10 @@ buz/command/synchronous/synced_async/synced_async_command_bus.py,sha256=8tvD1zR8
27
27
  buz/event/__init__.py,sha256=ey3c3fY85XpcWFlmIlbpanJfxv1BZI42Ia1njAtjcEs,588
28
28
  buz/event/async_consumer.py,sha256=k6v_WqQ8A8vWJzO_sMcjU75mroA_Il9D-rE-E-pu_lM,200
29
29
  buz/event/async_event_bus.py,sha256=l627YtPplBprVO0Ccepgt4hkwtMJyI8uaqx6TzCQ9Lw,430
30
- buz/event/async_subscriber.py,sha256=GNenWsj1CZj1F1nJV0KQ_7L1elYToyT9K8sY7O4Gayk,248
30
+ buz/event/async_subscriber.py,sha256=FNW5qtPlImcw2i7Ic1VcSpeai0RyPFAx4yRUn_NmpwQ,357
31
31
  buz/event/async_worker.py,sha256=OR7g6cYWOWTh9DbfAfWwS6U6bZ1CDzScJHfH52PYj_k,881
32
- buz/event/base_async_subscriber.py,sha256=QCVSD36lR_FuX_B4R32nOZrGmq_Y24otb_GCrH_fL8k,218
33
- buz/event/base_subscriber.py,sha256=nQ3fXdpFmU0S0Vpg-0ozH6_IG5zFe1B-Lsn4CNdfsds,185
32
+ buz/event/base_async_subscriber.py,sha256=66qxsFgBSSc4-dG0YsjkvYFFKOOIDA9nP8NuZ7kN2tw,362
33
+ buz/event/base_subscriber.py,sha256=78gCjxcCBpPTvnr9NJOERz4YwGGMaBDC2YElwKDlrAk,341
34
34
  buz/event/consumer.py,sha256=Rf3ZtodM_637ifk5Y2CmEVQ7caYhBgXQ9gm7D57raP0,181
35
35
  buz/event/dead_letter_queue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  buz/event/dead_letter_queue/dlq_criteria.py,sha256=hxcV-BMayKTEc5suEfQZhEYkc14H7kZo_4YfDzcJTTY,290
@@ -85,8 +85,8 @@ buz/event/infrastructure/models/consuming_task.py,sha256=GJvn6fGTN5ZQJaOuQCX17JP
85
85
  buz/event/infrastructure/models/delivery_context.py,sha256=D6_wppbYEkfoBgDaPeUaQPWFUMvZiHn-4QaAxDmWUZo,92
86
86
  buz/event/infrastructure/models/execution_context.py,sha256=tohrJMSHWA5U7WByGE47LSjteAN8_IMyHoXtjyrHJMM,200
87
87
  buz/event/infrastructure/queue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
- buz/event/meta_base_subscriber.py,sha256=IP2Siol98OmoeCoOISiaCJxgxJG2SCrhmbAN4t01aWg,698
89
- buz/event/meta_subscriber.py,sha256=JPhhRqHkDOBWhuqtPmseUtAoYde1OmTBViqVbLBhvME,359
88
+ buz/event/meta_base_subscriber.py,sha256=cqB-iDtN4iuAVBZs2UwrrrAVB2t-u1VvzZw1aSClkwg,817
89
+ buz/event/meta_subscriber.py,sha256=yH2_2OGqionoC86a3xc4K9kewiuNJs5UtiXdRAMViNM,451
90
90
  buz/event/middleware/__init__.py,sha256=vbmskMeXurTSgwXqPsRQBydHhNAYnbEoqFc1pqemI7Y,897
91
91
  buz/event/middleware/async_consume_middleware.py,sha256=n_EsDMNFgOIu7UVPGRC0iaxCIfGL-p_3xo5Avq43zYA,640
92
92
  buz/event/middleware/async_consume_middleware_chain_resolver.py,sha256=dIiyob5TYavjcD5QL31_Yqya9x3ujWtL7cUZK4bEVvk,1459
@@ -115,7 +115,7 @@ buz/event/strategies/retry/consumed_event_retry_repository.py,sha256=Udls0pJEEXu
115
115
  buz/event/strategies/retry/max_retries_consume_retrier.py,sha256=hY-DrAI8MRZKDUHraY2nSsQHcUo50jzLwBZrmvN3L5I,1743
116
116
  buz/event/strategies/retry/max_retries_negative_exception.py,sha256=UdM5T4cxRv_at9GmNZXaE7Lcf6zX6jd7uaUAkBD9qvU,230
117
117
  buz/event/strategies/retry/reject_callback.py,sha256=TnmUt0AkB2DEQMieec9TtB7IAkRHdFAFepAclbiCRns,316
118
- buz/event/subscriber.py,sha256=WxppO8PFP5zO-gwLZNg1DKSY_uFdsF8JgWIJa6nTTds,237
118
+ buz/event/subscriber.py,sha256=gY43QIaNCXm8vcNbtkgWJs_I8F7oMkGaC3HiawHPi70,346
119
119
  buz/event/sync/__init__.py,sha256=uJmU80PGVNNL2HoRFXp4loQTn1VK8gLo-hMEvgVPpBQ,91
120
120
  buz/event/sync/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
121
  buz/event/sync/models/sync_delivery_context.py,sha256=LHjrS6gV-19NEKwtAXVmefjPd-Dsp_Ym8RZb84T3lm8,190
@@ -140,7 +140,7 @@ buz/event/transactional_outbox/outbox_record_validation/outbox_record_validation
140
140
  buz/event/transactional_outbox/outbox_record_validation/outbox_record_validator.py,sha256=XGHTT1dH2CJOqhYYnyPJHmZsAuVXuDOeqgJzK7mRidc,328
141
141
  buz/event/transactional_outbox/outbox_record_validation/size_outbox_record_validator.py,sha256=f8sQ5IHfO4J8m5l7rS3JYUoBvx0B1EAFMRsJ0HPQKG8,2436
142
142
  buz/event/transactional_outbox/outbox_repository.py,sha256=Sn7aWaq1G6uiKXcV09l9L1eVQ_bPUTqY-OSD12_H2jU,628
143
- buz/event/transactional_outbox/transactional_outbox_event_bus.py,sha256=9eUevDAKEwouKrSEhf5dpqFwI-FbB5z9R7gIxaFCLno,2551
143
+ buz/event/transactional_outbox/transactional_outbox_event_bus.py,sha256=mrsqnITsZ0KZqY93YiEIrfrkzwcwGhEFaxwbQAM4asU,2530
144
144
  buz/event/transactional_outbox/transactional_outbox_worker.py,sha256=x6kf-Oc4oYKu9S4MTcCqd3VqPNURScTReYJ3Ahx4rKA,2221
145
145
  buz/event/worker.py,sha256=BL9TXB_kyr0Avql9fIcFm3CDNnXPvZB6O6BxVwjtCdA,942
146
146
  buz/handler.py,sha256=W6jSTo5BNV9u9QKBaEMhLIa3tgQocd6oYEJf5K4EfEU,358
@@ -230,7 +230,7 @@ buz/query/asynchronous/middleware/base_handle_middleware.py,sha256=51FliRBVrobao
230
230
  buz/query/asynchronous/middleware/handle_middleware.py,sha256=LfQLKc4jIlUegbGbnMXqCSXgAl6NaRGqvKDN0GuvgY4,462
231
231
  buz/query/asynchronous/middleware/handle_middleware_chain_resolver.py,sha256=iA2faVRvNkuS5S4dB1buP25JGSqfBKBQIKg14hWis2U,1123
232
232
  buz/query/asynchronous/query_bus.py,sha256=L3VIw6VofJzJYH2oie5uFKH-dQ-M6a2VECTd6Seos_o,195
233
- buz/query/asynchronous/query_handler.py,sha256=Me80YBdGP368WYUhEY7n5AmwacFmdqFYyiM6TyDrqKE,501
233
+ buz/query/asynchronous/query_handler.py,sha256=70SbvY_vfFvEl2q3nzXUPQeVYkfcd7x1tJIIycto4sc,511
234
234
  buz/query/asynchronous/self_process/__init__.py,sha256=5y0dGgeDq0ZPCrexVjvJWT6gix8lKd-7Iw7Z3H8dirc,126
235
235
  buz/query/asynchronous/self_process/self_process_query_bus.py,sha256=2PqbJGrjv7ULEAl0yIj-Gn4ylVc3_EvJ0VXIlzUlhNc,1217
236
236
  buz/query/more_than_one_query_handler_related_exception.py,sha256=sEfShwCB1VHdUbf02NSEAyv6pXx4GO9ram0AenBF_dE,516
@@ -258,7 +258,7 @@ buz/serializer/message_to_json_bytes_serializer.py,sha256=RGZJ64t4t4Pz2FCASZZCv-
258
258
  buz/wrapper/__init__.py,sha256=GnRdJFcncn-qp0hzDG9dBHLmTJSbHFVjE_yr-MdW_n4,77
259
259
  buz/wrapper/async_to_sync.py,sha256=OfK-vrVUhuN-LLLvekLdMbQYtH0ue5lfbvuasj6ovMI,698
260
260
  buz/wrapper/event_loop.py,sha256=pfBJ1g-8A2a3YgW8Gf9Fg0kkewoh3-wgTy2KIFDyfHk,266
261
- buz-2.17.0rc2.dist-info/LICENSE,sha256=jcLgcIIVaBqaZNwe0kzGWSU99YgwMcI0IGv142wkYSM,1062
262
- buz-2.17.0rc2.dist-info/METADATA,sha256=1gFRXIis0nVeEJ3CS1im64qJuzyFJx-Y_3c7PIjFsQg,12682
263
- buz-2.17.0rc2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
264
- buz-2.17.0rc2.dist-info/RECORD,,
261
+ buz-2.17.0rc4.dist-info/LICENSE,sha256=jcLgcIIVaBqaZNwe0kzGWSU99YgwMcI0IGv142wkYSM,1062
262
+ buz-2.17.0rc4.dist-info/METADATA,sha256=VdgMEfesDUOw2RFFiIf1Z4hh32XO2tBGc1qd2uUwv98,12682
263
+ buz-2.17.0rc4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
264
+ buz-2.17.0rc4.dist-info/RECORD,,