Skip to main content

templatepy: template for derivative python packages

Project description

DOI Website PyPI Wheel CI Code style: black

Process Manager

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

Version: 0.0.1

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

templatepy-0.0.1.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

templatepy-0.0.1-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file templatepy-0.0.1.tar.gz.

File metadata

  • Download URL: templatepy-0.0.1.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for templatepy-0.0.1.tar.gz
Algorithm Hash digest
SHA256 3514023486d926b3c3d98bf7972c046d8c586832616444ec9af23e73cab0bc61
MD5 db0ac88db30b04a2568f04efd69db9e9
BLAKE2b-256 fd0385352f31b17fe5be8d2adf8b1ed663f916332b8140b1e28dfbd204a1d859

See more details on using hashes here.

File details

Details for the file templatepy-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: templatepy-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for templatepy-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6c2ce5fa5a924e188b82440c26126a2df1c9cf524615222e84feb14105734962
MD5 4b7960bfb6aa106bae09b1c6ef023adc
BLAKE2b-256 a9e369227ecd8896a27cc83a115cf35105e7860275e4007274c68e1b2ae84f97

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