Recreate tox virtual environments when `pyproject.toml`, `setup.cfg` or `setup.py` change.
Project description
tox-recreate
Recreate tox virtual environments when pyproject.toml, setup.cfg or setup.py change.
tox-recreate causes tox to automatically recreate its virtualenvs if your
pyproject.toml, setup.cfg or setup.py files have changed.
Normally tox will automatically trigger a recreation of the venv if the test
deps in tox.ini have changed. But what about your package's requirements in
pyproject.toml, setup.cfg or setup.py? If those change tox won't
automatically recreate the venv, you're expected to run tox --recreate
yourself.
tox-recreate keeps track of the hashes of your pyproject.toml, setup.cfg
and setup.py files and triggers tox to recreate your venvs if they change.
Setting up Your tox-recreate Development Environment
First you'll need to install:
- Git.
On Ubuntu:
sudo apt install git, on macOS:brew install git. - GNU Make.
This is probably already installed, run
make --versionto check. - pyenv. Follow the instructions in pyenv's README to install it. The Homebrew method works best on macOS. The Basic GitHub Checkout method works best on Ubuntu. You don't need to set up pyenv's shell integration ("shims"), you can use pyenv without shims.
Then to set up your development environment:
git clone https://github.com/hypothesis/tox-recreate.git
cd tox-recreate
make help
Releasing a New Version of the Project
-
First, to get PyPI publishing working you need to go to: https://github.com/organizations/hypothesis/settings/secrets/actions/PYPI_TOKEN and add tox-recreate to the
PYPI_TOKENsecret's selected repositories. -
Now that the tox-recreate project has access to the
PYPI_TOKENsecret you can release a new version by just creating a new GitHub release. Publishing a new GitHub release will automatically trigger a GitHub Actions workflow that will build the new version of your Python package and upload it to https://pypi.org/project/tox-recreate.
Changing the Project's Python Versions
To change what versions of Python the project uses:
-
Change the Python versions in the cookiecutter.json file. For example:
"python_versions": "3.10.4, 3.9.12",
-
Re-run the cookiecutter template:
make template
-
Commit everything to git and send a pull request
Changing the Project's Python Dependencies
To change the production dependencies in the setup.cfg file:
-
Change the dependencies in the
.cookiecutter/includes/setuptools/install_requiresfile. If this file doesn't exist yet create it and add some dependencies to it. For example:pyramid sqlalchemy celery -
Re-run the cookiecutter template:
make template
-
Commit everything to git and send a pull request
To change the project's formatting, linting and test dependencies:
-
Change the dependencies in the
.cookiecutter/includes/tox/depsfile. If this file doesn't exist yet create it and add some dependencies to it. Use tox's factor-conditional settings to limit which environment(s) each dependency is used in. For example:lint: flake8, format: autopep8, lint,tests: pytest-faker, -
Re-run the cookiecutter template:
make template
-
Commit everything to git and send a pull request
Testing Manually
To test it manually you can install your local development copy of
tox-recreate into the local development environment of another tox-using
project such as
cookiecutter-pypackage-test:
-
Install a local development copy of
cookiecutter-pypackage-testin a temporary directory:git clone https://github.com/hypothesis/cookiecutter-pypackage-test.git /tmp/cookiecutter-pypackage-test
-
Run
cookiecutter-pypackage-test'smake surecommand to make sure that everything is working and to trigger tox to create its.tox/.toxvenv:make --directory "/tmp/cookiecutter-pypackage-test" sure
-
Uninstall the production copy of
tox-recreatefromcookiecutter-pypackage-test's.tox/.toxvenv:/tmp/cookiecutter-pypackage-test/.tox/.tox/bin/pip uninstall tox-recreate
-
Install your local development copy of tox-recreate into
cookiecutter-pypackage-test's.tox/.toxvenv:/tmp/cookiecutter-pypackage-test/.tox/.tox/bin/pip install -e .
-
Now
cookiecutter-pypackage-testcommands will use your local development copy oftox-recreate:make --directory "/tmp/cookiecutter-pypackage-test" test
Project details
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 tox_recreate-0.0.6.tar.gz.
File metadata
- Download URL: tox_recreate-0.0.6.tar.gz
- Upload date:
- Size: 16.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a1386e95dd6a7bec8d28a39b02a5081c3e867b398fcd30aaa109bf29e829e6a
|
|
| MD5 |
c944a15bfae77104006fbf9ff3547eae
|
|
| BLAKE2b-256 |
75413dc88fba008d371e7beabdc19ca9afe8eef8cdcbd28c0ea57b64884a8495
|
File details
Details for the file tox_recreate-0.0.6-py3-none-any.whl.
File metadata
- Download URL: tox_recreate-0.0.6-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e458bf2af4c8d974759c9b24906f9f505848c6e6ab3d0b20e209172251531f15
|
|
| MD5 |
4bfcc8dd0980cb2ba26fab162c60c794
|
|
| BLAKE2b-256 |
37faaf3f8afcb329a9bbb540cd4ef71ebd5fa0e2ecee11df069f93ce5f9e1e3b
|