Skip to content

Commit a2ed1b8

Browse files
authored
Merge pull request #32 from mdapena/v0.7.0-prep
Prepare for Pyventus `v0.7.0` Release
2 parents 8ec5eb1 + b7ebf63 commit a2ed1b8

File tree

8 files changed

+46
-19
lines changed

8 files changed

+46
-19
lines changed

CITATION.cff

+2-4
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,8 @@ authors:
1414
repository-code: 'https://github.com/mdapena/pyventus'
1515
url: 'https://mdapena.github.io/pyventus/'
1616
abstract: >-
17-
A modern and robust Python package for event-driven
18-
programming. Define, emit, and orchestrate events with
19-
ease using customizable event emitters and flexible
20-
responses.
17+
A powerful Python library for event-driven and
18+
reactive programming.
2119
keywords:
2220
- events
2321
- event-emitter

docs/.overrides/announce.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<b><a href="{{ base_url ~ '/release-notes/#0.7.0'}}">Pyventus v0.7</a> is now live!</b>
1+
🚀 <b><a href="{{ base_url ~ '/release-notes/#0.7.0'}}">Pyventus v0.7</a> is now live!</b>
22
Don't miss the <b>latest updates</b>,
33
featuring <b><a href="{{ base_url ~ '/#a-simple-reactive-example'}}">reactive programming</a></b>,
44
major <b><a href="{{ base_url ~ '/release-notes/#0.7.0-optimized'}}">optimizations</a></b>, and more!

docs/learn/upgrade_guide.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,15 @@ Please review the following breaking changes and apply the necessary actions to
5555
- [ ] The `EventLinker` has experienced some method renames and return type modifications to align with the new redesigned codebase:
5656
- [ ] `remove_event_handler()``remove_subscriber()`.
5757
- [ ] `get_event_handlers()``get_subscribers()`: Now returns a `set` instead of a `list`.
58-
- [ ] `get_events_by_event_handler()``get_events_from_subscribers()`: Now returns a `set` instead of a `list` and includes a new flag `pop_onetime_subscribers`.
58+
- [ ] `get_events_by_event_handler()``get_events_from_subscribers()`: Now returns a `set` instead of a `list` and supports retrieving events for multiple subscribers.
5959
- [ ] `get_event_handlers_by_events()``get_subscribers_from_events()`: Now returns a `set` instead of a `list` and includes a new flag `pop_onetime_subscribers`.
6060
- [ ] `unsubscribe()``remove()`: Now removes one event from a subscriber at a time.
6161
- [ ] Parameters named `event_handler` have been renamed to `subscriber` in all methods.
6262
- [ ] `get_events()`: Now returns a `set` instead of a `list` with non-duplicates.
6363
- [ ] The `RQEventEmitter` has been renamed to `RedisEventEmitter`.
64+
- [ ] The `CeleryEventEmitter.Queue` has been removed, and the `CeleryEventEmitter` now requires a `Celery` instance. Security aspects have been delegated to the `Celery` app.
6465
- [ ] Dependency injection for the `FastAPIEventEmitter` through FastAPI's `Depends()` function has been simplified; use `Depends(FastAPIEventEmitter())` for all scenarios.
6566
- [ ] The `ExecutorEventEmitter` can no longer be used as a context manager; for this purpose, use the new `ExecutorEventEmitterCtx`.
66-
- [ ] The `CeleryEventEmitter.Queue` has been removed, and the `CeleryEventEmitter` now requires a `Celery` instance. Security aspects have been delegated to the `Celery` app configuration.
6767

6868
## Questions and Issues
6969

docs/release-notes.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ hide:
1212

1313
[//]: # "--------------------------------------------------------------------------------------------------------------"
1414

15-
## [v0.7.0](https://github.com/mdapena/pyventus/releases/tag/0.7.0) <small>Unreleased</small> { id="0.7.0" }
15+
## [v0.7.0](https://github.com/mdapena/pyventus/releases/tag/0.7.0) <small>January 7, 2025</small> { id="0.7.0" }
1616

1717
<hr class="divider">
1818

mkdocs.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ repo_url: https://github.com/mdapena/pyventus
1111

1212
# Copyright
1313
copyright: |
14-
Copyright &copy; 2023-2024 <a href="https://github.com/mdapena" target="_blank" rel="mdapena">Manuel Da Pena</a>
14+
Copyright &copy; 2023-2025 <a href="https://github.com/mdapena" target="_blank" rel="mdapena">Manuel Da Pena</a>
1515
1616
# Configuration
1717
theme:

pyproject.toml

+18-5
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,26 @@ readme = "README.md"
1515
license = "MIT"
1616
authors = [{ name = "Manuel Da Pena", email = "dapensoft@gmail.com" }]
1717
keywords = [
18+
"event",
1819
"events",
19-
"event-emitters",
20-
"event-dispatchers",
21-
"event-handlers",
22-
"event-linkers",
20+
"event driven",
2321
"event-driven",
24-
"python",
22+
"event driven programming",
23+
"event-driven programming",
24+
"EventEmitter",
25+
"event emitter",
26+
"event emitters",
27+
"reactive",
28+
"reactive programming",
29+
"reactive-programming",
30+
"observer pattern",
31+
"observable",
32+
"observables",
33+
"observer",
34+
"observers",
35+
"asynchronous",
36+
"asynchronous programming",
37+
"asynchronous-programming",
2538
]
2639
classifiers = [
2740
"Intended Audience :: Developers",

src/pyventus/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""A powerful Python library for event-driven and reactive programming."""
22

3-
__version__ = "0.6.0"
3+
__version__ = "0.7.0"
44

55
from .core.exceptions import PyventusException, PyventusImportException
66

tests/pyventus/reactive/subscribers/test_subscriber.py

+20-4
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,35 @@ class TestSubscriber:
1414
# Test Cases for creation
1515
# =================================
1616

17-
def test_creation_with_valid_input(self) -> None:
17+
@pytest.mark.parametrize(
18+
["next_callback", "error_callback", "complete_callback"],
19+
[
20+
(CallableMock.Sync(), None, None),
21+
(None, CallableMock.Async(), None),
22+
(None, None, CallableMock.Async()),
23+
(CallableMock.Async(), None, CallableMock.Sync()),
24+
(CallableMock.Async(), CallableMock.Sync(), None),
25+
(None, CallableMock.Sync(), CallableMock.Async()),
26+
],
27+
)
28+
def test_creation_with_valid_input(
29+
self, next_callback: CallableMock.Base, error_callback: CallableMock.Base, complete_callback: CallableMock.Base
30+
) -> None:
1831
# Arrange/Act
1932
subscriber = Subscriber[Any](
2033
teardown_callback=lambda sub: True,
21-
next_callback=lambda val: None,
22-
error_callback=None,
23-
complete_callback=None,
34+
next_callback=next_callback,
35+
error_callback=error_callback,
36+
complete_callback=complete_callback,
2437
force_async=False,
2538
)
2639

2740
# Assert
2841
assert subscriber is not None
2942
assert isinstance(subscriber, Subscriber)
43+
assert subscriber.has_next_callback is bool(next_callback is not None)
44+
assert subscriber.has_error_callback is bool(error_callback is not None)
45+
assert subscriber.has_complete_callback is bool(complete_callback is not None)
3046

3147
# =================================
3248

0 commit comments

Comments
 (0)