pipx uses nox for development, continuous integration testing, and automation.
pipx uses pipx to develop -- it's recursive! But don't worry, it's not that scary. You'll be up in running in no time. You'll also need
make installed. If you don't have
make, you can look at pipx's
makefile to see the what the make targets correspond to).
pipx, first clone the repository.
Next, run this command which will use the amazing nox automation framework to set up a virtual environment for each Python version pipx tests against.
A virtual environment with required dependencies is now sandboxed and ready to go in
.nox/develop-3.6 for Python 3.6. Any changes you make to pipx source code will be reflected immediately in the virtual environment inside
So how do you run with that environment?
You can either enter the virtual environment with
source .nox/develop-3.6/bin/activate and run
pipx, or you can run the development
pipx directly with
.nox/develop-3.6/bin/pipx. Either way, it's running directly from the source code you just cloned and will reflect any changes you make. In one case the command is a bit longer but your environment isn't modified. In the other, you can type
pipx but you have to enter the virtual environment. Whichever you prefer will work fine. Go ahead and make your changes now.
Testing pipx locally
pipx uses the test automation framework nox. Test definitions live in
Run tests by exiting any virtual environment, then running
Testing pipx on Continuous Intergration builds
When you push a new git branch, tests will automatically be run against your code as defined in
Documentation has a couple steps to it, both of which are automated. The first step is to generate markdown files from templates. See the
templates directory. The generated files will have a header at the top indicating they were generated and shouldn't be manually modified. Modify the templates, not the generated markdown files.
The second is to compile the markdown files in
Both of these steps are done in a single build command:
To preview changes, including live reloading, open another terminal and run
If you make changes to the pipx cli api or any template, regenerate the
.md files in the
Publishing Doc Changes to GitHub pages
To create a new release
* make sure the changelog is updated
* update the version of pipx defined in
and don't forget to publish updated documenation.