Skip to main content

DSP shared toolkit for Python apps: CLI, logging, config, linting, plugins, and more.

Project description

dsp-toolkit

Overview

This library is a toolkit for shared code between apps to try and make them consistent.

Installation

poetry add dsp-toolkit

NOTE: Requires Python >=3.12,<4.0.

Quickstart

from dsp_toolkit.logging import logger

logger.info("I am a logging statement")

Features

  • cli.py: Reusable CLI for test, lint, release.
  • logging.py: Centralized logging config.
  • env.py: Environment variable management.
  • plugins/: Custom flake8 plugins.

CLI Usage

  • poetry run test [args]: Run tests with optional args.
  • poetry run lint [args]: Run linting with optional args.
  • poetry run release: Run semantic-release for publishing.

Extending & Overriding

  • Subclass toolkit modules in your app for custom behavior.

  • Extend CLI commands:

    • Create your own cli.py in your app (e.g., src/my_app/cli.py).
    • Import and reuse commands from dsp_toolkit.cli, then add or override as needed:
      from dsp_toolkit.cli import test, lint_and_format, release
      
      def custom_command():
          print("This is my custom command!")
      
      # You can add an argparse entry point or use Poetry scripts to expose your custom commands.
      
    • In your pyproject.toml, add a Poetry script for your CLI:
      [tool.poetry.scripts]
      test = "my_app.cli:test"
      custom = "my_app.cli:custom_command"
      
  • Register additional plugins in your app's config:

    • For Flake8 plugins, add them to your app's setup.cfg or register via entry_points in pyproject.toml:
      [flake8:local-plugins]
      extension =
          MYPLUG = my_app.plugins.my_plugin:MyPlugin
      
    • For pip-installable plugins, add them to your app's dependencies and Flake8 will auto-discover them.
    • For custom plugin registration, see Flake8 documentation: https://flake8.pycqa.org/en/latest/user/configuration.html#local-plugins

Development Workflow

  • Run tests: poetry run test
  • Lint: poetry run lint
  • Build: poetry build

CI/CD & Release

Automated via GitHub Actions and semantic-release. See .github/workflows/ci.yml and .github/workflows/release.yml for details.

Troubleshooting & FAQ

  • If you encounter dependency issues, check your Python version and Poetry config.
  • For local testing, see the section below.

Local Development & Testing in Another App

You can test dsp-toolkit in another app before releasing to PyPI:

1. Editable Install (Recommended)

From your app directory:

poetry add ../path/to/dsp-toolkit --editable

or with pip:

pip install -e ../path/to/dsp-toolkit

2. Build and Install the Package

Build your library:

poetry build

Then install the wheel or sdist in your app (Recommended):

poetry add ../path/to/dsp-toolkit/dist/dsp_toolkit-0.1.0-py3-none-any.whl

or

pip install ../path/to/dsp-toolkit/dist/dsp_toolkit-0.1.0-py3-none-any.whl

3. Local Path Dependency in pyproject.toml

In your app’s pyproject.toml:

[tool.poetry.dependencies]
dsp-toolkit = { path = "../path/to/dsp-toolkit", develop = true }

Then run:

poetry install

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

dsp3_toolkit-1.0.1.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

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

dsp3_toolkit-1.0.1-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file dsp3_toolkit-1.0.1.tar.gz.

File metadata

  • Download URL: dsp3_toolkit-1.0.1.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.12.11 Linux/6.11.0-1018-azure

File hashes

Hashes for dsp3_toolkit-1.0.1.tar.gz
Algorithm Hash digest
SHA256 150009df5705353c5ce3dfbaa66543a178f075e649ddb648ae66dc9f69847d2b
MD5 b37c16246f8cdc55cc5f197dd38a66a9
BLAKE2b-256 f0fb3185455a5f575e2231a211f96427d29c14bd49cd55f935e995f3734b0d10

See more details on using hashes here.

File details

Details for the file dsp3_toolkit-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: dsp3_toolkit-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 4.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.12.11 Linux/6.11.0-1018-azure

File hashes

Hashes for dsp3_toolkit-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 07338dac83373745952f91b2096ee54675592cf290a75c499348a3151c52193a
MD5 f3f774c2efc8549f92b4c3b75bee87be
BLAKE2b-256 7d10b57a8dd7c811db46daaccaf18a3458855d8d61e57e3955e765c9ff045408

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