Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyprj-0.6.1.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyprj-0.6.1-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file pyprj-0.6.1.tar.gz.

File metadata

  • Download URL: pyprj-0.6.1.tar.gz
  • Upload date:
  • Size: 15.0 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

Hashes for pyprj-0.6.1.tar.gz
Algorithm Hash digest
SHA256 ba99560ab85b2af125e43584f79d8db0691aae12d78da75d36afa5f5a9a6adb5
MD5 8c5d5ae94086b1df9a2a25e2ec551cc9
BLAKE2b-256 9d533782973491e3786069f74f7e463b91bae42a9169672a5ef2c410ab4c1e4f

See more details on using hashes here.

File details

Details for the file pyprj-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: pyprj-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 23.0 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

Hashes for pyprj-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c17211c9de73cbba61213c5490158fb3324bb95aebef4c44dabcdf99f1fec0cb
MD5 20a0de4e89fd53e295d1df4ede69edb9
BLAKE2b-256 4fb58dcbb76dcaf0a642186416d4d1e50c5765331233af5b6c9d0bcf93d8d499

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page