Skip to content

Commit

Permalink
Update from latest template
Browse files Browse the repository at this point in the history
  • Loading branch information
rly committed Oct 22, 2023
1 parent aea6e3f commit fd6fc5a
Show file tree
Hide file tree
Showing 9 changed files with 329 additions and 1 deletion.
39 changes: 39 additions & 0 deletions .github/workflows/check_external_links.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Check Sphinx external links
on:
push:
pull_request:
schedule:
- cron: '0 5 * * *' # once per day at midnight ET
workflow_dispatch:

jobs:
check-external-links:
name: Check for broken Sphinx external links
runs-on: ubuntu-latest
steps:
- name: Cancel any previous incomplete runs
uses: styfle/[email protected]
with:
all_but_latest: true
access_token: ${{ github.token }}

- uses: actions/checkout@v3
with:
submodules: 'recursive'
fetch-depth: 0 # tags are required for versioneer to determine the version

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Install Sphinx dependencies and package
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements-dev.txt
python -m pip install .
- name: Check Sphinx external links
run: |
cd docs # run_doc_autogen assumes spec is found in ../spec/
sphinx-build -b linkcheck ./source ./test_build
15 changes: 15 additions & 0 deletions .github/workflows/codespell.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Codespell
on:
push:
pull_request:
workflow_dispatch:

jobs:
codespell:
name: Check for spelling errors
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Codespell
uses: codespell-project/actions-codespell@v2
15 changes: 15 additions & 0 deletions .github/workflows/ruff.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Ruff
on:
push:
pull_request:
workflow_dispatch:

jobs:
ruff:
name: Check for style errors and common problems
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Ruff
uses: chartboost/ruff-action@v1
184 changes: 184 additions & 0 deletions .github/workflows/run_all_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
name: Run all tests
on:
push:
pull_request:
schedule:
- cron: '0 5 * * *' # once per day at midnight ET
workflow_dispatch:

jobs:
run-all-tests:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
include:
- { name: linux-python3.8-minimum , requirements: minimum , python-ver: "3.8" , os: ubuntu-latest }
- { name: linux-python3.8 , requirements: pinned , python-ver: "3.8" , os: ubuntu-latest }
- { name: linux-python3.9 , requirements: pinned , python-ver: "3.9" , os: ubuntu-latest }
- { name: linux-python3.10 , requirements: pinned , python-ver: "3.10", os: ubuntu-latest }
- { name: linux-python3.11 , requirements: pinned , python-ver: "3.11", os: ubuntu-latest }
- { name: linux-python3.12 , requirements: pinned , python-ver: "3.12", os: ubuntu-latest }
- { name: linux-python3.12-upgraded , requirements: upgraded , python-ver: "3.12", os: ubuntu-latest }
- { name: windows-python3.8-minimum , requirements: minimum , python-ver: "3.8" , os: windows-latest }
- { name: windows-python3.8 , requirements: pinned , python-ver: "3.8" , os: windows-latest }
- { name: windows-python3.9 , requirements: pinned , python-ver: "3.9" , os: windows-latest }
- { name: windows-python3.10 , requirements: pinned , python-ver: "3.10", os: windows-latest }
- { name: windows-python3.11 , requirements: pinned , python-ver: "3.11", os: windows-latest }
- { name: windows-python3.12 , requirements: pinned , python-ver: "3.12", os: windows-latest }
- { name: windows-python3.12-upgraded , requirements: upgraded , python-ver: "3.12", os: windows-latest }
- { name: macos-python3.8-minimum , requirements: minimum , python-ver: "3.8" , os: macos-latest }
- { name: macos-python3.8 , requirements: pinned , python-ver: "3.8" , os: macos-latest }
- { name: macos-python3.9 , requirements: pinned , python-ver: "3.9" , os: macos-latest }
- { name: macos-python3.10 , requirements: pinned , python-ver: "3.10", os: macos-latest }
- { name: macos-python3.11 , requirements: pinned , python-ver: "3.11", os: macos-latest }
- { name: macos-python3.12 , requirements: pinned , python-ver: "3.12", os: macos-latest }
- { name: macos-python3.12-upgraded , requirements: upgraded , python-ver: "3.12", os: macos-latest }
steps:
- name: Cancel non-latest runs
uses: styfle/[email protected]
with:
all_but_latest: true
access_token: ${{ github.token }}

- uses: actions/checkout@v3
with:
submodules: 'recursive'
fetch-depth: 0 # fetch tags

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-ver }}

- name: Install build dependencies
run: |
python -m pip install --upgrade pip
python -m pip list
python -m pip check
- name: Install run requirements (minimum)
if: ${{ matrix.requirements == 'minimum' }}
run: |
python -m pip install -r requirements-min.txt -r requirements-dev.txt
python -m pip install -e .
- name: Install run requirements (pinned)
if: ${{ matrix.requirements == 'pinned' }}
run: |
python -m pip install -r requirements-dev.txt
python -m pip install -e .
- name: Install run requirements (upgraded)
if: ${{ matrix.requirements == 'upgraded' }}
run: |
python -m pip install -r requirements-dev.txt
python -m pip install -U -e .
- name: Run tests
run: |
pytest -v
- name: Build wheel and source distribution
run: |
python -m pip install --upgrade build
python -m build
ls -1 dist
- name: Test installation from a wheel (POSIX)
if: ${{ matrix.os != 'windows-latest' }}
run: |
python -m venv test-wheel-env
source test-wheel-env/bin/activate
python -m pip install dist/*-none-any.whl
python -c "import ndx_hed"
- name: Test installation from a wheel (windows)
if: ${{ matrix.os == 'windows-latest' }}
run: |
python -m venv test-wheel-env
test-wheel-env/Scripts/activate.bat
python -m pip install dist/*-none-any.whl
python -c "import ndx_hed"
run-all-tests-on-conda:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0} # needed for conda environment to work
strategy:
fail-fast: false
matrix:
include:
- { name: conda-linux-python3.8-minimum , requirements: minimum , python-ver: "3.8" , os: ubuntu-latest }
- { name: conda-linux-python3.8 , requirements: pinned , python-ver: "3.8" , os: ubuntu-latest }
- { name: conda-linux-python3.9 , requirements: pinned , python-ver: "3.9" , os: ubuntu-latest }
- { name: conda-linux-python3.10 , requirements: pinned , python-ver: "3.10", os: ubuntu-latest }
- { name: conda-linux-python3.11 , requirements: pinned , python-ver: "3.11", os: ubuntu-latest }
- { name: conda-linux-python3.12 , requirements: pinned , python-ver: "3.12", os: ubuntu-latest }
- { name: conda-linux-python3.12-upgraded , requirements: upgraded , python-ver: "3.12", os: ubuntu-latest }
steps:
- name: Cancel any previous incomplete runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}

- uses: actions/checkout@v3
with:
submodules: 'recursive'
fetch-depth: 0 # fetch tags

- name: Set up Conda
uses: conda-incubator/setup-miniconda@v2
with:
auto-update-conda: true
auto-activate-base: true
activate-environment: true
python-version: ${{ matrix.python-ver }}

- name: Install build dependencies
run: |
conda config --set always_yes yes --set changeps1 no
conda info
conda config --show-sources
conda list --show-channel-urls
- name: Install run requirements (minimum)
if: ${{ matrix.requirements == 'minimum' }}
run: |
python -m pip install -r requirements-min.txt -r requirements-dev.txt
python -m pip install -e .
- name: Install run requirements (pinned)
if: ${{ matrix.requirements == 'pinned' }}
run: |
python -m pip install -r requirements-dev.txt
python -m pip install -e .
- name: Install run requirements (upgraded)
if: ${{ matrix.requirements == 'upgraded' }}
run: |
python -m pip install -r requirements-dev.txt
python -m pip install -U -e .
- name: Run tests
run: |
pytest -v
- name: Build wheel and source distribution
run: |
python -m pip install --upgrade build
python -m build
ls -1 dist
- name: Test installation from a wheel (POSIX)
run: |
python -m venv test-wheel-env
source test-wheel-env/bin/activate
python -m pip install dist/*-none-any.whl
python -c "import ndx_hed"
60 changes: 60 additions & 0 deletions .github/workflows/run_coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Run code coverage
on:
push:
pull_request:
workflow_dispatch:

jobs:
run-coverage:
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
# TODO handle forks
# run pipeline on either a push event or a PR event on a fork
# if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
defaults:
run:
shell: bash
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
env: # used by codecov-action
OS: ${{ matrix.os }}
PYTHON: '3.11'
steps:
- name: Cancel any previous incomplete runs
uses: styfle/[email protected]
with:
all_but_latest: true
access_token: ${{ github.token }}

- uses: actions/checkout@v3
with:
submodules: 'recursive'
fetch-depth: 0 # fetch tags

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON }}

- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements-dev.txt
- name: Install package
run: |
python -m pip install -e . # must install in editable mode for coverage to find sources
python -m pip list
- name: Run tests and generate coverage report
run: |
pytest --cov
python -m coverage xml # codecov uploader requires xml format
python -m coverage report -m
# TODO uncomment after setting up repo on codecov.io
# - name: Upload coverage to Codecov
# uses: codecov/codecov-action@v3
# with:
# fail_ci_if_error: true
7 changes: 7 additions & 0 deletions NEXTSTEPS.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,13 @@ your extension.

8. Update the `CHANGELOG.md` to document changes to your extension.

8. Push your repository to GitHub. A default set of GitHub Actions workflows is set up to
test your code on Linux, Windows, Mac OS, and Linux using conda; upload code coverage
stats to codecov.io; check for spelling errors; check for style errors; and check for broken
links in the documentation. For the code coverage workflow to work, you will need to
set up the repo on codecov.io and uncomment the "Upload coverage to Codecov" step
in `.github/workflows/run_coverage.yml`.

8. Make a release for the extension on GitHub with the version number specified. e.g. if version is 0.1.0, then this page should exist: https://github.com/rly/ndx-hed/releases/tag/0.1.0 . For instructions on how to make a release on GitHub see [here](https://help.github.com/en/github/administering-a-repository/creating-releases).

9. Publish your updated extension on [PyPI](https://pypi.org/).
Expand Down
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ keywords = [
'ndx-extension',
]
dependencies = [
"pynwb>=2",
"pynwb>=2.5.0",
"hdmf>=3.10.0",
]

# TODO: add URLs before release
Expand Down
2 changes: 2 additions & 0 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
black==23.9.1
codespell==2.2.6
coverage==7.3.2
hdmf==3.10.0
hdmf-docutils==0.4.5
pre-commit==3.4.0
pynwb==2.5.0
pytest==7.4.2
pytest-cov==4.1.0
python-dateutil==2.8.2
Expand Down
5 changes: 5 additions & 0 deletions requirements-min.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# minimum versions of package dependencies for installation
# these should match the minimum versions specified in pyproject.toml
# NOTE: it may be possible to relax these minimum requirements
pynwb==2.5.0
hdmf==3.10.0

0 comments on commit fd6fc5a

Please sign in to comment.