Skip to main content

Python Process Manager: Python process manager: Dispatch (ssh/bash) & control (zmq) detached (remote) processes

Project description

DOI Website PyPI Wheel CI Code style: black

Python Process Manager

Python process manager: Dispatch (ssh/bash) & control (zmq) detached (remote) processes

Version: 0.0.2

Usage

  1. Change files according to overview in TODO below
  2. Develop package...
  3. Install package:
    • static/normal install: pip install .
    • editable install:pip install -e .
    • dev install: pip install -e .[dev] (some terminals require to escape brackets with \ as \[, esp. zsh)

File overview

General

  • LICENSE: license text

  • README.md: Github-flavored markdown file

  • templatepy: placeholder folder for any python package that is configured for install via setup.cfg and pyproject.toml

    • __init__.py: contains basic package info and example function that is called by console entrypoint (see setup.cfg)
    • example.data.file.config: a file to demonstrate that data files are included based on setup.cfg criteria
    • example.data.file.test-extension-yu48: a file to demonstrate data exclusion via setup.py

Packaging system (see: packaging and setup.cfg)

  • MANIFEST.in: manifest file describes included/excluded files for build

  • pyproject.toml:

    • specifies build system: this replaces the usual setup.py architecture for setuptools
    • config for black code formatter
  • setup.cfg:

    • package specification and install dependencies
    • config for bump2version and flake8 formatting (see pre-commit)
  • setup.py: legacy file (see notes on new build-system below)

Code maintenance (linting/formatting/github)

  • .pre-commit-config.yaml: use pre-commit to run code formatting (e.g. with black and flake8) and PEP compliance checks

    • Install pre-commit hook with pre-commit install (Note: only installs it in the current virtual environment)
    • Run it manually with pre-commit run --all or leave it to run on commit (requires to re-stage changed files!)
  • .github: folder that contains github automation workflows and issues templates

  • .gitignore: ignored files/folders in git tools

TODO for adapting template to new project

  • Change package name:
    • (1) templatepy folder
    • (2) README.md
    • (3) name argument in setup.cfg
    • (4) .github/workflows files
    • (5) setup.cfg: [bumpversion:file:templatepy/__init__.py]
  • Change details about project author, etc. in setup.cfg, README.md, and templatepy/__init__.py
  • Change license holder in LICENSE
  • Change README badge paths at top
  • Verify inclusions/exclusions of installable files/folders in MANIFEST.in and setup.cfg
  • Check .gitignore contains relevant criteria
  • Add all version string locations to setup.cfg/bump2version field.
    • Use same syntax as for [bumpversion:file:PACKAGEFOLDER/__init__.py] line to describe how to find version on version increment
  • To upload to pypi: see below for workflow
  • To upload to Zenodo if repo is a publication:
    • (1) Connect Zenodo to Github account
    • (2) Flip switch on zenodo view of repo - NOTE: Zenodo can only copy from public repos
    • (3) Create new release version of github repo (manual or via .github/workflows/CI.yaml)
    • (4) Wait! Zenodo view with DOI assignment should update within about a minute
    • (5) Add DOI badge to README file

Workflow for (automatically) uploading package to pypi or test.pypi

  • (1) On pypi, make new API key for repo or general
  • (2) On Github, in repository settings add a new actions secret named TWINE_API_KEY and copy in the pypi API key
  • (3) Create a new release manually on github or by triggering the github workflow with a version without release extension (e.g. x.y.z)

Notes

New(er) build system with pyproject.toml and setup.cfg

  • pip
    • tested with pip install . --use-feature=in-tree-build for forward-compatibility with pip 21.3
    • keeping empty setup.py for enabling install in editable mode -e as this still requires such a file
    • added wheel as build-system dependency for compatibility with pip that does not implement PEP 517
  • setup.cfg/setup.py might be fully replaced with pyproject.toml. See this discussion about PEP-426, PEP-517, PEP-518

License

This software is released under the BSD 3-Clause License

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

python_process_manager-0.0.2.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

python_process_manager-0.0.2-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file python_process_manager-0.0.2.tar.gz.

File metadata

File hashes

Hashes for python_process_manager-0.0.2.tar.gz
Algorithm Hash digest
SHA256 78b1d36e48504b7f199802722a9c3e3d0ee95de6e6515bd4d8323591db7b419a
MD5 a8b4af469d66a4e1197edcaeb416516c
BLAKE2b-256 fca89ee4c7c6e78bf9ab5224b6f4192a377f7cd71d5e36bb83bbd1f6a91907b4

See more details on using hashes here.

File details

Details for the file python_process_manager-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for python_process_manager-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 53c8539336901948b036876c2c3a4367eced4fa866b97e61f5cba2155cec30ee
MD5 ea4a7d547110c3cf6b56c9488060896a
BLAKE2b-256 3c1437a27229987b978dc67fbb225c136c86ab3cf44a00e3492056096d6982b8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page