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

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyqmh_tools-0.0.3.tar.gz
  • Upload date:
  • Size: 15.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.3.tar.gz
Algorithm Hash digest
SHA256 a6fffb7b98d4ca146ccaf01c1bb014cba0957ffaa2ca195209e33c93721abc4f
MD5 6e795a1262266bd4162d9d04204eefaa
BLAKE2b-256 ed57da0d554b41124fd2174c0be2d00e40a6697544937017e26662f34cbed486

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqmh_tools-0.0.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: pyqmh_tools-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 18.1 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4914e0cfb33c3ad7f582e7cd31770bab99e917ab3437e21044832db22fbb2279
MD5 dc99c883cfaaa019ebb44ed36e136456
BLAKE2b-256 ca486d3ba07cb0bf5ba31d6bfadaf591dcf20c0f1efa4030440635a41565257f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqmh_tools-0.0.3-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