2019-11-08 13:47:37 +01:00
# Generic programming library for Python
2019-11-23 15:00:25 -05:00
[![Build state ](https://github.com/gaphor/generic/workflows/build/badge.svg )](https://github.com/gaphor/generic/actions)
2019-11-09 16:35:21 +01:00
[![Maintainability ](https://api.codeclimate.com/v1/badges/c7be2d28400687b1375a/maintainability )](https://codeclimate.com/github/gaphor/generic/maintainability)
[![Test Coverage ](https://api.codeclimate.com/v1/badges/c7be2d28400687b1375a/test_coverage )](https://codeclimate.com/github/gaphor/generic/test_coverage)
2019-11-17 23:28:57 +01:00
[![Documentation Status ](https://readthedocs.org/projects/generic/badge/?version=latest )](https://generic.readthedocs.io/en/latest/?badge=latest)
2023-06-17 22:09:42 -04:00
[![Matrix ](https://img.shields.io/badge/chat-on%20Matrix-success )](https://app.element.io/#/room/#gaphor_Lobby:gitter .im)
[![OpenSSF Scorecard ](https://api.securityscorecards.dev/projects/github.com/gaphor/generic/badge )](https://securityscorecards.dev/viewer/?platform=github.com& org=gaphor& repo=generic)
2019-11-09 16:35:21 +01:00
2019-11-09 10:33:41 +01:00
Generic is a library for [Generic programming ](https://en.wikipedia.org/wiki/Generic_programming ), also known as [Multiple dispatch ](https://en.wikipedia.org/wiki/Multiple_dispatch ).
The Generic library supports:
* multi-dispatch: like `functools.singledispatch` , but for more than one parameter
* multi-methods: multi-dispatch, but for methods
* event dispatching: based on a hierarchical event structure (event objects)
2019-11-08 13:47:37 +01:00
You can read
[documentation ](http://generic.readthedocs.org/en/latest/index.html ) hosted at
excellent readthedocs.org project. Development takes place on
[github ](http://github.com/gaphor/generic ).
2019-11-09 10:33:41 +01:00
# Changes
2024-02-03 16:47:15 +01:00
## 1.1.3
- Dependency updates
2023-07-15 13:56:08 -04:00
## 1.1.2
- Replace print statements with logging
- Enable trusted publisher for PyPI
- Create Security Policy
- Update LICENSE to BSD 3-Clause
- Add support for Python 3.12
- Simplify build: drop tox
- Update documentation theme to Furo
- Switch linting to ruff
2022-11-20 14:37:07 -05:00
## 1.1.1
- Add support for Python 3.11
- Move mypy configuration to pyproject.toml
- Enable automatic release of new versions with CI
2022-05-08 23:26:34 +02:00
## 1.1.0
- Rename `master` branch to `main`
- `generic.event.Manager` executes all handlers and throws an `ExceptionGroup` in case of errors
2021-10-24 21:50:45 -04:00
## 1.0.1
- Add Support for Python 3.10, Drop Support for Python 3.7
- Enable Pre-commit Hooks for isort, toml, yaml, pyupgrade, docformatter, and flake8
2021-10-24 21:56:55 -04:00
- Migrate to GitHub Actions
2021-10-24 21:50:45 -04:00
2019-11-18 21:51:17 +01:00
## 1.0.0
- Updated documentation on [Readthedocs ](https://generic.readthedocs.io )
- Fix `multimethod.otherwise` clause
2019-11-09 10:33:41 +01:00
## 1.0.0b1
- Ported the code to Python 3.7, Python 2 is no longer supported
- Multimethods now have their own module
- The interface now mimics `functools.singledispatch` :
- the `when` method has been renamed to `register`
- overriding of methods is no longer possible
## 0.3.1
- Minor fixes in distribution.
## 0.3
- Event management with event inheritance support.
## 0.2
- Methods with multidispatch by object type and positional arguments.
- Override multifunctions with ``override` ` method.
## 0.1
- Registry with simple and type axes.
- Functions with multidispatch by positional arguments.