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.6.tar.gz (3.5 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.6-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: project_toolbox-0.4.6.tar.gz
  • Upload date:
  • Size: 3.5 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.6.tar.gz
Algorithm Hash digest
SHA256 fb1e1c468ed75dc38aac960a91d193dd3d7fa6ceea7493d7aabdd4dc3a639c3a
MD5 2cfc07e567835fdfe92df9db5999af87
BLAKE2b-256 8bbe0e723d0dd8a4d641f1c299b1f4802e1975c4c5033202f69c1665dc8c0943

See more details on using hashes here.

File details

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

File metadata

  • Download URL: project_toolbox-0.4.6-py3-none-any.whl
  • Upload date:
  • Size: 5.3 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 dce4e589da3dcd7f575f77ac73ff0226d4a067672cc238e08d134fa40b31eb86
MD5 f460d97750396a0df8a24f1655854d11
BLAKE2b-256 58bae3564fce90c877520726417ee6b0995ce7106f0fdbe95573369058e44adb

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