Release Notes
v0.6.0 October 19, 2024¶
Added¶
- Added support for Python
3.13, ensuring compatibility with the latest features and improvements. - Added
mikepackage integration tomkdocs-materialfor documentation versioning. This allows users to access previous documentation alongside new changes, ensuring that legacy content remains intact for reference. Additionally, a newdevdocumentation has been introduced to showcase the current development of the package, including unreleased features and updates.
Changed¶
- Updated documentation links from absolute to relative paths to prevent broken links and avoid redirecting users to incorrect documentation versions, ensuring consistent navigation throughout the docs.
- Upgraded the
download-artifactandcacheactions tov4in thepublish-to-pypi.ymlworkflow. - Updated the
deploy-docs.ymlworkflow to deploy bothdevand versioned documentation usingmike's CLI commands.
Fixed¶
- Fixed broken links to non-versioned documentation by adding a custom
404.htmlpage togh-pages, which redirects users to the first version of the documentation when no version is specified, or to a new custom 404 page with helpful suggestions.
v0.5.0 April 9, 2024¶
Breaking Changes¶
- Removed the base
Eventclass due to improved event semantics and unnecessary redundancy. - Renamed the
get_event_registry()method ofEventLinkertoget_registry(). - Renamed the
__event_registryinner property ofEventLinkerto__registry. - Renamed the
get_events_by_handler()method ofEventLinkertoget_events_by_event_handler(). - Renamed the
get_handlers_by_events()method ofEventLinkertoget_event_handlers_by_events(). - Renamed the protected method
_executor_callback()of theExecutorEventEmitterto_callback(). - Renamed the task name of
CeleryEventEmitterfrom_executortopyventus_executorto avoid collisions with other task names.
Added¶
- Added
__slots__toEventLinkageWrapperclass for more efficient memory usage. - Extended support for subscription and emission of any
dataclassobject, removing the limitation of onlyEventsubclasses. - Added the
force_asyncparameter to theEventHandlerclass andEventLinkersubscription methods to be able to optimize the execution ofsynccallbacks based on their workload. - Introduced a new event semantic where the Python
...(Ellipsis) is now used to refer to all events on a subscription, like theonAny()method but with a Pythonic syntax. - Added the
mkdocs-material social cardsplugin, which provides a preview of the documentation content when shared on social media platforms.
Changed¶
- Standardized the order of static methods, class methods, and instance methods for improved readability.
- Applied Python best practices to optimize the methods within the
EventLinkerandEventEmitterclasses. - Improved validation of variable instances in the event emitters,
EventLinker, andEventHandler. - Updated and improved the test suite to ensure accurate validation and consistency.
- Enabled creation date for the mkdocs
git-revision-date-localizedplugin. - Replaced the mkdocs
git-authorsplugin with thegit-committersplugin. - Updated and improved the package description.
- Updated the tutorial section to incorporate recent changes.
- Enhanced the documentation index page and README file with new examples and better descriptions to showcase the unique features of Pyventus.
Removed¶
- Removed the default value of the
onceflag in theEventHandlerclass.
Fixed¶
- Fixed and standardized all package docstrings and code comments for consistency and clarity.
- Addressed minor errors and details in the documentation.
v0.4.1 January 30, 2024¶
Changed¶
- Optimized the size of the source distribution (sdist) build by including only essential files and directories, such
as the
/srcand/testsdirectories, as well as the following files:.gitignore,pyproject.toml,CITATION.cff,README, andLICENSE. - Refactored documentation dependencies into an optional dependency called
docs. - Updated the
deploy-docs.ymlGitHub workflow to leverage the new optional dependencydocs. - Updated the
EventEmissionclass with the@finaldecorator from the typing module, indicating that it is meant for internal use only and should not be subclassed.
Fixed¶
- Addressed minor errors and details in the documentation.
v0.4.0 January 6, 2024¶
Added¶
- Added
FastAPIEventEmitterimplementation to facilitate seamless integration with theFastAPIframework. - Added tests for
FastAPIEventEmitterto validate its behavior and ensure proper operation. - Added documentation for
FastAPIEventEmitter, including tutorials and API references. - Integrated the
Coveralls.ioworkflow to generate coverage badge and reports. - Included coverage badges on the main documentation page and the readme file.
- Introduced permalinks within the documentation for easy navigation.
Changed¶
- Updated
pyproject.tomlwith the new optional dependency forFastAPIintegration.
Fixed¶
- Addressed minor errors in the Pyventus documentation to improve accuracy and clarity.
v0.3.0 December 29, 2023¶
Breaking Changes¶
- Introduced
EventEmissionobject to encapsulate the processing of event emissions. This changes the_execute()method ofEventEmitterbut provides a cleaner, more scalable, and efficient approach. - Renamed all debug flags from
debug_modetodebugfor enhanced clarity and consistency. - Renamed EventEmitter's
_execute()method to_process()to better reflect its purpose of processing event emissions.
Added¶
- Added
CeleryEventEmitterimplementation to leverage the Celery distributed task queue for event handling. - Added tests for
CeleryEventEmitterto validate its behavior and ensure proper operation. - Added documentation for
CeleryEventEmitter, including tutorials and API references.
Changed¶
- Restructured the documentation for event emitters tutorials and API references to improve organization and clarity.
- Updated the
contributing.mdpage to include the Troubleshooting Hatch Environment Errors section. - Updated the
EventEmitterAPI documentation to include theEventEmissionclass reference. - Updated
pyproject.tomlwith the new optional dependency forCeleryintegration. - Updated
mypyignore flags to properly silence specific false positive error codes.
Fixed¶
- Addressed minor errors in the Pyventus documentation.
v0.2.1 December 17, 2023¶
Changed¶
- Updated docstring links throughout the package to refer to the official documentation.
- Updated the
RQEventEmitterAPI Reference and Tutorials docs to reflect the new optional import.
Fixed¶
- Resolved the issue where the
RQEventEmitterclass was automatically imported in the main package, requiring the installation of its optional dependency to use any of the package's core functionalities. It is now fully optional. - Fixed issues with invalid links in the documentation.
v0.2.0 December 16, 2023¶
Added¶
- Introduced the
publish to PyPIworkflow, automating the uploading of package builds when new releases are created. - Added the
mkdocs-git-authorsplugin to display git authors of a markdown page in the documentation. - Added badges to the main page of the documentation as well as the readme file.
- Added a code of conduct for the project, using the Contributor Covenant v2.1.
- Included a
CITATION.cfffile to facilitate academic citations.
Changed¶
- Renamed the
tests.ymlworkflow torun-tests.yml. - Updated the
deploy-docs.ymlworkflow with themkdocs-git-authorsplugin dependency. - Modified the
mkdocs.ymlconfig file by adding thesite_urlandsite_authorproperties. - Updated the
pyproject.tomlfile with themkdocs-git-authorsplugin dependency and python package keywords.
Fixed¶
- Fixed the python version in the
deploy-docs.ymlworkflow. - Resolved issues with relative links in the documentation.
v0.1.0 December 15, 2023¶
Initial Implementation¶
This release introduces Pyventus v0.1.0, a modern and robust Python package for event-driven programming. Pyventus provides developers with a comprehensive suite of tools and utilities to define, emit, and orchestrate events. It empowers developers to build scalable, extensible, and loosely-coupled event-driven applications.
- Implementation Details: The first implementation includes all the core functionalities of the package, encompassing events, event linkers, event emitters, event handlers, and more.
- Testing and Coverage: This release includes a test suite that verifies the correctness of the package implementation. It also integrates code coverage, achieving 100% test coverage. The tests are configured to run automatically via GitHub Actions on both push and pull requests to the master branch.
- Formatter and Lint Configuration: A formatter and lint configuration have been added to the project. This ensures consistent code style, maintainability, and adherence to the established coding standards defined in the project documentation.
- Documentation: Additionally, this release includes comprehensive documentation for the package. The documentation covers the main page, a detailed getting started guide, tutorials, API reference, and release notes.