Skip to main content

app_skellington

Application framework for Python, features include:

  • Pain-free multi-level command menu: Expose public class methods as commands available to user.
  • Simple to define services and automatic dependency injection based on name (with custom invocation as an option). *WIP
  • INI-style config and and validation (provided through ConfigObj).
  • Colored logging (provided through colorlog)
  • Works on Linux, Windows, and Mac.

Principles:

  • Lend to creating beautiful, easy to read and understand code in the application.
  • Minimize coupling of applications to this framework.
  • Compatible with Linux, Windows, and Mac. Try to be compatible as possible otherwise.
  • Try to be compatible with alternate Python runtimes such as PyPy and older python environments. *WIP

PyPi Hosted Link

https://pypi.org/project/app-skellington/

Application Configuration

Site configurations are supported through ConfigObj. There is a config.spec in the src directory which is a validation file; it contains the accepted parameter names, types, and limits for configurable options in the application which is built on app_skellington. The format is multi-level .ini syntax.

Reference the ConfigObj documentation for config.ini and config.spec format. See:

Config files (config.ini) are created if they don't exist. The file always contains the full specification of parameters; i.e. even default parameters are added into the config file.

Linux:

  • /home/<user>/.config/<app_name>/config.ini
  • /home/<user>/.cache/<app_name>/log/<app_name>.log

Windows:

  • C:\Users\<user>\<app_name>\Local\<app_name>\config.ini
  • C:\Users\<user>\<app_name>\Local\<app_name>\Logs\<app_name>.log

Application configuration can be overridden ad-hoc through the --config argument.

Debug - Turn on Logging

Set 'APPSKELLINGTON_ENABLE_LOGGING' environment variable to any value which turns on AppSkellington-level logging. For example,

APPSKELLINGTON_DEBUG=1 <executable>

or

export APPSKELLINGTON_DEBUG=1
<executable>

Tests

Tests are a WIP. Recommendation is to run 'pytest' in the 'tests' directory.

Development

I recommend pyenv to install a reliable, controlled python of preferred version locally.

curl https://pyenv.run | bash

# Add to .bashrc or similar for different shells:
tee -a "$HOME"/.profile <<'EOF'

export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

EOF

Clone the repo:

git clone https://git-repos.zavage.net/zavage-software/app_skellington.git

Install pre-commit hooks:

pre-commit install

Build:

python -m build

Install:

pip install .

Formatting and Linters:

black app_skellington
isort app_skellington
flake8 app_skellington

Publish:

# Push latest commit, or on commit ready to publish:
git push

# Create a tag with the desired version number and push:
git tag -a v0.2.0 -m "0.2.0 provides modern pyproject.toml build with setuptools, versioning, and publishing"
git push origin v0.2.0

# Build the wheel:
python -m build

# Publish to pypi:
twine check dist/*
twine upload dist/*

Version

setuptools_scm will infer the version based on the latest tag in your Git history. Ensure you are tagging your commits with meaningful version numbers like v1.0.0, v1.1.0, etc.

You can view the current version number with the command:

python -m setuptools_scm

License

MIT no attribution required - https://opensource.org/license/mit-0

  • Allows commercial use.
  • Allows modifications and closed-source derivatives.
  • Fully interoperable with nearly all other open-source licenses, including GPL (when combined properly).

See Also

Metadata

Release files for app-skellington 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for app-skellington 0.2.2
File Size Uploaded
app_skellington-0.2.2.tar.gz 22.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for app-skellington 0.2.2
File Interpreter ABI Platform
app_skellington-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 43.2 kB

Release files / app_skellington-0.2.2.tar.gz

Download URL app_skellington-0.2.2.tar.gz
Size 22.3 kB
Tags Source
SHA-256 checksum
How to use checksums
05d735e7625124a9f2790b278abe55f2d21502e7c5d03201fbb1e277f067711f
BLAKE2b-256 checksum
How to use checksums
0cb070646bbba2c08c54bf40a7e2eb1c88025d8dfd31bc2ad23c88dc691c85a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.8.19

Release files / app_skellington-0.2.2-py3-none-any.whl

Download URL app_skellington-0.2.2-py3-none-any.whl
Size 20.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7c330c2c60a19012132f0d2bab6676c7a35648f0b6d87ff602e24965c1628dd5
BLAKE2b-256 checksum
How to use checksums
dd68a99346938eff296c3cd44795f9f20d7fc31d9af50bebdb9e4f43cf64319b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.8.19

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page