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

Uploaded Python 3

File details

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

File metadata

  • Download URL: dsp3_toolkit-1.0.3.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.12.12 Linux/6.14.0-1017-azure

File hashes

Hashes for dsp3_toolkit-1.0.3.tar.gz
Algorithm Hash digest
SHA256 4b94a9e5cdd08e1c4968206b84ea55b5290259771deb1490437f96621773d6a5
MD5 dbc621c2cd853554fb175cff91c9b475
BLAKE2b-256 7761a4a63f90a53266d58ac58f5d6acb6e90d0461620f2bbc409dbb6369dc83c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dsp3_toolkit-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.12.12 Linux/6.14.0-1017-azure

File hashes

Hashes for dsp3_toolkit-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e20ff30c3c59952b3d070b005eaf1a50a4416ccd0c3641f8b6e6d709a0b2b788
MD5 b6d84c688e5f7d7c312d541349f1b0c0
BLAKE2b-256 4e6e51a03468722a322314f7a8dc9bb5501b05ea98e20cc198e3f52cdb4ddca8

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