Skip to main content

A modular toolbox to support your Python development workflow

Project description

project-toolbox

A modular toolbox to support your Python development workflow.

  • project-toolbox provides the box of the toolbox as a unique command: t.
  • Tools are selected/added to the box at the project level.

Features

  • one command (t) gathering all tools
    • prevent cluttering command namespace
    • completion even for tools installed in dedicated environment
  • toolboxs are plugins
    • each project can select its own set of plugins
    • a plugin can be public (pypi) or shipped with the project
  • tool calls are automatically embeded (eg uv run ...)
  • tools are click commands

Getting started

Install the main command globally:

uv tool install project-toolbox

Enable completion (bash) by adding the following to the end of your ~/.bashrc:

eval "$(_T_COMPLETE=bash_source t)"

Instructions for completion with other shells can be found here.

Manage the toolbox:

# show all 'self' subcommands
t self
# add a toolbox to current project
t self install <toolbox>

Read carefully crafted manuals guiding you through the workflow:

# show all 'manual' subcommands
t manual

Use the toolbox:

# show all commands
t
# use a tool
t <command> <arg1> <arg2> ...

Filling the toolbox with tools

Adding plugins to a project

Your toolbox need to be filled with tools. The toolbox content is selected at project level and may differ between projects. Use t self install to add a published toolbox to the project.

If your toolbox is not published, it can be shipped whithin the project repo and added locally:

uv add --dev path/to/plugin-package/

Writing plugins

A project-toolbox plugin is a python package that defines some click commands and registers them to the dedicated entry points. This is very similar to the usual way of creating console scripts, only the pyproject.toml entry changes from [project.scripts] to [project.entry-points.'project_toolbox'].

# pyproject.toml
[project.entry-points.'project_toolbox']
tool_name_1 = "package.module_1:object_1"
tool_name_2 = "package.module_2:object_2"

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

project_toolbox-0.4.5.tar.gz (3.0 kB view details)

Uploaded Source

Built Distribution

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

project_toolbox-0.4.5-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file project_toolbox-0.4.5.tar.gz.

File metadata

  • Download URL: project_toolbox-0.4.5.tar.gz
  • Upload date:
  • Size: 3.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Alpine Linux","version":"3.23.3","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for project_toolbox-0.4.5.tar.gz
Algorithm Hash digest
SHA256 48ca929a10653fbe8fcfbc3dbf7b5824fbea9d836dcabc60f6388dc0e5cf6d6b
MD5 5f8aa5270dcb389391977dc3f0a6f04b
BLAKE2b-256 413eaaad84e14e7c59b5e5427210c63e1c9057b326ef17ecf79c0eacbb627b97

See more details on using hashes here.

File details

Details for the file project_toolbox-0.4.5-py3-none-any.whl.

File metadata

  • Download URL: project_toolbox-0.4.5-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Alpine Linux","version":"3.23.3","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for project_toolbox-0.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f559e91adb6bbc9b052a785c89043c379b6de164da46da6bfaba3cfb7b71ba3f
MD5 31a6a4271e61bbcca1b8bba2d40179a9
BLAKE2b-256 3fa02160c7f04daf248a5b80e8140d2b83d4fe9348370d298551d74eb2bd25c2

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