Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
Documentation: a “Migrating from pyNEID” guide mapping every pyNEID call to its
nexsci-rvequivalent.
Changed
Documentation: the concepts pages and glossary are now archive-neutral, with instrument-specific details on each archive’s page and per-archive glossary sections.
[1.0.1] — 2026-10-27
Fixed
Queries no longer fail out of the box when the NEID TAP server cannot render a result in IPAC table format: the default
output_formatfor all query methods anddescribe_tableis now"votable"(previously"ipac"). Results are still returned as anastropy.table.Table; passoutput_format="ipac"to get the old behavior.Unsuccessful HTTP responses from the TAP service (sync queries and async job submit, poll, result fetch, and abort) now raise
TapServerErrorcarrying the server’s error message, instead of a barerequests.HTTPErrorwith only the status code.download()on an L1 or L2 query result fetched the L0 files instead, because NEID rows list the L0, L1, and L2 files and the first match won. Results from thequery_*methods now record their data level (Table.meta["nexsci_rv_data_level"]) anddownload()uses it. When the level cannot be determined unambiguously,download()raisesQueryErrorasking fordata_level=instead of guessing.NEID solar and engineering downloads looked for nonexistent columns (
solarl2filename,engfilename, …); they now use thel0/l1/l2file columns those tables actually carry. Those columns can also now be requested withcolumns=.NEIDArchive.query_position,query_object, and theposition/objectkeys ofquery_criteriasearched onra/dec, which NEID tables do not have; they now search onqrad/qdecd.EXPRES downloads sent the
l<n>filehandcolumn (a directory only), which the server rejects; they now send the fulll<n>filepath.When the archive answers a file request with an error (it returns HTTP 200 with a JSON body for unavailable files),
download()no longer saves that JSON under the.fitsname and reports success; the file is recorded as a failure (newFileUnavailableexception, collected inDownloadError.failures).
[1.0.0] — 2026-10-27
First public release.
Added
NEIDArchivebackend covering NEID L0/L1/L2, engineering, and solar tables.EXPRESArchivebackend covering EXPRES solar L1 and L2.Shared core: TAP client, cookie-based
SessionManager, paralleldownload()with retry and resume,AsyncJobfor async TAP queries.Sphinx (MyST) documentation on GitHub Pages, written for astronomers new to RV archives: quickstart, a guided “first query” page, an “Understanding the data” concepts layer, glossary, per-archive pages, guides, and API reference.
Three tutorial notebooks under
docs/tutorials/, exercised in CI vianbmakein an offline stub mode (NEXSCI_RV_OFFLINE_FIXTURES=1).Support section pointing to
neid-help@ipac.caltech.eduand GitHub Issues.
Fixed
NEIDArchive.query_datetimefiltered on a nonexistentdate_obscolumn (server errorORA-00904); NEID tables useobsdate, as EXPRES does.download()ignored theserver=override and always fetched from the production host; downloads now go to the same server as queries and login, for both NEID and EXPRES.
Security
Pre-release audit with remediations applied: EXPRES query gaps raise
NotApplicable, cookie-file race fix, defusedxml documentation, pip-audit clean. User-facing credential guidance lives in the Authentication guide.
Relationship to pyNEID
nexsci-rv is a clean-room successor to the
pyNEID package. It is not API
compatible. Motivations for the rewrite:
Multi-archive support (NEID + EXPRES, with extensibility for more) rather than NEID-only.
New PyPI project (the original
pyneidPyPI account is no longer accessible).Cleaner internal architecture: archive-backends + shared core, replacing a 3,900-line monolithic
core.py.Modern packaging (
pyproject.toml, ruff, mypy, GitHub Actions, Trusted Publishing).Polished auth (per-archive cookies in
~/.config/nexsci-rv/, env-var credentials,getpassprompts, 0600 file mode).Default server is the NEID production server.
Existing pyNEID users should migrate by rewriting imports and call sites. There is no compatibility shim.