Skip to content

Commit

Permalink
Readd CI and fix issues (#148)
Browse files Browse the repository at this point in the history
* small change to readme

* readd ci

* start fixing tests

* use old typing list or magicgui fails

* use old typing list or magicgui fails

* add headless gui and qt libs

* fix syntax

* ditch 3.8
  • Loading branch information
brisvag authored Aug 29, 2023
1 parent 29ce068 commit e7fd060
Show file tree
Hide file tree
Showing 5 changed files with 155 additions and 10 deletions.
138 changes: 138 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
name: CI

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
push:
branches:
- main
tags:
- "v*"
pull_request:
workflow_dispatch:
schedule:
- cron: "0 0 * * 0" # every week (for --pre release tests)

jobs:
check-manifest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: pipx run check-manifest

test:
name: ${{ matrix.platform }} (${{ matrix.python-version }})
runs-on: ${{ matrix.platform }}
strategy:
fail-fast: false
matrix:
python-version: ['3.9', '3.10', '3.11']
platform: [ubuntu-latest, macos-latest, windows-latest]

steps:
- uses: actions/checkout@v3

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache-dependency-path: "pyproject.toml"
cache: "pip"

- name: Set up QT libraries
uses: tlambert03/setup-qt-libs@v1

# if running a cron job, we add the --pre flag to test against pre-releases
- name: Install dependencies
run: |
python -m pip install -U pip
python -m pip install .[test] ${{ github.event_name == 'schedule' && '--pre' || '' }}
- name: Test
uses: aganders3/headless-gui@v1
with:
run: pytest --color=yes --cov --cov-report=xml --cov-report=term-missing

# If something goes wrong, we can open an issue in the repo
- name: Report --pre Failures
if: failure() && github.event_name == 'schedule'
uses: JasonEtco/create-an-issue@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PLATFORM: ${{ matrix.platform }}
PYTHON: ${{ matrix.python-version }}
RUN_ID: ${{ github.run_id }}
TITLE: '[test-bot] pip install --pre is failing'
with:
filename: .github/TEST_FAIL_TEMPLATE.md
update_existing: true

- name: Coverage
uses: codecov/codecov-action@v3

docs:
name: Generate Docs
needs: test
if: success() && github.event_name != 'schedule'
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.x"

- name: Install dependencies
working-directory: ./docs
run: |
pip install -U pip
pip install -r requirements.txt
- name: Build the book
working-directory: ./docs
run: |
jupyter-book build .
- name: GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/_build/html

deploy:
name: Deploy
needs: test
if: success() && startsWith(github.ref, 'refs/tags/') && github.event_name != 'schedule'
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.x"

- name: install
run: |
pip install -U pip build twine
python -m build
twine check dist/*
- name: Build and publish
run: twine upload dist/*
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.TWINE_API_KEY }}

- uses: softprops/action-gh-release@v1
with:
generate_release_notes: true
2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
[![CI](https://github.com/brisvag/blik/actions/workflows/ci.yml/badge.svg)](https://github.com/brisvag/blik/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/brisvag/blik/branch/main/graph/badge.svg)](https://codecov.io/gh/brisvag/blik)

*it means glance in Dutch*

![blik showcase](https://user-images.githubusercontent.com/23482191/161224963-ad746a06-c2e5-46fe-a13b-f356bc4ad72b.png)

**`blik`** is a tool for visualising and interacting with cryo-ET and subtomogram averaging data. It leverages the fast, multi-dimensional [napari viewer](https://napari.org) and the scientific python stack.
Expand Down
14 changes: 9 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ build-backend = "hatchling.build"
name = "blik"
description = "Python tool for visualising and interacting with cryo-ET and subtomogram averaging data."
readme = "README.md"
requires-python = ">=3.8"
requires-python = ">=3.9"
license = { text = "GPLv3" }
authors = [
{ email = "[email protected]", name = "Lorenzo Gaifas" },
Expand All @@ -18,7 +18,6 @@ classifiers = [
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
Expand Down Expand Up @@ -48,7 +47,12 @@ all = [
"napari-properties-viewer",
"napari-label-interpolator",
]
test = ["pytest>=6.0", "pytest-cov", "napari[all]>=0.4.18"]
test = [
"pytest>=6.0",
"pytest-cov",
"pytest-qt",
"napari[all]>=0.4.18"
]
dev = [
"black",
"ipython",
Expand All @@ -57,6 +61,7 @@ dev = [
"pre-commit",
"pytest-cov",
"pytest",
"pytest-qt",
"rich",
"ruff",
"napari[all]>=0.4.18",
Expand Down Expand Up @@ -90,7 +95,7 @@ sources = ["src"]
# https://github.com/charliermarsh/ruff
[tool.ruff]
line-length = 120
target-version = "py38"
target-version = "py39"
src = ["src"]
# https://beta.ruff.rs/docs/rules/
select = [
Expand Down Expand Up @@ -127,7 +132,6 @@ ignore = [
[tool.pytest.ini_options]
minversion = "6.0"
testpaths = ["tests"]
filterwarnings = ["error"]

# https://mypy.readthedocs.io/en/stable/config_file.html
[tool.mypy]
Expand Down
6 changes: 4 additions & 2 deletions src/blik/widgets/main_widget.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from __future__ import annotations

from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, List

import numpy as np
import pandas as pd
Expand Down Expand Up @@ -145,7 +145,9 @@ def add_to_exp(layer: napari.layers.Layer):
call_button="Create",
l_type={"choices": ["segmentation", "particles", "surface_picking"]},
)
def new(l_type) -> list[napari.layers.Layer]:
def new(
l_type,
) -> List[napari.layers.Layer]: # noqa. This must be List, not list (magicgui...)
"""create a new layer to add to this experiment."""
layers = getattr(new._main_widget["experiment"], "current_layers", [])
if not layers:
Expand Down
5 changes: 4 additions & 1 deletion tests/test_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ def test_main_widget(make_napari_viewer):
viewer = make_napari_viewer()
with napari.layers._source.layer_source(reader_plugin="blik"):
viewer.add_image(
np.ones((10, 10, 10)), metadata={"experiment_id": "test", "stack": False}
np.ones((10, 10, 10)),
name="test",
metadata={"experiment_id": "test", "stack": False},
)
viewer.window.add_dock_widget(wdg)
assert "test" in wdg[0].experiment_id.choices
Expand All @@ -28,6 +30,7 @@ def test_main_widget(make_napari_viewer):
# add new picking
wdg[1].l_type.value = "particles"
wdg[1]()
assert viewer.layers[-2].name == "test - particle orientations"
assert viewer.layers[-1].name == "test - particle positions"

# add layer manually
Expand Down

0 comments on commit e7fd060

Please sign in to comment.