Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
MDecarabas authored Dec 10, 2024
0 parents commit 0403614
Show file tree
Hide file tree
Showing 63 changed files with 4,072 additions and 0 deletions.
12 changes: 12 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Set update schedule for GitHub Actions
# https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file

version: 2
updates:

- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every week
interval: "weekly"
158 changes: 158 additions & 0 deletions .github/workflows/code.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
name: Unit Tests & Code Coverage

on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch: # allow manual triggering

defaults:
run:
shell: bash -l {0}

jobs:
lint:
name: Code style
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Upgrade pip & test with pre-commit
run: |
set -vxeuo pipefail
python -m pip install --upgrade pip
python -m pip install pre-commit
pre-commit run --all-files
test-matrix:
name: Python ${{ matrix.python-version }} # - Redis ${{ matrix.redis-version }}
runs-on: ubuntu-latest
needs: lint
strategy:
matrix:
python-version:
- "3.11"
- "3.12"
# - "3.13" waiting for upstream packages
# redis-version:
# # - "6"
# - "7"
max-parallel: 5
env:
DISPLAY: ":99.0"

steps:
- uses: actions/checkout@v4

- name: Install OS libraries to test Linux PyQt apps
run: |
sudo apt update -y
sudo apt install -y \
libxcb-icccm4 \
libxcb-image0 \
libxcb-keysyms1 \
libxcb-randr0 \
libxcb-render-util0 \
libxcb-xinerama0 \
libxcb-xfixes0 \
libxkbcommon-x11-0 \
screen \
x11-utils \
xvfb
# FIXME: conflicts if redis is running on host (local runners)
# - name: Start Redis
# uses: supercharge/[email protected]
# with:
# redis-version: ${{ matrix.redis-version }}
# redis-remove-container: true # false by default

- name: Create environment Python ${{ matrix.python-version }} # - Redis ${{ matrix.redis-version }}
# needed for Unpack step
uses: mamba-org/setup-micromamba@v2
with:
cache-environment: true
cache-environment-key: env-key-${{ matrix.python-version }}
condarc: |
channels:
- conda-forge
- nodefaults
channel-priority: flexible
# environment-file: environment.yml
environment-name: anaconda-test-env-py-${{ matrix.python-version }} # -${{ matrix.redis-version }}
create-args: >-
coveralls
pytest
pytest-cov
pytest-qt
pytest-xvfb
python=${{ matrix.python-version }}
setuptools-scm
pyqt>5.15
pyepics
- name: Install this package with pip
shell: bash -l {0}
run: |
set -vxeuo pipefail
pip install -e .
- name: Run tests with pytest & coverage
shell: bash -l {0}
run: |
set -vxeuo pipefail
coverage run --concurrency=thread --parallel-mode -m pytest -vvv --exitfirst .
coverage combine
coverage report --precision 3
- name: Upload coverage data to coveralls.io
shell: bash -l {0}
run: |
set -vxeuo pipefail
micromamba list coveralls
which coveralls
coveralls debug
if [ "${GITHUB_TOKEN}" != "" ]; then
# only upload from GitHub runner
coveralls --service=github
else
echo "No credentials for upload to coveralls."
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_FLAG_NAME: ${{ matrix.python-version }} # -${{ matrix.redis-version }}
COVERALLS_PARALLEL: true

# https://coveralls-python.readthedocs.io/en/latest/usage/configuration.html#github-actions-support
coveralls:
name: Report unit test coverage to coveralls
needs: test-matrix
runs-on: ubuntu-latest
container: python:3-slim

steps:
- name: Gather coverage and report to Coveralls
run: |
set -vxeuo pipefail
echo "Finally!"
pip3 install --upgrade coveralls
# debug mode: output prepared json and reported files list to stdout
# https://coveralls-python.readthedocs.io/en/latest/troubleshooting.html
coveralls debug
if [ "${GITHUB_TOKEN}" != "" ]; then
# only upload from GitHub runner
coveralls --service=github --finish
else
echo "No credentials for upload to coveralls."
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
72 changes: 72 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Publish Sphinx docs to GitHub Pages
# see: https://github.com/marketplace/actions/sphinx-to-github-pages

on:
# Build the docs on pushes to main branch, PRs to main branch, and new tags.
# Publish only on demand.
push:
branches:
- main
tags:
- '*' # all tags
pull_request:
branches:
- main
workflow_dispatch: # allow manual triggering
inputs:
deploy:
description: 'Deploy documentation'
type: boolean
required: true
default: false

defaults:
run:
shell: bash -l {0}

jobs:

pages:
name: Publish documentation
runs-on: ubuntu-latest

steps:

- name: Deploy Information
if: ${{ github.event.inputs.deploy }}
run: |
echo "The docs will be published from this workflow run."
- name: Install pandoc
run: |
set -vxeuo pipefail
sudo apt-get update
sudo apt-get -y install pandoc
- name: Set time zone
run: echo "TZ=America/Chicago" >> "$GITHUB_ENV"

- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # required for push to dest repo

- uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install our package
run: pip install -e .[doc] -vv

- name: Sphinx
id: deployment
run: make -C docs html

- name: Publish (push gh-pages branch) only on demand
uses: peaceiris/actions-gh-pages@v4
if: ${{ github.event.inputs.deploy }}
with:
publish_branch: gh-pages
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: docs/build/html
force_orphan: true
Loading

0 comments on commit 0403614

Please sign in to comment.