Skip to content

Commit 5888976

Browse files
authored
Merge pull request #34 from pimoroni/repackage
Repackage to latest boilerplate
2 parents 6924c10 + da86dbf commit 5888976

31 files changed

+631
-322
lines changed

.github/workflows/build.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Build
2+
3+
on:
4+
pull_request:
5+
push:
6+
branches:
7+
- main
8+
9+
jobs:
10+
test:
11+
name: Python ${{ matrix.python }}
12+
runs-on: ubuntu-latest
13+
strategy:
14+
matrix:
15+
python: ['3.9', '3.10', '3.11']
16+
17+
env:
18+
RELEASE_FILE: ${{ github.event.repository.name }}-${{ github.event.release.tag_name || github.sha }}-py${{ matrix.python }}
19+
20+
steps:
21+
- name: Checkout Code
22+
uses: actions/checkout@v3
23+
24+
- name: Set up Python ${{ matrix.python }}
25+
uses: actions/setup-python@v3
26+
with:
27+
python-version: ${{ matrix.python }}
28+
29+
- name: Install Dependencies
30+
run: |
31+
make dev-deps
32+
33+
- name: Build Packages
34+
run: |
35+
make build
36+
37+
- name: Upload Packages
38+
uses: actions/upload-artifact@v3
39+
with:
40+
name: ${{ env.RELEASE_FILE }}
41+
path: dist/

.github/workflows/qa.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: QA
2+
3+
on:
4+
pull_request:
5+
push:
6+
branches:
7+
- main
8+
9+
jobs:
10+
test:
11+
name: linting & spelling
12+
runs-on: ubuntu-latest
13+
14+
env:
15+
TERM: xterm-256color
16+
17+
steps:
18+
- name: Checkout Code
19+
uses: actions/checkout@v2
20+
21+
- name: Set up Python '3,11'
22+
uses: actions/setup-python@v3
23+
with:
24+
python-version: '3.11'
25+
26+
- name: Install Dependencies
27+
run: |
28+
make dev-deps
29+
30+
- name: Run Quality Assurance
31+
run: |
32+
make qa
33+
34+
- name: Run Code Checks
35+
run: |
36+
make check

.github/workflows/test.yml

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,41 @@
1-
name: Python Tests
1+
name: Tests
22

33
on:
44
pull_request:
55
push:
66
branches:
7-
- master
7+
- main
88

99
jobs:
1010
test:
11+
name: Python ${{ matrix.python }}
1112
runs-on: ubuntu-latest
1213
strategy:
1314
matrix:
1415
python: ['3.9', '3.10', '3.11']
1516

1617
steps:
17-
- uses: actions/checkout@v2
18+
- name: Checkout Code
19+
uses: actions/checkout@v3
20+
1821
- name: Set up Python ${{ matrix.python }}
19-
uses: actions/setup-python@v2
22+
uses: actions/setup-python@v3
2023
with:
2124
python-version: ${{ matrix.python }}
25+
2226
- name: Install Dependencies
2327
run: |
24-
python -m pip install --upgrade setuptools tox
28+
make dev-deps
29+
2530
- name: Run Tests
26-
working-directory: library
2731
run: |
28-
tox -e py
32+
make pytest
33+
2934
- name: Coverage
35+
if: ${{ matrix.python == '3.9' }}
3036
env:
3137
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32-
working-directory: library
3338
run: |
3439
python -m pip install coveralls
3540
coveralls --service=github
36-
if: ${{ matrix.python == '3.11' }}
3741
File renamed without changes.
File renamed without changes.

Makefile

Lines changed: 40 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,60 @@
1-
LIBRARY_VERSION=$(shell grep version library/setup.cfg | awk -F" = " '{print $$2}')
2-
LIBRARY_NAME=$(shell grep name library/setup.cfg | awk -F" = " '{print $$2}')
1+
LIBRARY_NAME := $(shell hatch project metadata name 2> /dev/null)
2+
LIBRARY_VERSION := $(shell hatch version 2> /dev/null)
33

4-
.PHONY: usage install uninstall
4+
.PHONY: usage install uninstall check pytest qa build-deps check tag wheel sdist clean dist testdeploy deploy
55
usage:
6+
ifdef LIBRARY_NAME
67
@echo "Library: ${LIBRARY_NAME}"
78
@echo "Version: ${LIBRARY_VERSION}\n"
9+
else
10+
@echo "WARNING: You should 'make dev-deps'\n"
11+
endif
812
@echo "Usage: make <target>, where target is one of:\n"
9-
@echo "install: install the library locally from source"
10-
@echo "uninstall: uninstall the local library"
11-
@echo "check: peform basic integrity checks on the codebase"
12-
@echo "python-readme: generate library/README.rst from README.md"
13-
@echo "python-wheels: build python .whl files for distribution"
14-
@echo "python-sdist: build python source distribution"
15-
@echo "python-clean: clean python build and dist directories"
16-
@echo "python-dist: build all python distribution files"
17-
@echo "python-testdeploy: build all and deploy to test PyPi"
18-
@echo "tag: tag the repository with the current version"
13+
@echo "install: install the library locally from source"
14+
@echo "uninstall: uninstall the local library"
15+
@echo "dev-deps: install Python dev dependencies"
16+
@echo "check: perform basic integrity checks on the codebase"
17+
@echo "qa: run linting and package QA"
18+
@echo "pytest: run Python test fixtures"
19+
@echo "clean: clean Python build and dist directories"
20+
@echo "build: build Python distribution files"
21+
@echo "testdeploy: build and upload to test PyPi"
22+
@echo "deploy: build and upload to PyPi"
23+
@echo "tag: tag the repository with the current version\n"
1924

2025
install:
21-
./install.sh
26+
./install.sh --unstable
2227

2328
uninstall:
2429
./uninstall.sh
2530

26-
check:
27-
@echo "Checking for trailing whitespace"
28-
@! grep -IUrn --color "[[:blank:]]$$" --exclude-dir=sphinx --exclude-dir=.tox --exclude-dir=.git --exclude=PKG-INFO
29-
@echo "Checking for DOS line-endings"
30-
@! grep -lIUrn --color "" --exclude-dir=sphinx --exclude-dir=.tox --exclude-dir=.git --exclude=Makefile
31-
@echo "Checking library/CHANGELOG.txt"
32-
@cat library/CHANGELOG.txt | grep ^${LIBRARY_VERSION}
33-
@echo "Checking library/${LIBRARY_NAME}/__init__.py"
34-
@cat library/${LIBRARY_NAME}/__init__.py | grep "^__version__ = '${LIBRARY_VERSION}'"
35-
36-
tag:
37-
git tag -a "v${LIBRARY_VERSION}" -m "Version ${LIBRARY_VERSION}"
31+
dev-deps:
32+
python3 -m pip install -r requirements-dev.txt
33+
sudo apt install dos2unix
3834

39-
python-readme: library/README.md
40-
41-
python-license: library/LICENSE.txt
35+
check:
36+
@bash check.sh
4237

43-
library/README.md: README.md library/CHANGELOG.txt
44-
cp README.md library/README.md
45-
printf "\n# Changelog\n" >> library/README.md
46-
cat library/CHANGELOG.txt >> library/README.md
38+
qa:
39+
tox -e qa
4740

48-
library/LICENSE.txt: LICENSE
49-
cp LICENSE library/LICENSE.txt
41+
pytest:
42+
tox -e py
5043

51-
python-wheels: python-readme python-license
52-
cd library; python3 setup.py bdist_wheel
53-
cd library; python setup.py bdist_wheel
44+
nopost:
45+
@bash check.sh --nopost
5446

55-
python-sdist: python-readme python-license
56-
cd library; python setup.py sdist
47+
tag:
48+
git tag -a "v${LIBRARY_VERSION}" -m "Version ${LIBRARY_VERSION}"
5749

58-
python-clean:
59-
-rm -r library/dist
60-
-rm -r library/build
61-
-rm -r library/*.egg-info
50+
build: check
51+
@hatch build
6252

63-
python-dist: python-clean python-wheels python-sdist
64-
ls library/dist
53+
clean:
54+
-rm -r dist
6555

66-
python-testdeploy: python-dist
67-
twine upload --repository-url https://test.pypi.org/legacy/ library/dist/*
56+
testdeploy: build
57+
twine upload --repository testpypi dist/*
6858

69-
python-deploy: check python-dist
70-
twine upload library/dist/*
59+
deploy: nopost build
60+
twine upload dist/*

README.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
Designed as a tiny valet for your plants, Grow HAT mini will monitor the soil moiture for up to 3 plants, water them with tiny pumps, and show you their health on its small but informative screen. Learn more - https://shop.pimoroni.com/products/grow
44

5-
[![Build Status](https://travis-ci.com/pimoroni/enviroplus-python.svg?branch=master)](https://travis-ci.com/pimoroni/grow-python)
5+
[![Build Status](https://img.shields.io/github/actions/workflow/status/pimoroni/grow-python/test.yml?branch=main)](https://github.com/pimoroni/grow-python/actions/workflows/test.yml)
66
[![Coverage Status](https://coveralls.io/repos/github/pimoroni/grow-python/badge.svg?branch=master)](https://coveralls.io/github/pimoroni/grow-python?branch=master)
7-
[![PyPi Package](https://img.shields.io/pypi/v/enviroplus.svg)](https://pypi.python.org/pypi/growhat)
8-
[![Python Versions](https://img.shields.io/pypi/pyversions/enviroplus.svg)](https://pypi.python.org/pypi/growhat)
7+
[![PyPi Package](https://img.shields.io/pypi/v/growhat.svg)](https://pypi.python.org/pypi/growhat)
8+
[![Python Versions](https://img.shields.io/pypi/pyversions/growhat.svg)](https://pypi.python.org/pypi/growhat)
99

1010
# Installing
1111

@@ -37,7 +37,7 @@ sudo apt install python3-setuptools python3-pip python3-yaml python3-smbus pytho
3737

3838
* Run `sudo pip3 install growhat`
3939

40-
**Note** this wont perform any of the required configuration changes on your Pi, you may additionally need to:
40+
**Note** this won't perform any of the required configuration changes on your Pi, you may additionally need to:
4141

4242
* Enable i2c: `sudo raspi-config nonint do_i2c 0`
4343
* Enable SPI: `sudo raspi-config nonint do_spi 0`
@@ -55,3 +55,14 @@ You should read the following to get up and running with our monitoring script:
5555
* GPIO Pinout - https://pinout.xyz/pinout/grow_hat_mini
5656
* Support forums - http://forums.pimoroni.com/c/support
5757
* Discord - https://discord.gg/hr93ByC
58+
59+
# Changelog
60+
0.0.2
61+
-----
62+
63+
* Add mutually exclusive locking to pumps to avoid brownout running multiple pumps at once
64+
65+
0.0.1
66+
-----
67+
68+
* Initial Release

check.sh

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#!/bin/bash
2+
3+
# This script handles some basic QA checks on the source
4+
5+
NOPOST=$1
6+
LIBRARY_NAME=`hatch project metadata name`
7+
LIBRARY_VERSION=`hatch version | awk -F "." '{print $1"."$2"."$3}'`
8+
POST_VERSION=`hatch version | awk -F "." '{print substr($4,0,length($4))}'`
9+
TERM=${TERM:="xterm-256color"}
10+
11+
success() {
12+
echo -e "$(tput setaf 2)$1$(tput sgr0)"
13+
}
14+
15+
inform() {
16+
echo -e "$(tput setaf 6)$1$(tput sgr0)"
17+
}
18+
19+
warning() {
20+
echo -e "$(tput setaf 1)$1$(tput sgr0)"
21+
}
22+
23+
while [[ $# -gt 0 ]]; do
24+
K="$1"
25+
case $K in
26+
-p|--nopost)
27+
NOPOST=true
28+
shift
29+
;;
30+
*)
31+
if [[ $1 == -* ]]; then
32+
printf "Unrecognised option: $1\n";
33+
exit 1
34+
fi
35+
POSITIONAL_ARGS+=("$1")
36+
shift
37+
esac
38+
done
39+
40+
inform "Checking $LIBRARY_NAME $LIBRARY_VERSION\n"
41+
42+
inform "Checking for trailing whitespace..."
43+
grep -IUrn --color "[[:blank:]]$" --exclude-dir=dist --exclude-dir=.tox --exclude-dir=.git --exclude=PKG-INFO
44+
if [[ $? -eq 0 ]]; then
45+
warning "Trailing whitespace found!"
46+
exit 1
47+
else
48+
success "No trailing whitespace found."
49+
fi
50+
printf "\n"
51+
52+
inform "Checking for DOS line-endings..."
53+
grep -lIUrn --color $'\r' --exclude-dir=dist --exclude-dir=.tox --exclude-dir=.git --exclude=Makefile
54+
if [[ $? -eq 0 ]]; then
55+
warning "DOS line-endings found!"
56+
exit 1
57+
else
58+
success "No DOS line-endings found."
59+
fi
60+
printf "\n"
61+
62+
inform "Checking CHANGELOG.md..."
63+
cat CHANGELOG.md | grep ^${LIBRARY_VERSION} > /dev/null 2>&1
64+
if [[ $? -eq 1 ]]; then
65+
warning "Changes missing for version ${LIBRARY_VERSION}! Please update CHANGELOG.md."
66+
exit 1
67+
else
68+
success "Changes found for version ${LIBRARY_VERSION}."
69+
fi
70+
printf "\n"
71+
72+
inform "Checking for git tag ${LIBRARY_VERSION}..."
73+
git tag -l | grep -E "${LIBRARY_VERSION}$"
74+
if [[ $? -eq 1 ]]; then
75+
warning "Missing git tag for version ${LIBRARY_VERSION}"
76+
fi
77+
printf "\n"
78+
79+
if [[ $NOPOST ]]; then
80+
inform "Checking for .postN on library version..."
81+
if [[ "$POST_VERSION" != "" ]]; then
82+
warning "Found .$POST_VERSION on library version."
83+
inform "Please only use these for testpypi releases."
84+
exit 1
85+
else
86+
success "OK"
87+
fi
88+
fi

examples/advanced/lcd-demo.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
#!/usr/bin/env python3
22

3+
import logging
4+
35
import ST7735
4-
from PIL import Image, ImageDraw, ImageFont
56
from fonts.ttf import RobotoMedium as UserFont
6-
import logging
7+
from PIL import Image, ImageDraw, ImageFont
78

89
logging.basicConfig(
910
format="%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s",

examples/advanced/moisture.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
from grow.moisture import Moisture
44

5-
65
print("""moisture.py - Print out sensor reading in Hz
76
87
Press Ctrl+C to exit!

0 commit comments

Comments
 (0)