EEST Dependency Management and Packaging¶
EEST uses uv
to manage and pin its dependencies.
Managing Dependencies¶
We aim to provide specific version specifiers for each of our direct and extra dependencies.
Packages should be managed via uv
Dependencies should be managed using uv
on the command-line to ensure that version compatibility is ensured across all dependencies and that uv.lock
is updated as required.
Adding/modifying direct dependencies¶
These are packages listed in the project's direct dependencies, i.e., in pyproject.toml
[project]
section:
[project]
...
dependencies = [
"click>=8.1.0,<9",
...
"pytest-regex>=0.2.0,<0.3",
]
or, for source package dependencies (directly installed via a git+
specifier from Github), in the [tool.uv.sources]
section:
[tool.uv.sources]
ethereum-spec-evm-resolver = { git = "https://github.com/petertdavies/ethereum-spec-evm-resolver", rev = \
...
Example: Updating direct dependencies
Example of a package dependency update:
uv add "requests>=2.31,<2.33"
Example of a source dependency update:
uv add "ethereum-spec-evm-resolver @ git+https://github.com/petertdavies/ethereum-spec-evm-resolver@623ac4565025e72b65f45b926da2a3552041b469"
Adding/modifying optional dependencies¶
These are packages in the optional "extra" groups: lint
, docs
, test
, defined in the pyproject.toml
:
[project.optional-dependencies]
test = ["pytest-cov>=4.1.0,<5"]
lint = [
"ruff==0.9.4",
"mypy>=1.15.0,<1.16",
"types-requests>=2.31,<2.33",
]
docs = [
...
]
Example: Updating an optional dependency
uv add --optional lint "types-requests>=2.31,<2.33"