Skip to content

Commit

Permalink
Merge branch 'main' into howto-constraints
Browse files Browse the repository at this point in the history
  • Loading branch information
jni authored Aug 1, 2024
2 parents 0133957 + aa5ffbe commit b914813
Show file tree
Hide file tree
Showing 35 changed files with 338 additions and 17 deletions.
18 changes: 18 additions & 0 deletions .github/workflows/actionlint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Actionlint

on:
pull_request:
paths:
- '.github/**'

jobs:
actionlint:
name: Action lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check workflow files
run: |
bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
./actionlint -color -ignore SC2129
shell: bash
15 changes: 11 additions & 4 deletions .github/workflows/build_and_deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,15 +106,22 @@ jobs:

- name: get directory name
# if this is a tag, use the tag name as the directory name else dev
env:
REF: ${{ github.ref }}
run: |
if [[ "${{ github.ref }}" == "refs/tags/"* ]]; then
echo "branch_name=${{ github.ref_name }}" >> $GITHUB_ENV
TAG="${GITHUB_REF/refs\/tags\/v/}"
VER="${TAG/a*/}" # remove alpha identifier
VER="${VER/b*/}" # remove beta identifier
VER="${VER/rc*/}" # remove rc identifier
if [[ "$REF" == "refs/tags/v"* ]]; then
echo "branch_name=$VER" >> "$GITHUB_ENV"
else
echo "branch_name=dev" >> $GITHUB_ENV
echo "branch_name=dev" >> "$GITHUB_ENV"
fi
- name: Deploy Docs
if: github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/v') || startsWith(github.ref, 'refs/heads/main'))
if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && (startsWith(github.ref, 'refs/tags/v') || startsWith(github.ref, 'refs/heads/main'))
uses: peaceiris/actions-gh-pages@v3
with:
deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ prep-docs:
python $(docs_dir)/_scripts/prep_docs.py

docs-build: prep-docs
NAPARI_CONFIG="" NAPARI_APPLICATION_IPY_INTERACTIVE=0 sphinx-build -M html docs/ docs/_build -D sphinx_gallery_conf.examples_dirs=$(GALLERY_PATH) $(SPHINXOPTS)
NAPARI_CONFIG="" NAPARI_APPLICATION_IPY_INTERACTIVE=0 sphinx-build -M html docs/ docs/_build -WT --keep-going -D sphinx_gallery_conf.examples_dirs=$(GALLERY_PATH) $(SPHINXOPTS)

docs-xvfb: prep-docs
NAPARI_CONFIG="" NAPARI_APPLICATION_IPY_INTERACTIVE=0 xvfb-run --auto-servernum sphinx-build -M html docs/ docs/_build -D sphinx_gallery_conf.examples_dirs=$(GALLERY_PATH) $(SPHINXOPTS)
Expand Down
9 changes: 7 additions & 2 deletions docs/_static/version_switcher.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,16 @@
"url": "https://napari.org/dev/"
},
{
"name": "stable (0.5.0)",
"version": "0.5.0",
"name": "stable (0.5.1)",
"version": "0.5.1",
"preferred": true,
"url": "https://napari.org/stable/"
},
{
"name": "0.5.0",
"version": "0.5.0",
"url": "https://napari.org/0.5.0/"
},
{
"name": "0.4.19",
"version": "0.4.19",
Expand Down
2 changes: 2 additions & 0 deletions docs/_toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ subtrees:
entries:
- file: tutorials/fundamentals/quick_start
- file: tutorials/fundamentals/installation
- file: tutorials/fundamentals/installation_bundle_conda
- file: tutorials/fundamentals/getting_started
- file: tutorials/fundamentals/viewer
- file: guides/layers
Expand Down Expand Up @@ -180,6 +181,7 @@ subtrees:
- file: release/index
subtrees:
- entries:
- file: release/release_0_5_1
- file: release/release_0_5_0
- file: release/release_0_4_19
- file: release/release_0_4_18
Expand Down
3 changes: 2 additions & 1 deletion docs/community/meeting_schedule.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ If you are using napari or interested in how napari could be used in your work,
var modal = document.getElementById("eventDetailBackground");
modal.style.display = "block";
var eventTitle = eventObj.title.charAt(0).toUpperCase() + eventObj.title.slice(1);
document.getElementById("details").innerHTML = '<b>' + eventTitle + '</b>' + '<br>' + eventObj.extendedProps.description;
var eventLocation = eventObj.extendedProps.location;
document.getElementById("details").innerHTML = '<b>' + eventTitle + '</b>' + '<br>' + eventObj.extendedProps.description + '<br>' + '<b>Location: </b>' + '<a href='+eventLocation+'>'+eventLocation+'</a>';
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
modal.style.display = "none";
Expand Down
10 changes: 8 additions & 2 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@
# The analytics script that is served by Plausible
"plausible_analytics_url": "https://plausible.io/js/plausible.js",
},
"footer_start": ["napari-footer-links"],
"footer_end": ["napari-copyright"],
}

html_context = {
Expand Down Expand Up @@ -229,7 +231,7 @@ def get_supported_python_versions(project_name):

panels_add_bootstrap_css = False
pygments_style = 'solarized-dark'
suppress_warnings = ['myst.header', 'etoc.toctree']
suppress_warnings = ['myst.header', 'etoc.toctree', 'config.cache']

# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
Expand Down Expand Up @@ -324,6 +326,7 @@ def add_google_calendar_secrets(app, docname, source):
if docname == 'community/meeting_schedule':
source[0] = source[0].replace('{API_KEY}', GOOGLE_CALENDAR_API_KEY)


class FilterSphinxWarnings(logging.Filter):
"""Filter 'duplicate object description' warnings.
Expand All @@ -349,16 +352,19 @@ def filter(self, record: logging.LogRecord) -> bool:
return False
return True


def qt_docstrings(app, what, name, obj, options, lines):
"""Only show first line of Qt threading docstrings.
Avoids syntax errors since the Qt threading docstrings are written in
Markdown, and injected into rst docstring automatically.
"""
if "WorkerBase" in name:
ignore_list = ["WorkerBase", "FunctionWorker", "GeneratorWorker"]
if any([f in name for f in ignore_list]):
if len(lines) > 0:
del lines[1:]


def setup(app):
"""Set up docs build.
Expand Down
18 changes: 17 additions & 1 deletion docs/developers/coredev/packaging.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ This is all automated by the `conda-forge` infrastructure (see [previous example
We only need to check that the metadata in the recipe has been adjusted for the new release.
Pay special attention to the runtime dependencies and version strings!

> We keep a copy of the feedstock's recipe in the `napari/packaging` repo, which is updated manually whenever a change to `setup.cfg` is detected.
> We keep a copy of the feedstock's recipe in the `napari/packaging` repo, which is updated manually whenever a change to `pyproject.toml` is detected.
> Check the file `conda-recipe/meta.yaml` and make sure its `outputs` contents are synced to the `napari-feedstock` copy.
Once the conda-forge CI is passing and the PR is approved and merged, the final packages will be built on the default branch and uploaded to the `conda-forge` channel.
Expand All @@ -36,6 +36,22 @@ Due to the staging steps and CDN synchronization delays, the conda packages can
Check {doc}`release` for more details about the conda-forge release process and maintenance tasks.
```

#### conda packaging split

We provide three different outputs in the conda package recipe:

- `napari-base`: This is the package that ships the actual source and data. The runtime
requirements only include the basic functionality. This package is recommended as a
dependency for plugins and other projects. Most end users will prefer the `napari`
package, below, but this one may be useful for those wanting a more minimal
environment.
- `napari`: This output is what most users want. It depends on `napari-base`, and adds optional yet
recommended dependencies for (performant) GUI usage, like the plugin manager or numba. Note that
the Qt backend is _not_ included.
- `napari-menu`: Depends on `napari`, and ships the menuinst JSON file, in case you want a desktop
shortcut to start the application easily. This is included as part of the bundled installers for
convenience.

### conda packages in the `napari` channel

The `napari` project also has a `napari` channel in anaconda.org.
Expand Down
114 changes: 114 additions & 0 deletions docs/release/release_0_5_1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# napari 0.5.1

*Thursday, Jul 25, 2024*

We're happy to announce the release of napari 0.5.1!

napari is a fast, interactive, multi-dimensional image viewer for Python.
It's designed for exploring, annotating, and analyzing multi-dimensional
images. It's built on Qt (for the GUI), VisPy (for performant GPU-based
rendering), and the scientific Python stack (NumPy, SciPy, and friends).

For more information, examples, and documentation, please visit our website:
https://napari.org/

## Highlights

napari 0.5.1 is a bugfix release hot on the heels of
[napari 0.5.0](release_0_5_0). It fixes a critical bug with creating viewers
multiple times within a single IPython/Jupyter session
([#7106](https://github.com/napari/napari/pull/7106)), as well as regressions
with viewing multiscale 3D time series
([#7103](https://github.com/napari/napari/pull/7103)) and with converting image
layers to labels layers ([#7095](https://github.com/napari/napari/pull/7095)).

It also fixes a bug with NumPy 2 support
([#7104](https://github.com/napari/napari/pull/7104)) and our storing of layer
axis info when using the `channel_axis` keyword argument for images
([#7089](https://github.com/napari/napari/pull/7089)).

Read on for the full list of changes since the last version from just two weeks
ago!

## Improvements

- [enh] add an `add_plane` convenience method to ClippingPlaneList ([#6921](https://github.com/napari/napari/pull/6921))
- Cleanup _image_key_bindings ([#7116](https://github.com/napari/napari/pull/7116))
- Add napari-plugin-manager to optional info list ([#7117](https://github.com/napari/napari/pull/7117))

## Bug Fixes

- Move the _is_created assignment to the top ([#5078](https://github.com/napari/napari/pull/5078))
- [Bugfix] Fix logic in setting settings using env vars. ([#6669](https://github.com/napari/napari/pull/6669))
- Fix handling of units and axis_labels in add_image ([#7089](https://github.com/napari/napari/pull/7089))
- Fix label conversion with proj mode ([#7095](https://github.com/napari/napari/pull/7095))
- Account for displayed dimensions in multiscale translate adjustment ([#7103](https://github.com/napari/napari/pull/7103))
- fix call of np.clip in _update_thumbnail ([#7104](https://github.com/napari/napari/pull/7104))
- Always add `Empty` context key, even if `action` is already registered ([#7106](https://github.com/napari/napari/pull/7106))
- fix condition of adding asterix, when save reader of path ([#7112](https://github.com/napari/napari/pull/7112))
- Normalize path when searching for a plugin to open file ([#7127](https://github.com/napari/napari/pull/7127))

## Documentation

- Add link to partners in README.md ([#7069](https://github.com/napari/napari/pull/7069))
- Restore README image ([#7098](https://github.com/napari/napari/pull/7098))
- Update docs constraints files for new napari-sphinx-theme release ([#7111](https://github.com/napari/napari/pull/7111))
- Update release notes for 0.5.1 with new PRs ([docs#466](https://github.com/napari/docs/pull/466))
- Update Bundled App Installation Instructions ([docs#74](https://github.com/napari/docs/pull/74))
- Update Makefile to be consistent ([docs#448](https://github.com/napari/docs/pull/448))
- Use plausible configuration by the PyData Sphinx Theme ([docs#453](https://github.com/napari/docs/pull/453))
- More fixes to contributing documentation guide ([docs#454](https://github.com/napari/docs/pull/454))
- Add location field to community calendar ([docs#455](https://github.com/napari/docs/pull/455))
- Fix footer items ([docs#456](https://github.com/napari/docs/pull/456))
- Add docs about the new `napari-base` structure ([docs#457](https://github.com/napari/docs/pull/457))
- Add draft 0.5.1 release notes ([docs#464](https://github.com/napari/docs/pull/464))
- Update draft warning on 0.5.1 release notes ([docs#465](https://github.com/napari/docs/pull/465))
- Update release notes for 0.5.1 with new PRs ([docs#466](https://github.com/napari/docs/pull/466))

## Other Pull Requests

- Remove ready to merge on update of constraints PR ([#6984](https://github.com/napari/napari/pull/6984))
- Update `app-model`, `coverage`, `dask`, `fsspec`, `hypothesis`, `imageio`, `ipython`, `jsonschema`, `matplotlib`, `napari-svg`, `numpy`, `pillow`, `pint`, `pydantic`, `pyqt5`, `pyqt6`, `pytest`, `scipy`, `tifffile` ([#7045](https://github.com/napari/napari/pull/7045))
- Add actionlint on CI ([#7049](https://github.com/napari/napari/pull/7049))
- fix: set `target_commitish` for commit sha to fix benchmarks ([#7091](https://github.com/napari/napari/pull/7091))
- Use `viewer.layers` instead of `_layers.model().sourceModel()._root` for dummy context creation ([#7109](https://github.com/napari/napari/pull/7109))
- Limit setuptools vesion for minimum requirements test ([#7110](https://github.com/napari/napari/pull/7110))
- [Maint] Update dockerfile for xpra source change ([#7115](https://github.com/napari/napari/pull/7115))
- Fix pinning packages workflow by remove special pinning from macOS and add special for Windows ([#7119](https://github.com/napari/napari/pull/7119))
- Trigger docs deployment on tagged commit ([#7122](https://github.com/napari/napari/pull/7122))
- Update version switcher to include 0.5.0 ([docs#452](https://github.com/napari/docs/pull/452))
- deploy docs on manual trigger ([docs#462](https://github.com/napari/docs/pull/462))
- Add actionlint to prevent GHA workflow errors ([docs#463](https://github.com/napari/docs/pull/463))


## 9 authors added to this release (alphabetical)

(+) denotes first-time contributors 🥳

- [danieldegroot2](https://github.com/napari/napari/commits?author=danieldegroot2) - @danieldegroot2 +
- [Draga Doncila Pop](https://github.com/napari/napari/commits?author=DragaDoncila) - @DragaDoncila
- [Grzegorz Bokota](https://github.com/napari/napari/commits?author=Czaki) - @Czaki
- [jaime rodriguez-guerra](https://github.com/napari/napari/commits?author=jaimergp) ([docs](https://github.com/napari/docs/commits?author=jaimergp)) - @jaimergp
- [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) ([docs](https://github.com/napari/docs/commits?author=jni)) - @jni
- [Lorenzo Gaifas](https://github.com/napari/napari/commits?author=brisvag) - @brisvag
- [Markus Stabrin](https://github.com/napari/napari/commits?author=mstabrin) - @mstabrin
- [Melissa Weber Mendonça](https://github.com/napari/napari/commits?author=melissawm) ([docs](https://github.com/napari/docs/commits?author=melissawm)) - @melissawm
- [Peter Sobolewski](https://github.com/napari/napari/commits?author=psobolewskiPhD) - @psobolewskiPhD


## 11 reviewers added to this release (alphabetical)

(+) denotes first-time contributors 🥳

- [andrew sweet](https://github.com/napari/docs/commits?author=andy-sweet) - @andy-sweet
- [Draga Doncila Pop](https://github.com/napari/napari/commits?author=DragaDoncila) - @DragaDoncila
- [Genevieve Buckley](https://github.com/napari/docs/commits?author=GenevieveBuckley) - @GenevieveBuckley
- [Grzegorz Bokota](https://github.com/napari/napari/commits?author=Czaki) - @Czaki
- [jaime rodriguez-guerra](https://github.com/napari/napari/commits?author=jaimergp) ([docs](https://github.com/napari/docs/commits?author=jaimergp)) - @jaimergp
- [Juan Nunez-Iglesias](https://github.com/napari/napari/commits?author=jni) ([docs](https://github.com/napari/docs/commits?author=jni)) - @jni
- [Lorenzo Gaifas](https://github.com/napari/napari/commits?author=brisvag) - @brisvag
- [Lucy Liu](https://github.com/napari/docs/commits?author=lucyleeow) - @lucyleeow
- [Melissa Weber Mendonça](https://github.com/napari/napari/commits?author=melissawm) ([docs](https://github.com/napari/docs/commits?author=melissawm)) - @melissawm
- [Peter Sobolewski](https://github.com/napari/napari/commits?author=psobolewskiPhD) - @psobolewskiPhD
- [Wouter-Michiel Vierdag](https://github.com/napari/docs/commits?author=melonora) - @melonora

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 1 addition & 6 deletions docs/tutorials/fundamentals/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -237,19 +237,14 @@ process described above working. The bundled app version of napari is the same
version that you can get through the above described processes, and can still be
extended with napari plugins installed directly via the app.

```{important}
Note that the bundled app is still
in active development, and may not be very stable. We strongly recommend
[installing as a Python package instead](install-python-package).
```

To access the cross platform bundles you can visit our [release
page](https://github.com/napari/napari/releases) and scroll to the release you
are interested in. For example, the bundles for napari {{ napari_version }} can be
accessed {{ '[here](https://github.com/napari/napari/releases/tag/vNAPARI_VER)'.replace('NAPARI_VER', napari_version) }}.
To get to the download link, just scroll all the way to bottom of the page and
expand the `Assets` section. You can then download the appropriate file for your platform.

Check {doc}`installation_bundle_conda` for more detailed instructions.

<!-- #endregion -->

Expand Down
Loading

0 comments on commit b914813

Please sign in to comment.