Installation

wreck is available at PyPi wreck, and can be installed from pip or source as follows.

python -m pip install wreck
  • Release tarball and wheel that are uploaded to pypi, is created by Github CI/CD . Not the author.

  • How to setup pyenv is explained in Contributing

Configuration

In pyproject.toml, for each venv, add a [[tool.venv]] section.

Sample venv for production and dev tools.

[[tool.wreck.venvs]]
venv_base_path = '.venv'
reqs = [
    'requirements/pip',
    'requirements/pip-tools',
    'requirements/prod',
    'requirements/dev',
    'requirements/manage',
    'requirements/kit',
    'requirements/mypy',
    'requirements/tox',
]

Sample venv for docs

[[tool.wreck.venvs]]
venv_base_path = '.doc/.venv'
reqs = [
    'docs/requirements',
    'docs/pip-tools',
]

These are top most level requirement files without last suffix.

The additional requirements are for use by tox and CI/CD workflows.

  • use posix relative paths. Yes! Windows users too

  • assumes venvs are within the package base folder

  • requirements and constraints files are not required to be in a subfolder, however it’s highly encouraged

package author

Possible corresponding dependency section

[tool.setuptools.dynamic]

dependencies = { file = ['requirements/prod.unlock'] }
optional-dependencies.pip = { file = ['requirements/pip.lock'] }
optional-dependencies.pip_tools = { file = ['requirements/pip-tools.lock'] }
optional-dependencies.dev = { file = ['requirements/dev.lock'] }
optional-dependencies.manage = { file = ['requirements/manage.lock'] }
optional-dependencies.docs = { file = ['docs/requirements.lock'] }

Dependencies last suffix is .unlock

apps author

Possible corresponding dependency section

[tool.setuptools.dynamic]
dependencies = { file = ['requirements/prod.lock'] }
optional-dependencies.pip = { file = ['requirements/pip.lock'] }
optional-dependencies.pip_tools = { file = ['requirements/pip-tools.lock'] }
optional-dependencies.dev = { file = ['requirements/dev.lock'] }
optional-dependencies.manage = { file = ['requirements/manage.lock'] }
optional-dependencies.docs = { file = ['docs/requirements.lock'] }

Dependencies last suffix is .lock