Skip to main content

CLI tooling to scaffold and manage Python Queued Message Handler projects

Project description

pyqmh-tools

Scaffolding and maintenance utilities for building a Python Queued Message Handler (QMH) project.

This repository is intended to be published as a PyPI package so the tooling can be installed with pip and used as project commands.

Installation

Install from PyPI (after publish):

pip install pyqmh-tools

Commands

This package provides three main commands:

  1. pyqmh_project_init
  2. pyqmh_module_add
  3. pyqmh_module_remove

Note: if you see pyqmg-module-remove elsewhere, treat that as a typo. The command name in this project is pyqmh_module_remove.


pyqmh_project_init

Initializes a new QMH project in the current directory.

What it does:

  • Creates src/ and src/modules/ if they do not already exist.
  • Creates src/modules/__init__.py if missing.
  • Copies template app.py into src/app.py if it does not already exist.
  • Prompts for app/project description (only when creating app.py).
  • Fills template placeholders such as description/author.
  • Creates root .gitignore from template if .gitignore does not exist.

Run from your target project directory:

pyqmh_project_init

pyqmh_module_add

Adds a new module to src/modules, or adds a new implementation to an existing factory module.

Behavior summary:

  • Prompts for module name first.
  • If module already exists and is a factory module, prompts to add a new implementation.
  • If module does not exist, prompts for module type:
    • standard
    • factory
    • repository

standard creation:

  • Creates src/modules/<module_name>/module.py from template.
  • Creates module __init__.py from template with imports/exports.
  • Updates src/modules/__init__.py import and __all__ (if file exists).
  • Updates src/app.py import and constructor registration (if file exists).

factory creation:

  • Creates factory.py, base.py, and simulated.py from templates.
  • Creates module __init__.py from template with imports/exports.
  • Includes factory/base/simulated exports.
  • Updates src/modules/__init__.py import and __all__ (if file exists).
  • Updates src/app.py import and constructor registration (if file exists).

repository creation:

  • Prompts for Git repository URL.
  • Adds the repository as a Git submodule under src/modules/<module_name>.
  • If repository URL is blank, falls back to template-based creation prompts.

Add new module:

pyqmh_module_add

pyqmh_module_remove

Removes an existing module from src/modules.

Behavior summary:

  • Prints available modules before prompting.
  • Accepts module name as folder name or CamelCase class name.
  • Shows files to be removed and asks for confirmation.
  • If module is a Git submodule:
    • deinitializes submodule
    • removes it from Git index
    • removes submodule metadata
  • If module is a regular folder:
    • removes the folder directly
  • Cleans up references after removal:
    • src/modules/__init__.py imports and __all__
    • src/app.py import and constructor registration

Remove module:

pyqmh_module_remove

Typical New Project Flow

From a new directory:

  1. Initialize project scaffold.
  2. Add one or more modules.
  3. Run app.

Example:

mkdir my-qmh-project
cd my-qmh-project

pyqmh_project_init
pyqmh_module_add
pyqmh_module_add

python src/app.py --debug

Development Notes

  • Commands are designed to be run from the project root where src/ should exist.
  • The tools are idempotent for common setup steps (existing files/folders are generally preserved).
  • Generated files are template-driven from src/pyqmh_tools/assets.

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

pyqmh_tools-0.0.5.tar.gz (27.9 kB view details)

Uploaded Source

Built Distribution

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

pyqmh_tools-0.0.5-py3-none-any.whl (38.0 kB view details)

Uploaded Python 3

File details

Details for the file pyqmh_tools-0.0.5.tar.gz.

File metadata

  • Download URL: pyqmh_tools-0.0.5.tar.gz
  • Upload date:
  • Size: 27.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyqmh_tools-0.0.5.tar.gz
Algorithm Hash digest
SHA256 06687487802ab2348bcddb7e40db7ac4b928b80b74a663a9c506461b0f78a879
MD5 068fa9fb715faec59ae4f79e9123234c
BLAKE2b-256 f6b1ad5d24af85ae3ea2c519da38ce967e7a8987a2e46c8e311d8cbe43b02c4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqmh_tools-0.0.5.tar.gz:

Publisher: publish-to-pypi.yml on PCLabTools/pyqmh-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyqmh_tools-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: pyqmh_tools-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 38.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyqmh_tools-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 37010848ca65c8c64fc32c10ba416a3b349acb354b76db80a23e6dd117dc8b77
MD5 d9d693800fdef1e68548693b40b53eaa
BLAKE2b-256 800fcdf0d0de8846aa22785c1b1e064500a5955fa20f8562d70dcdf6750eeb1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqmh_tools-0.0.5-py3-none-any.whl:

Publisher: publish-to-pypi.yml on PCLabTools/pyqmh-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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