diff --git a/.readthedocs_env.yml b/.readthedocs_env.yml
index 4a506191..54016b12 100644
--- a/.readthedocs_env.yml
+++ b/.readthedocs_env.yml
@@ -22,4 +22,8 @@ dependencies:
- reproject
- setuptools
- sphinx
- - sphinx-automodapi
+ # This pin is to work around a conda verification error
+ # that first appeared in the CI for https://github.com/WorldWideTelescope/pywwt/pull/375.
+ # At the time of writing this, the issue only occurs with sphinx-automodapi==0.17,
+ # which is the newest version.
+ - sphinx-automodapi=0.16
diff --git a/CHANGELOG.md b/CHANGELOG.md
index becf7f5b..0e0b8e5c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,19 @@
+# pypa:pywwt 0.24.0 (2024-05-21)
+
+- Add an API to allow refreshing of the engine's tile cache (#375, @Carifio24).
+ This is not something that should be needed in any kind of regular usage, but
+ for long-lived applications that want to avoid page reloads, it can provide
+ an emergency means to unstick the data flow.
+- Only require `qtpy` if one of the Qt options is enabled (#376, @Carifio24).
+- Update Jupyter install requirements (#370, @Carifio24).
+- Re-enable DOI registration (#371, @pkgw). The Cranko Zenodo support has been
+ updated to work with the new Zenodo API contracts.
+
+The DOI of this release is [10.5281/zenodo.10385538][vdoi].
+
+[vdoi]: 10.5281/zenodo.10385538
+
+
# pypa:pywwt 0.23.0 (2023-11-28)
- Update the Jupyter widget implementation to use ES6 class syntax (#368,
diff --git a/ci/azure-build-and-test.yml b/ci/azure-build-and-test.yml
index 777de085..47d149ee 100644
--- a/ci/azure-build-and-test.yml
+++ b/ci/azure-build-and-test.yml
@@ -199,7 +199,7 @@ jobs:
set -x
\conda install -y pytest-cov pytest-remotedata pytest-timeout
python setup.py build
- pytest -v -s pywwt -p no:warnings --timeout=180 --timeout_method=thread --cov-report=xml --cov=pywwt
+ pytest -v -s pywwt -p no:warnings --timeout=1800 --timeout_method=thread --cov-report=xml --cov=pywwt
displayName: Test with coverage
- bash: bash <(curl -s https://codecov.io/bash)
diff --git a/ci/azure-deployment.yml b/ci/azure-deployment.yml
index 9bf955a7..23725ba3 100644
--- a/ci/azure-deployment.yml
+++ b/ci/azure-deployment.yml
@@ -111,35 +111,33 @@ jobs:
- bash: shred ~/.npmrc
displayName: Clean up credentials
- # 2023 Nov: temporarily disabling Zenodo; they have just updated their API and broken
- # everything, and we want to ge a release out.
- #- job: zenodo_publish
- # pool:
- # vmImage: ubuntu-latest
- # variables:
- # - group: Deployment Credentials
- #
- # steps:
- # - template: azure-job-setup.yml
- # parameters:
- # setupCranko: true
- #
- # - bash: |
- # set -xeuo pipefail
- #
- # if cranko show if-released --exit-code pypa:pywwt ; then
- # cranko zenodo upload-artifacts --metadata=ci/zenodo.json5 $BASH_WORKSPACE/sdist/*.tar.gz
- # fi
- # displayName: Upload source tarball
- # env:
- # ZENODO_TOKEN: $(ZENODO_TOKEN)
- #
- # - bash: |
- # set -xeuo pipefail
- #
- # if cranko show if-released --exit-code pypa:pywwt ; then
- # cranko zenodo publish --metadata=ci/zenodo.json5
- # fi
- # displayName: Publish to Zenodo
- # env:
- # ZENODO_TOKEN: $(ZENODO_TOKEN)
+ - job: zenodo_publish
+ pool:
+ vmImage: ubuntu-latest
+ variables:
+ - group: Deployment Credentials
+
+ steps:
+ - template: azure-job-setup.yml
+ parameters:
+ setupCranko: true
+
+ - bash: |
+ set -xeuo pipefail
+
+ if cranko show if-released --exit-code pypa:pywwt ; then
+ cranko zenodo upload-artifacts --metadata=ci/zenodo.json5 $BASH_WORKSPACE/sdist/*.tar.gz
+ fi
+ displayName: Upload source tarball
+ env:
+ ZENODO_TOKEN: $(ZENODO_TOKEN)
+
+ - bash: |
+ set -xeuo pipefail
+
+ if cranko show if-released --exit-code pypa:pywwt ; then
+ cranko zenodo publish --metadata=ci/zenodo.json5
+ fi
+ displayName: Publish to Zenodo
+ env:
+ ZENODO_TOKEN: $(ZENODO_TOKEN)
diff --git a/ci/azure-job-setup.yml b/ci/azure-job-setup.yml
index d195b23f..f7f1bedf 100644
--- a/ci/azure-job-setup.yml
+++ b/ci/azure-job-setup.yml
@@ -100,8 +100,6 @@ steps:
set -euo pipefail
source activate-conda.sh
set -x
- # workaround for the Windows CI image:
- conda install -y brotlipy
conda config --add channels conda-forge
conda config --set channel_priority strict
conda update -y --all
diff --git a/ci/azure-sdist.yml b/ci/azure-sdist.yml
index ea790a7a..859ebdc6 100644
--- a/ci/azure-sdist.yml
+++ b/ci/azure-sdist.yml
@@ -29,14 +29,12 @@ jobs:
- bash: cranko release-workflow apply-versions
displayName: Apply Cranko versions
- # 2023 Nov: temporarily disabling Zenodo; they have just updated their API and broken
- # everything, and we want to ge a release out.
- # - bash: |
- # cranko zenodo preregister --metadata=ci/zenodo.json5 pypa:pywwt pywwt/_version.py CHANGELOG.md
- # displayName: "Preregister Zenodo DOI"
- # ${{ if and(eq(variables['Build.SourceBranchName'], 'rc'), ne(variables['build.reason'], 'PullRequest')) }}:
- # env:
- # ZENODO_TOKEN: $(ZENODO_TOKEN)
+ - bash: |
+ cranko zenodo preregister --metadata=ci/zenodo.json5 pypa:pywwt pywwt/_version.py CHANGELOG.md
+ displayName: "Preregister Zenodo DOI"
+ ${{ if and(eq(variables['Build.SourceBranchName'], 'rc'), ne(variables['build.reason'], 'PullRequest')) }}:
+ env:
+ ZENODO_TOKEN: $(ZENODO_TOKEN)
- bash: |
set -xeuo pipefail
diff --git a/ci/zenodo.json5 b/ci/zenodo.json5
index 4fd5ed97..852b3139 100644
--- a/ci/zenodo.json5
+++ b/ci/zenodo.json5
@@ -1,85 +1,73 @@
-// See https://pkgw.github.io/cranko/book/latest/integrations/zenodo.html
-// and https://developers.zenodo.org/#representation
-
{
- conceptrecid: '7164147',
-
- metadata: {
- upload_type: 'software',
- language: 'eng',
-
- // ** Keep this alphabetical by family name!!! **
- creators: [
+ "conceptrecid": "7164147",
+ "metadata": {
+ "access_right": "open",
+ "creators": [
{
- affiliation: 'Center for Astrophysics | Harvard & Smithsonian',
- name: 'Carifio, Jonathan',
- orcid: '0000-0002-7759-2601',
+ "affiliation": "Center for Astrophysics | Harvard & Smithsonian",
+ "name": "Carifio, Jonathan",
+ "orcid": "0000-0002-7759-2601"
},
{
- affiliation: 'Heidelberg Institute for Theoretical Studies',
- name: 'Gaibler, Volker',
- orcid: '0000-0001-7581-7574',
+ "affiliation": "Heidelberg Institute for Theoretical Studies",
+ "name": "Gaibler, Volker",
+ "orcid": "0000-0001-7581-7574"
},
{
- affiliation: 'Aperio Software',
- name: 'Homeier, Derek',
- orcid: '0000-0002-8546-9128',
+ "affiliation": "Aperio Software",
+ "name": "Homeier, Derek",
+ "orcid": "0000-0002-8546-9128"
},
{
- affiliation: 'Winter Way',
- name: 'Norman, Henrik',
- orcid: '0000-0003-4189-3450',
+ "affiliation": "Winter Way",
+ "name": "Norman, Henrik",
+ "orcid": "0000-0003-4189-3450"
},
{
- affiliation: 'Space Telescope Science Institute',
- name: 'Otor, O. Justin',
- orcid: '0000-0002-4679-5692',
+ "affiliation": "Space Telescope Science Institute",
+ "name": "Otor, O. Justin",
+ "orcid": "0000-0002-4679-5692"
},
{
- affiliation: 'Aperio Software',
- name: 'Robitaille, Thomas P.',
- orcid: '0000-0002-8642-1329',
+ "affiliation": "Aperio Software",
+ "name": "Robitaille, Thomas P.",
+ "orcid": "0000-0002-8642-1329"
},
{
- name: 'Subbarao, Jeffrey',
+ "name": "Subbarao, Jeffrey"
},
{
- affiliation: 'Center for Astrophysics | Harvard & Smithsonian',
- name: 'Williams, Peter K. G.',
- orcid: '0000-0003-3734-3587',
+ "affiliation": "Center for Astrophysics | Harvard & Smithsonian",
+ "name": "Williams, Peter K. G.",
+ "orcid": "0000-0003-3734-3587"
},
{
- affiliation: 'Center for Astrophysics | Harvard & Smithsonian',
- name: 'ZuHone, John',
- orcid: '0000-0003-3175-2347',
- },
+ "affiliation": "Center for Astrophysics | Harvard & Smithsonian",
+ "name": "ZuHone, John",
+ "orcid": "0000-0003-3175-2347"
+ }
],
-
- // Subset of HTML allowed here:
- description: 'pywwt is the official toolkit for accessing WorldWide \
-Telescope (WWT) from Python. Learn more at the pywwt website.',
-
- access_right: 'open',
- license: 'BSD-3-Clause', // see https://spdx.org/licenses/
-
- grants: [
- // National Science Foundation:
- {id: '10.13039/100000001::1550701'},
-
- // As of 2022 August these grants are not in the OpenAIRE "Research Graph"
- // and so Zenodo won't let us record them here. Test existence by
- // GET'ing `https://zenodo.org/api/grants/$id`.
- //
- //{id: '10.13039/100000001::1642446'},
- //{id: '10.13039/100000001::2004840'},
+ "description": "pywwt is the official toolkit for accessing WorldWide Telescope (WWT) from Python. Learn more at the pywwt website.",
+ "grants": [
+ {
+ "id": "10.13039/100000001::1550701"
+ }
],
-
- // Keywords use an uncontrolled vocabulary (and so are of limited usefulness):
- keywords: [
- 'Astronomy',
- 'Python',
- 'Visualization',
- 'WorldWide Telescope',
+ "keywords": [
+ "Astronomy",
+ "Python",
+ "Visualization",
+ "WorldWide Telescope"
],
+ "language": "eng",
+ "license": "BSD-3-Clause",
+ "publication_date": "2024-05-21",
+ "title": "pypa:pywwt 0.24.0",
+ "upload_type": "software",
+ "version": "0.24.0"
},
+ "conceptdoi": "10.5281/zenodo.7164147",
+ "record_id": "10385538",
+ "doi": "10.5281/zenodo.10385538",
+ "bucket_link": "https://zenodo.org/api/files/6029720a-d8ff-483a-a770-24e40c454989"
}
diff --git a/frontend/CHANGELOG.md b/frontend/CHANGELOG.md
index 388fb452..e6c18174 100644
--- a/frontend/CHANGELOG.md
+++ b/frontend/CHANGELOG.md
@@ -1,3 +1,9 @@
+# npm:pywwt 1.8.0 (2024-05-21)
+
+- Require version 0.17 of the research app, which adds an API for refreshing
+ the tile cache (#375, @Carifio24).
+
+
# npm:pywwt 1.7.0 (2023-11-28)
- Update the Jupyter widget implementation to use ES6 class syntax (#368,
diff --git a/frontend/package.json b/frontend/package.json
index 5e217c1d..5bc73074 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -5,7 +5,7 @@
},
"dependencies": {
"@jupyter-widgets/base": "^2 || ^3 || ^4 || ^5 || ^6",
- "@wwtelescope/research-app": "^0.16.0",
+ "@wwtelescope/research-app": "^0.17.0",
"underscore": "^1"
},
"description": "WorldWide Telescope from Python",
@@ -42,5 +42,5 @@
"clean": "shx rm -rf dist",
"pywwt-export": "npm run build && npm pack && node pywwt-export.js"
},
- "version": "1.7.0"
+ "version": "1.8.0"
}
diff --git a/pywwt/_version.py b/pywwt/_version.py
index 5d52bd0a..729bbe6e 100644
--- a/pywwt/_version.py
+++ b/pywwt/_version.py
@@ -1,4 +1,4 @@
-version_info = (0, 23, 0, 'final', 0) # cranko project-version tuple
+version_info = (0, 24, 0, 'final', 0) # cranko project-version tuple
_specifier_ = {
"alpha": ".a",
@@ -18,5 +18,5 @@
)
# The strings are auto-updated by Cranko during formal releases:
-version_doi = "xx.xxxx/dev-build.pypa:pywwt.version"
-concept_doi = "xx.xxxx/dev-build.pypa:pywwt.concept"
+version_doi = "10.5281/zenodo.10385538"
+concept_doi = "10.5281/zenodo.7164147"
diff --git a/pywwt/core.py b/pywwt/core.py
index 87b2fc60..945091a4 100644
--- a/pywwt/core.py
+++ b/pywwt/core.py
@@ -1372,3 +1372,13 @@ def _serialize_to_json(self, file, title, max_width, max_height):
def _save_added_data(self, dir):
self.layers._save_all_data_for_serialization(dir)
+
+ # Miscellaneous
+
+ def refresh_tile_cache(self):
+ """
+ Clear the current cache of tiles.
+ Note that this should only be used when necessary, as any
+ previously downloaded tiles will need to be re-fetched.
+ """
+ self._send_msg(event="clear_tile_cache")
diff --git a/pywwt/tests/test_layers.py b/pywwt/tests/test_layers.py
index 5615cefa..dea1ff6f 100644
--- a/pywwt/tests/test_layers.py
+++ b/pywwt/tests/test_layers.py
@@ -10,6 +10,7 @@
import pytest
from stat import S_IWGRP, S_IWOTH, S_IWUSR, S_IMODE
from tempfile import TemporaryDirectory
+from warnings import catch_warnings
from . import assert_widget_image, wait_for_test, DATA
from ..conftest import RUNNING_ON_CI, QT_INSTALLED # noqa
@@ -285,7 +286,7 @@ def test_cartesian_layer(self):
# Make sure adding the layer doesn't emit any warnings, which previously
# happened due to a bug with the logic in the table layer initialization
- with pytest.warns(None) as record:
+ with catch_warnings(record=True) as record:
layer = self.client.layers.add_table_layer(
table=table, coord_type="rectangular", x_att="x", y_att="y", z_att="z"
)
diff --git a/pywwt/tests/test_qt_widget.py b/pywwt/tests/test_qt_widget.py
index c77b4bf9..824251e4 100644
--- a/pywwt/tests/test_qt_widget.py
+++ b/pywwt/tests/test_qt_widget.py
@@ -6,7 +6,7 @@
from ..conftest import RUNNING_ON_CI
-WAIT_TIME = 5 if RUNNING_ON_CI else 1
+WAIT_TIME = 10 if RUNNING_ON_CI else 1
M42 = SkyCoord.from_name('M42')
diff --git a/setup.py b/setup.py
index 6841a7cf..46eba68d 100755
--- a/setup.py
+++ b/setup.py
@@ -117,7 +117,6 @@
"numpy>=1.9",
"python-dateutil",
"pytz",
- "qtpy",
"reproject>=0.8",
"requests",
"toasty>=0.18",
@@ -142,15 +141,22 @@
"qt": [
'PyQt5;python_version>="3"',
'PyQtWebEngine;python_version>="3"',
+ "qtpy",
],
"qt6": [
'PyQt6;python_version>="3"',
'PyQt6-WebEngine;python_version>="3"',
+ "qtpy",
+ ],
+ "notebook": [
+ "wwt_kernel_data_relay",
+ "notebook",
],
"lab": [
"jupyterlab",
"nbclassic",
"notebook",
+ "wwt_kernel_data_relay",
],
},
entry_points={},