Lookup and instantiate classes with style.
Project description
Class Resolver
Lookup and instantiate classes with style.
💪 Getting Started
from class_resolver import Resolver
from dataclasses import dataclass
class Base: pass
@dataclass
class A(Base):
name: str
@dataclass
class B(Base):
name: str
# Index
resolver = Resolver([A, B], base=Base)
# Lookup
assert A == resolver.lookup('A')
# Instantiate with a dictionary
assert A(name='hi') == resolver.make('A', {'name': 'hi'})
# Instantiate with kwargs
assert A(name='hi') == resolver.make('A', name='hi')
# A pre-instantiated class will simply be passed through
assert A(name='hi') == resolver.make(A(name='hi'))
⬇️ Installation
The most recent release can be installed from PyPI with:
$ pip install class_resolver
The most recent code and data can be installed directly from GitHub with:
$ pip install git+https://github.com/cthoyt/class-resolver.git
To install in development mode, use the following:
$ git clone git+https://github.com/cthoyt/class-resolver.git
$ cd class-resolver
$ pip install -e .
🙏 Contributing
Contributions, whether filing an issue, making a pull request, or forking, are appreciated. See CONTRIBUTING.rst for more information on getting involved.
👋 Attribution
⚖️ License
The code in this package is licensed under the MIT License.
🍪 Cookiecutter
This package was created with @audreyfeldroy's cookiecutter package using @cthoyt's cookiecutter-snekpack template.
🛠️ For Developers
See developer instructions
The final section of the README is for if you want to get involved by making a code contribution.
❓ Testing
After cloning the repository and installing tox
with pip install tox
, the unit tests in the tests/
folder can be
run reproducibly with:
$ tox
Additionally, these tests are automatically re-run with each commit in a GitHub Action.
📦 Making a Release
After installing the package in development mode and installing
tox
with pip install tox
, the commands for making a new release are contained within the finish
environment
in tox.ini
. Run the following from the shell:
$ tox -e finish
This script does the following:
- Uses BumpVersion to switch the version number in the
setup.cfg
andsrc/{{cookiecutter.package_name}}/version.py
to not have the-dev
suffix - Packages the code in both a tar archive and a wheel
- Uploads to PyPI using
twine
. Be sure to have a.pypirc
file configured to avoid the need for manual input at this step - Push to GitHub. You'll need to make a release going with the commit where the version was bumped.
- Bump the version to the next patch. If you made big changes and want to bump the version by minor, you can
use
tox -e bumpversion minor
after.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for class_resolver-0.2.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7636ae1d9ef79b76c372b1ce7061ee431ac32f32e174c1acfd466ebe19c8a9e |
|
MD5 | 9d0f549e7b72518f5a0338caf5642240 |
|
BLAKE2b-256 | 0fd8f614a607001373909b21bc6756e7b7749938132ccf0a1b561659b5313469 |