An opinionated CLI tool to manage python projects.
Project description
PyPrj
An opinionated CLI tool to manage python projects.
Makes use of:
- VS Code as IDE.
- uv as package manager.
- pytest as testing framework.
- black to format python files.
- Prettier to format markdown files.
- Sphinx framework to write documentation.
- MyST parser extension to write sphinx docs with markdown.
- Furo as sphinx theme.
- Jupyter to write jupyter notebooks that are converted into markdown.
- taskipy to run automated tasks.
- Read the Docs as pre-set option to host documentation.
Installation
A good way to install CLI tools made with python is using
pipx.
pipx install pyprj
With pipx, the tool is globally installed in an isolated environment.
Usage
Look at the help messages from the CLI (using --help). Some of the messages
are bellow.
Main command
> pyprj --help
usage: pyprj [-h] [-v] {init,test,docs,build,version,publish} ...
A CLI to manage python projects with predefined tools.
options:
-h, --help Show this help message and exit.
-v, --version show program's version number and exit
subcommands:
{init,test,docs,build,version,publish}
init Create a new project for a python package.
test Run task 'test' inside the project.
docs Manage documentation of the project.
build Build package with uv
version Update or show project version
publish Publish package to PyPI
init subcommand
> pyprj init --help
usage: pyprj init [-h] [-n <name>] [-p <python>] [-b <black-line-length>]
Create a new project for a python package.
options:
-h, --help Show this help message and exit.
-n <name>, --name <name>
The name of the project. If `None`, use the current
directory's name.
Defaults to 'None'.
-p <python>, --python <python>
The Python interpreter to use to determine the minimum
supported Python version.
Defaults to '3.12'.
-b <black-line-length>, --black-line-length <black-line-length>
Line length parameter to use with `black`.
Defaults to '128'.
test subcommand
> pyprj test --help
usage: pyprj test [-h]
Run task 'test' inside the project.
This command only runs the task 'test' inside the project.
Tasks use the tool 'taskipy'. Currently are run with the tool 'uv'.
The task 'test' runs tests with 'pytest' in folder './tests'.
options:
-h, --help Show this help message and exit.
docs subcommand
> pyprj docs --help
usage: pyprj docs [-h] {init,nbex,nbmd,modm} ...
Manage documentation of the project.
If called without subcommands, runs the task 'docs' inside the project.
Tasks use the tool 'taskipy'. Currently are run with the tool 'uv'.
The task 'docs' makes docs with 'sphinx' in folder './doc/sphinx'.
options:
-h, --help Show this help message and exit.
subcommands:
{init,nbex,nbmd,modm}
init Initialize documentation folder with packages.
nbex Process jupyter (nb) files to generate example files of code.
nbmd Process jupyter (nb) files to generate markdown (md) files.
modm Process documentation in modules.
docs/init subcommand
> pyprj docs init --help
usage: pyprj docs init [-h]
Initialize documentation folder with packages.
options:
-h, --help Show this help message and exit.
docs/nbmd subcommand
> pyprj docs nbmd --help
usage: pyprj docs nbmd [-h] [-k {tutorial,function,class}] [-n] [-r <pattern>]
[filepath ...]
Process jupyter (nb) files to generate markdown (md) files.
positional arguments:
filepath The filepath or filepaths of jupyter notebook (`.ipynb`) to convert
to markdown. If `None` (default), process all notebook files from
the current directory.
options:
-h, --help Show this help message and exit.
-k {tutorial,function,class}, --kind {tutorial,function,class}
The kind of the notebook files documentation to convert.
Defaults to 'tutorial'.
-n, --no-prettier Whether to not pos-process the generate .md files with
'prettier', if 'prettier' is available.
Defaults to 'False'.
-r <pattern>, --remove-pattern-shell-files <pattern>
Pattern to remove in shell command line cells. Aiming to
remove example command line folders from path.
Defaults to 'examples/'.
docs/nbex subcommand
> pyprj docs nbex --help
usage: pyprj docs nbex [-h] [-c] [-d <dest-directory>] [-o <output-suffix>]
[filepath ...]
Process jupyter (nb) files to generate example files of code,
creating files from the cells starting with '%%python'
positional arguments:
filepath The filepath or filepaths of jupyter notebook (`.ipynb`) to
generate examples. If `None` (default), process all notebook
files from the current directory.
options:
-h, --help Show this help message and exit.
-c, --change-shell-cells
Whether to edit the following shell cells, after the
example cells.
Defaults to 'False'.
-d <dest-directory>, --dest-directory <dest-directory>
Directory of the resulting examples files.
Defaults to 'examples'.
-o <output-suffix>, --output-suffix <output-suffix>
If editing original notebook file
(`change_shell_cells=True`) add this
suffix to the resulting file. Used for debbuging
purposes, to not overwrite
the original file (which is done with the default
value).
Defaults to ''.
docs/modm subcommand
> pyprj docs modm --help
usage: pyprj docs modm [-h] [filepath ...]
Process documentation in modules.
positional arguments:
filepath The filepath or filepaths of modules (.py) to process.
If `None` (default), process all python files from the current directory.
options:
-h, --help Show this help message and exit.
build subcommand
> pyprj build --help
usage: pyprj build [-h]
Run task 'build' inside the project.
This command only runs the task 'build' inside the project.
Tasks use the tool 'taskipy'. Currently are run with the tool 'uv'.
The task 'build' builds the package with 'uv' in root folder.
options:
-h, --help Show this help message and exit.
version subcommand
> pyprj version --help
usage: pyprj version [-h] [{major,minor,patch}]
Update or show project version
If called without 'semver' options, only show the project version.
positional arguments:
{major,minor,patch}
options:
-h, --help Show this help message and exit.
publish subcommand
> pyprj publish --help
usage: pyprj publish [-h]
Publish package to PyPI
Uses token from file '.vscode/pyprj.json'
options:
-h, --help Show this help message and exit.
Project details
Release history Release notifications | RSS feed
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 pyprj-0.5.0.tar.gz.
File metadata
- Download URL: pyprj-0.5.0.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3d25568904cfddada87242ee058582db3fbbd42181e6d1cfbc646d6a5b78c78
|
|
| MD5 |
838abcaf2c26dbdebda004c477a279fb
|
|
| BLAKE2b-256 |
64c1f8ba76c74b5099cf6d9c16f767ff7d9af5e701d3a53fc8fa772d7e1b97f9
|
File details
Details for the file pyprj-0.5.0-py3-none-any.whl.
File metadata
- Download URL: pyprj-0.5.0-py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6771e344ccf49e8983b23f35442efb6b209175b8fc464c1fde7fbb7b3cb65ecf
|
|
| MD5 |
462eb46204524e10272410e0191e6ab5
|
|
| BLAKE2b-256 |
e7be643dcc93aa053d81e5410be1158b15ef77e443af0d1ae09ac4ac0ffa47ba
|