A library that wraps many useful tools (linters, analysers, etc) to keep Python code clean, secure, well-documented and optimised.
Project description
tomte
A library that wraps many useful tools (linters, analysers, etc) to keep Python code clean, secure, well-documented and optimised.
Essentially does nothing else but pinning multiple packages to compatible versions, for consistency across many projects and simplicity of use.
Extremely (!) opinionated by design!
Wrapped tools
- black
- bandit
- isort
- flake8
- mypy
- safety
- darglint
- vulture
- pylint
- docs (various mkdocs libraries)
- tests (various pytest libraries)
- tox
- liccheck
To install, for instance black, simply specify tomte[black]==VERSION, where VERSION is the latest version, and then use black CLI as required.
Shipped configs
Since 0.7.0, tomte ships canonical linter configurations as packaged resources. Reach them from a tox env (or any tooling) via:
from tomte.configs import PYLINTRC, MYPY_INI, ISORT_CFG, FLAKE8_CFG, DARGLINT_CFG, BANDIT_YAML, SAFETY_POLICY
Each constant is a pathlib.Path to the file inside the installed
wheel. Typical use:
[testenv:pylint]
commands = pylint --rcfile={envsitepackagesdir}/tomte/configs/pylintrc <paths>
tomte tox runtime wrapper
Since 0.7.0, tomte tox renders the canonical tox.ini (shipped at
tomte/configs/tox.ini) at runtime, reading per-repo identity from
[tool.tomte] in the consumer's pyproject.toml and a slim
[tomte-extensions] section in their local tox.ini. The rendered file
is ephemeral — nothing generated lives on disk between runs. Invoke as a
drop-in replacement: tomte tox -e <env>.
Per-repo settings in [tool.tomte] (TOML in pyproject.toml):
packages_paths, pytest_targets[_extra|_exclude],
service_specific_packages[_extra], service_public_id,
known_first_party, open_autonomy_version, open_aea_version,
check_handlers_ignores, check_dependencies_extra_excludes,
upstream_pins, gitleaks_extra_paths, gitleaks_extra_regexes,
tomte_dep_pin. Most defaults auto-derive from packages.json.
Per-repo settings in [tomte-extensions] (raw INI in local tox.ini,
for things that don't fit cleanly in TOML): extra_deps,
extra_pylint_disables, extra_pylint_ignored_modules,
extra_testenvs — multi-line continuation values that configparser
preserves verbatim.
Scope. tomte tox targets AEA agent repos — the homogeneous fleet
that ships packages/valory/ skills + agents + services and bootstraps
via the autonomy CLI. Framework repos (open-aea, open-autonomy)
keep their own hand-written tox.ini and consume the canonical configs
directly (from tomte.configs import PYLINTRC, MYPY_INI, …) via
--rcfile= / --config= flags.
Pytest plugin (opt-in)
Tomte declares a pytest11 entry-point plugin in pyproject.toml that
ships fleet-canonical pytest defaults: the integration and e2e
markers, plus an ignore::DeprecationWarning:aea.*: filter. Pytest
auto-loads pytest11 plugins, so the plugin module is imported in any
environment where tomte is installed — but the plugin is silent by
default; it registers nothing unless the consumer opts in:
# tox.ini (or pyproject.toml [tool.pytest.ini_options], or pytest.ini)
[pytest]
tomte_defaults = true
Truthy spellings: true, 1, yes, on (case-insensitive). Without
opt-in, non-fleet tomte[black] / tomte[mypy] consumers see no
config injection.
Development:
Install deps:
Install poetry. Install development dependencies before running maintenance scripts:
poetry install --with dev
Upgrading versions
Use the script directly (fully automated, no manual pin editing):
- Run
poetry run python bump_to_latest.py
This command automatically:
- Resolves latest compatible versions for
<4,>=3.10support. - Applies strict
==pins with Poetry. - Falls back to the highest resolver-compatible version when the absolute latest conflicts.
- Bumps package version (patch by default) in
pyproject.toml,tomte/__init__.py, andtests/test_tomte.py. - Regenerates
poetry.lock.
Useful flags:
--dry-run--bump-version none|patch|minor|major--no-lock
Name
"A tomte and his son enjoying quiet company of the cat. Illustration by Rolf Lidberg."
Release guide:
Finish edits and ensure dev dependencies are installed (poetry install --with dev), then run poetry run python bump_to_latest.py, then poetry run pytest -q, then poetry build, then rm -rf dist, then poetry publish --build --username=<username> --password=<password>.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tomte-0.7.1.tar.gz.
File metadata
- Download URL: tomte-0.7.1.tar.gz
- Upload date:
- Size: 45.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ecc2e8295de31f4bebc52c0607fd08047e99d90ab5256c297a60e4f7a3a67e3
|
|
| MD5 |
1eea7f4bad77f73dc6ec09cb5617c60b
|
|
| BLAKE2b-256 |
835cb793c8a8144554c12f53a12bf84e30341718a4fdc1275666e3f13b914885
|
File details
Details for the file tomte-0.7.1-py3-none-any.whl.
File metadata
- Download URL: tomte-0.7.1-py3-none-any.whl
- Upload date:
- Size: 53.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d77a40be635191bf1ae8ff5428071a4c296e872b759e44e2ea9bafb10171e5d
|
|
| MD5 |
041c1dd87d8945c615975ea49993a350
|
|
| BLAKE2b-256 |
9005effb979d322af6e69245c22b7f0ecfb3e34a9a0b03f111e2b10162f26b12
|