Implements decorator `nested` that adds a parent and children to a dataclass.
nested that adds a parent and children to a dataclass.
Both parent and child class should be decorated with nested.
Example usage of the parent attribute on a nested dataclass:
from dataclasses import dataclass from typing import List from nested_dataclasses import nested @nested @dataclass class TextCount: text: str count: int @property def fraction(self): return self.count / self.parent.total_count @nested @dataclass class TextCounts: counts: List[TextCount] @property def total_count(self): return sum(count.count for count in self.counts) hello = TextCount("hello", 3) hi = TextCount("hi", 1) counts = TextCounts([hello, hi]) counts.validate() print(counts.counts.fraction) print(counts.children) print(counts.to_dict())
We can be installed with:
pip install nested-dataclasses
Development installation of this project itself
We're installed with pipenv, a handy wrapper
around pip and virtualenv. Install that first with
pip install pipenv. Then run:
PIPENV_VENV_IN_PROJECT=1 pipenv install --python 3.8 --dev
In case you do not have python 3.8 on your machine, install python using pyenv and try the previous command again. See install pyenv below for instructions.
In order to get nicely formatted python files without having to spend manual work on it, run the following command periodically:
pipenv run black nested_dataclasses
Run the tests regularly. This also checks with pyflakes, black and it reports coverage. Pure luxury:
pipenv run pytest
If you need a new dependency (like
requests), add it in
install_requires. Afterwards, run install again to actually install your
pipenv install --dev
Pipenv installs zest.releaser which allows you to release the package to a git(hub) repo. It has a
fullrelease command that asks you a few questions, which you all respond to with
pipenv run fullrelease
We can install pyenv by running the following commands:
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
Also make sure to put pyenv in your
.zshrc as instructed by the previous commands.
Changelog of nested-dataclasses
Initial project structure created with cookiecutter and https://github.com/PDOK/cookiecutter-python-base
nesteddecorator uses ValidationMixin and ToDictMixin.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size nested_dataclasses-0.1-py3-none-any.whl (6.3 kB)||File type Wheel||Python version py3||Upload date||Hashes View|
|Filename, size nested-dataclasses-0.1.tar.gz (5.4 kB)||File type Source||Python version None||Upload date||Hashes View|
Hashes for nested_dataclasses-0.1-py3-none-any.whl