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.3.tar.gz (2.9 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.3-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: project_toolbox-0.4.3.tar.gz
  • Upload date:
  • Size: 2.9 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.3.tar.gz
Algorithm Hash digest
SHA256 bf5ac021dacff12de6dc565228094be139484c0043edc7673f575bee85e13634
MD5 23757915ed8c9553720ec5d65978ad72
BLAKE2b-256 8a97210e58c721b6eb38ad550eb4482a742da049d322b870f6cfb2e79533a597

See more details on using hashes here.

File details

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

File metadata

  • Download URL: project_toolbox-0.4.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4d42395ff0d5c979733f18152d93f2223b6c5ae52ec9a5cbcf120af0f598c73d
MD5 fdc24211a0c9c612ef6a2b09b28a39a3
BLAKE2b-256 99df5e8f6495a176e2f69946535834f080446ee88f188de1e82d6e5e41537980

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