blob: c970d3cdb0eb237d474cc7d515e1dbead2e1f6c1 [file] [log] [blame] [view]
## Running YAPF on itself
- To run YAPF on all of YAPF:
```bash
$ PYTHONPATH=$PWD/yapf python -m yapf -i -r .
```
- To run YAPF on just the files changed in the current git branch:
```bash
$ PYTHONPATH=$PWD/yapf python -m yapf -i $(git diff --name-only @{upstream})
```
## Testing and building redistributables locally
YAPF uses tox 3 to test against multiple python versions and to build redistributables.
Tox will opportunistically use pyenv environments when available.
To configure pyenv run the following in bash:
```bash
$ xargs -t -n1 pyenv install < .python-version
```
Test against all supported Python versions that are currently installed:
```bash
$ pipx run --spec='tox<4' tox
```
Build and test the sdist and wheel against your default Python environment. The redistributables will be in the `dist` directory.
```bash
$ tox -e bdist_wheel -e sdist
```
## Releasing a new version
1. Install all expected pyenv environements
```bash
$ xargs -t -n1 pyenv install < .python-version
```
1. Run tests against Python 3.7 - 3.11 with
```bash
$ pipx run --spec='tox<4' tox
```
1. Bump version in `pyproject.toml`.
1. Build and test redistributables
```bash
$ pipx run --spec='tox<4' tox -e bdist_wheel -e sdist
```
1. Check that it looks OK.
1. Install it onto a virtualenv,
1. run tests, and
1. run yapf as a tool.
1. Push to PyPI:
```bash
$ pipx run twine upload dist/*
```
1. Test in a clean virtualenv that 'pip install yapf' works with the new
version.
1. Commit the version bump and add tag with:
```bash
$ git tag v$(VERSION_NUM)
$ git push --tags
```