Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
root = true

[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8

[Makefile]
indent_style = tab

[*.{py,cfg,ini,toml,yaml,yml,md,sh}]
indent_style = space
indent_size = 4
14 changes: 14 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "pre-commit"
directory: "/"
schedule:
interval: "weekly"
16 changes: 8 additions & 8 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@ on:
branches:
- main

permissions:
contents: read

jobs:
test:
name: Build (Python ${{ matrix.python }})
runs-on: ubuntu-latest
strategy:
matrix:
python: ['3.9', '3.10', '3.11']
python: ['3.9', '3.10', '3.11', '3.12', '3.13']

env:
TERM: xterm-256color
Expand All @@ -22,18 +25,15 @@ jobs:
- name: Checkout Code
uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v5
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
python-version: ${{ matrix.python }}

- name: Install Dependencies
run: |
make dev-deps

- name: Build Packages
run: |
make build
uv run make build

- name: Upload Packages
uses: actions/upload-artifact@v4
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/install.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ on:
branches:
- main

permissions:
contents: read

jobs:
test:
name: Install (Python ${{ matrix.python }})
Expand All @@ -14,7 +17,7 @@ jobs:
TERM: xterm-256color
strategy:
matrix:
python: ['3.9', '3.10', '3.11']
python: ['3.9', '3.10', '3.11', '3.12', '3.13']

steps:
- name: Checkout Code
Expand Down
20 changes: 10 additions & 10 deletions .github/workflows/qa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ on:
branches:
- main

permissions:
contents: read

jobs:
test:
name: Linting & Spelling
Expand All @@ -17,23 +20,20 @@ jobs:
- name: Checkout Code
uses: actions/checkout@v4

- name: Set up Python '3,11'
uses: actions/setup-python@v5
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
python-version: '3.11'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe make this 3.13? 3.11 would be the edge case with much older Pi's?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's just say I am not optimistic about people keeping Raspberry Pi OS up to date 😆 (though perhaps that's partly my fault...)

Though I am very tempted to drop older versions for new shinies.

Thanks for looking over this, by the way, I'm super rusty on the Python front so I'm mostly fixing the things that specifically annoy me or catch me out any time I come back to this stuff.


- name: Install Dependencies
run: |
make dev-deps

- name: Run Quality Assurance
run: |
make qa
uv run make qa

- name: Run Code Checks
run: |
make check
uv run make check

- name: Run Bash Code Checks
- name: Run Pre-Commit
run: |
make shellcheck
uv run pre-commit run --all-files
20 changes: 9 additions & 11 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ on:
branches:
- main

permissions:
contents: read

jobs:
test:
name: Test (Python ${{ matrix.python }})
Expand All @@ -14,30 +17,25 @@ jobs:
TERM: xterm-256color
strategy:
matrix:
python: ['3.9', '3.10', '3.11']
python: ['3.9', '3.10', '3.11', '3.12', '3.13']

steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v5
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
python-version: ${{ matrix.python }}

- name: Install Dependencies
run: |
make dev-deps

- name: Run Tests
run: |
make pytest
uv run make pytest

- name: Coverage
if: ${{ matrix.python == '3.9' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python -m pip install coveralls
coveralls --service=github

uvx coveralls --service=github
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,5 @@ library/debian/
.coverage
.pytest_cache
.tox
.venv
uv.lock
22 changes: 22 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: mixed-line-ending
args: ['--fix=lf']
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.20
hooks:
- id: ruff-check
args: ['--fix']
- repo: https://github.com/codespell-project/codespell
rev: v2.3.0
hooks:
- id: codespell
additional_dependencies: ['tomli']
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.10.0.1
hooks:
- id: shellcheck
5 changes: 0 additions & 5 deletions .stickler.yml

This file was deleted.

31 changes: 21 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
LIBRARY_NAME := $(shell hatch project metadata name 2> /dev/null)
LIBRARY_VERSION := $(shell hatch version 2> /dev/null)

.PHONY: usage install uninstall check pytest qa build-deps check tag wheel sdist clean dist testdeploy deploy
.PHONY: usage version install uninstall dev-deps check pre-commit qa pytest nopost tag build clean testdeploy deploy
usage:
ifdef LIBRARY_NAME
@echo "Library: ${LIBRARY_NAME}"
Expand All @@ -13,8 +13,9 @@ endif
@echo "install: install the library locally from source"
@echo "uninstall: uninstall the local library"
@echo "dev-deps: install Python dev dependencies"
@echo "check: perform basic integrity checks on the codebase"
@echo "qa: run linting and package QA"
@echo "check: verify CHANGELOG.md has an entry for the current version"
@echo "qa: run package QA (check-manifest, build, twine)"
@echo "pre-commit: run pre-commit hooks (lint, whitespace) on all files"
@echo "pytest: run Python test fixtures"
@echo "clean: clean Python build and dist directories"
@echo "build: build Python distribution files"
Expand All @@ -32,14 +33,20 @@ uninstall:
./uninstall.sh

dev-deps:
python3 -m pip install -r requirements-dev.txt
sudo apt install dos2unix shellcheck
python3 -m pip install --group dev
pre-commit install

check:
@bash check.sh
@LIBRARY_VERSION=`hatch version | awk -F '.' '{print $$1"."$$2"."$$3}'`; \
if grep -q "^$$LIBRARY_VERSION" CHANGELOG.md; then \
echo "Changes found for version $$LIBRARY_VERSION."; \
else \
echo "Changes missing for version $$LIBRARY_VERSION! Please update CHANGELOG.md."; \
exit 1; \
fi

shellcheck:
shellcheck *.sh
pre-commit:
pre-commit run --all-files

qa:
tox -e qa
Expand All @@ -48,13 +55,17 @@ pytest:
tox -e py

nopost:
@bash check.sh --nopost
@POST_VERSION=`hatch version | awk -F '.' '{print $$4}'`; \
if [ -n "$$POST_VERSION" ]; then \
echo "Found .$$POST_VERSION on library version; only use these for testpypi releases."; \
exit 1; \
fi

tag: version
git tag -a "v${LIBRARY_VERSION}" -m "Version ${LIBRARY_VERSION}"

build: check
@hatch build
uv build

clean:
-rm -r dist
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ product description goes here

# Installing

We'd recommend using this library with Raspberry Pi OS Bookworm or later. It requires Python ≥3.7.
We'd recommend using this library with Raspberry Pi OS Bookworm or later. It requires Python ≥3.9.

## Full install (recommended):

Expand Down
84 changes: 0 additions & 84 deletions check.sh

This file was deleted.

Loading
Loading