https://github.com/gaphor/generic
Generic programming library for Python
https://github.com/gaphor/generic
generic generic-programming python
Last synced: 4 months ago
JSON representation
Generic programming library for Python
- Host: GitHub
- URL: https://github.com/gaphor/generic
- Owner: gaphor
- Created: 2010-07-15T07:49:24.000Z (over 15 years ago)
- Default Branch: main
- Last Pushed: 2025-09-21T10:22:50.000Z (4 months ago)
- Last Synced: 2025-09-21T11:41:39.920Z (4 months ago)
- Topics: generic, generic-programming, python
- Language: Python
- Homepage: http://generic.readthedocs.org/
- Size: 1.3 MB
- Stars: 61
- Watchers: 4
- Forks: 9
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSES/BSD-3-Clause.txt
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# Generic programming library for Python
[](https://github.com/gaphor/generic/actions)
[](https://qlty.sh/gh/gaphor/projects/generic)
[](https://qlty.sh/gh/gaphor/projects/generic)
[](https://generic.readthedocs.io/en/latest/?badge=latest)
[](https://app.element.io/#/room/#gaphor_Lobby:gitter.im)
[](https://securityscorecards.dev/viewer/?platform=github.com&org=gaphor&repo=generic)
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)
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).
# Changes
## 1.1.6
- Refactoring
## 1.1.5
- Fix regression with super type dispatching
- Dependency updates
## 1.1.4
- Dependency updates
## 1.1.3
- Dependency updates
## 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
## 1.1.1
- Add support for Python 3.11
- Move mypy configuration to pyproject.toml
- Enable automatic release of new versions with CI
## 1.1.0
- Rename `master` branch to `main`
- `generic.event.Manager` executes all handlers and throws an `ExceptionGroup` in case of errors
## 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
- Migrate to GitHub Actions
## 1.0.0
- Updated documentation on [Readthedocs](https://generic.readthedocs.io)
- Fix `multimethod.otherwise` clause
## 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.