Releases: Cassini-UVIS/pyuvis
v0.9.1 — Bug fixes + tutorial repair
0.9.1 — Bug fixes + tutorial repair
Fixes
PDSReadernow handlesOBJECT = SPECTRUMPDS3 labels (29 such files
exist in the UVIS archive — single-integration interplanetary H/He scans
likeEUV2004_018_10_08). SPECTRUM data is surfaced as a degenerate
(binned_bands, 1, 1)3-D array so callers can keep treating
PDSReader.dataas 3-D regardless of object type.PDSReaderacceptsstrpaths again (previously crashed with
AttributeError: 'str' object has no attribute 'with_suffix').- Unsupported PDS object types (e.g.
TIME_SERIES) now raise a clear
ValueErrornaming the supported types and pointing to issue #10. pyuvis.calib.greg.get_star_obs()now loads its bundledstars_list.txt
viaimportlib.resourcesinstead of a hardcoded Linux path; the file
ships inside the package (src/pyuvis/calib/stars_list.txt).
Documentation
- Repaired the Quarto tutorial notebooks under
docs/tutorials/after the
v0.9.0 nbdev-strip removed their imports. Each tutorial now has an
explicitSetupcell with the imports it needs; data-fetch demo cells
are marked#| eval: falseso the docs site renders cleanly without
PDS data on the runner. - Dropped
08_stats.ipynbfrom the sidebar (single orphan cell with no
recoverable content; file kept on disk for later revival).
Tests
- Added
tests/test_pdsreader.pycovering the QUBE and SPECTRUM code
paths plus the unsupported-type error path. Network tests are gated
behind@pytest.mark.networkand skipped by default; opt in with
pytest -m network.
v0.9.0 — Modernization (breaking)
0.9.0 — Modernization release (BREAKING)
⚠️ Breaking API changes. This release reorganizes pyuvis from an
nbdev-driven project into a standard Pythonsrc-layout package, and
migrates the planetarypy dependency to the 0.53 API. Downstream code
that imports from pyuvis will need updates — see the migration notes
below before upgrading.
Project layout
- Dropped nbdev as the development tool. Source of truth is now hand-edited
.pymodules undersrc/pyuvis/, not notebooks. Notebooks are kept as
Quarto-rendered tutorials underdocs/tutorials/and are not used to
generate package source. - Adopted hatchling for packaging; replaced
setup.py+settings.ini
with a staticpyproject.toml. - Documentation moved from Jekyll/fastpages to a Quarto website published
to GitHub Pages at https://cassini-uvis.github.io/pyuvis/. API
reference is now generated by quartodoc. - New
.github/workflows/docs.ymlbuilds and deploys the docs on each
push tomaster.
planetarypy 0.53 migration (BREAKING)
| Old | New |
|---|---|
from planetarypy.uvis import get_data_path, get_label_path, get_user_guide |
from planetarypy.catalog import fetch_product (returns DownloadedProduct) |
from planetarypy.pds.apps import find_indexes, get_index |
from planetarypy.pds import get_index (find_indexes removed; never used internally) |
get_index("cassini.uvis", "index") (two args) |
get_index("cassini.uvis.index") (single dotted key) |
from planetarypy.utils import nasa_datetime_to_iso, iso_to_nasa_date, nasa_date_to_datetime |
from planetarypy.datetime_format_converters import fromdoyformat + stdlib date.strftime("%Y-%j") |
UVPDS still accepts skip_download=... as a keyword argument for
backward compatibility with older tutorial code, but the value is now
ignored — planetarypy handles caching itself, and cache hits are pure
local stat calls.
Removed
pyuvis.downloadsmodule deleted. The COUVIS_0xxx volume URL pattern
it hardcoded is now owned by planetarypy's index registry.- All
from nbverbose.showdoc import show_docimports removed
(leftover nbdev2 utility, never called).
Renamed (BREAKING)
CatalogFilter.nasadate→CatalogFilter.doydatepyuvis.calib.steffl.steffl_spica_nasa_dates→steffl_spica_doy_dates
Fixed
steffl_spica_dateshad a malformed entry"2001-04-3"; fixed to
zero-padded"2001-04-03".UVPDS.__init__now asserts exactly one.DATfile in the resolved
product rather than silently picking the first match.
Migration tips
# old
from pyuvis.pds import CatalogFilter
cat = CatalogFilter("2002-198")
cat.nasadate # -> "2002-198"
# new
from pyuvis.pds import CatalogFilter
cat = CatalogFilter("2002-198")
cat.doydate # -> "2002-198"For the legacy planetarypy datetime helpers, the simplest replacements
are stdlib:
# old: utils.iso_to_nasa_date("2001-04-03")
import datetime as dt
dt.date.fromisoformat("2001-04-03").strftime("%Y-%j") # "2001-093"
# old: utils.nasa_date_to_datetime("2010-198")
from planetarypy.datetime_format_converters import fromdoyformat
fromdoyformat("2010-198").date()Support double occultations netcdf files
Double occultations would have different dimension names than usual.
The code now figures out the original dataset dimension names for proper initialization before renaming to the human readable versions "pixels", "wavelengths" and "times".
Pre-release of UVIS tools
Most of the data reading works for me but the S/W needs to have more eyes on it, so I create this release for a wider dissemination.