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.9.tar.gz (4.4 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.9-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: project_toolbox-0.4.9.tar.gz
  • Upload date:
  • Size: 4.4 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.9.tar.gz
Algorithm Hash digest
SHA256 08c3546137e8444852e5424991a3c14ba520a8cf8163fd51b56a06948776e298
MD5 e758788e59b3add45fdcf62bcdd29745
BLAKE2b-256 e5f414273c29dcadf1bc5d2a41a6e61d27f067cdbe546c2316208dd46856a7e6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: project_toolbox-0.4.9-py3-none-any.whl
  • Upload date:
  • Size: 6.6 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.9-py3-none-any.whl
Algorithm Hash digest
SHA256 61d023f4b3002a0186b537acad4a8f921d6b2f5547246f1b770f8989458c29b4
MD5 0ee22892a9c203c955a1cf687bcd498c
BLAKE2b-256 265072106ba03ba8de5ea356ce1a251874a61298c99787f4cf2aa7335537d0df

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