Skip to content

CI for Template

CI for Template #708

Workflow file for this run

name: CI for Template
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
schedule:
- cron: 45 6 * * *
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
tests:
name: ${{ matrix.copier_config.name }} - Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: ['3.9', '3.10', '3.11']
copier_config:
- name: Base example
package_name: example_package # The default package_name
extra_flags: ''
foldername: base_example
- name: No example module
package_name: 'drewtonian' # Same module name provided in `extra_flags` on the next line.
extra_flags: >-
--data project_name=new_science
--data package_name=drewtonian
--data author_name=Drew
--data [email protected]
--data project_license=BSD
--data mypy_type_checking=basic
--data create_example_module=no
--data include_notebooks=no
foldername: 'black_w_o_example_module'
- name: Example module
package_name: 'drewtonian' # Same module name provided in `extra_flags` on the next line.
extra_flags: >-
--data project_name=new_science
--data package_name=drewtonian
--data author_name=Drew
--data [email protected]
--data project_license=BSD
--data mypy_type_checking=basic
--data create_example_module=yes
--data include_notebooks=no
foldername: 'black_w_example_module'
- name: No sphinx docs
package_name: 'drewtonian'
extra_flags: >-
--data project_name=new_science
--data package_name=drewtonian
--data include_docs=no
--data include_notebooks=no
foldername: 'no_sphinx_docs'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Python dependencies
run: |
sudo apt-get update
python -m pip install --upgrade pip
python -m pip install copier mypy
- name: Generate package
run: |
copier copy --vcs-ref HEAD --defaults ${{ matrix.copier_config.extra_flags }} ./ ../test/${{ matrix.copier_config.foldername }}
cd ../test/${{ matrix.copier_config.foldername }}
cat .copier-answers.yml
- name: Build package
run: |
cd ../test/${{ matrix.copier_config.foldername }}
git config --global user.email "[email protected]"
git config --global user.name "Test Name"
git init --initial-branch=main
git add src
git commit -m initial
pip install .[dev]
- name: black checks
uses: psf/black@stable
with:
src: "../test/${{ matrix.copier_config.foldername }}/src"
- name: mypy checks basic
if: ${{ contains(matrix.copier_config.extra_flags, 'mypy_type_checking=basic') && !contains(matrix.copier_config.extra_flags, 'create_example_module=no') }}
run: |
cd "../test/${{ matrix.copier_config.foldername }}"
mypy src tests
- name: mypy checks strict
if: ${{ contains(matrix.copier_config.extra_flags, 'mypy_type_checking=strict') && !contains(matrix.copier_config.extra_flags, 'create_example_module=no') }}
run: |
cd "../test/${{ matrix.copier_config.foldername }}"
mypy --strict src tests
- name: Install notebook requirements
if: ${{ !contains(matrix.copier_config.extra_flags, 'include_notebooks=no') }}
run: |
sudo apt-get install pandoc
pip install -r ../test/${{ matrix.copier_config.foldername }}/docs/requirements.txt
cat ../test/${{ matrix.copier_config.foldername }}/docs/requirements.txt
- name: Build docs
if: ${{ !contains(matrix.copier_config.extra_flags, 'include_docs=no') }}
run: |
cd ../test/${{ matrix.copier_config.foldername }}
sphinx-build -T -E -b html -d docs/build/doctrees ./docs docs/build/html
- name: Tests
if: ${{ !contains(matrix.copier_config.extra_flags, 'create_example_module=no') }}
run: |
cd ../test/${{ matrix.copier_config.foldername }}
python -m pytest --cov=${{ matrix.copier_config.package_name }} --cov-report=xml