planetarypy 0.76.1__tar.gz → 0.76.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {planetarypy-0.76.1 → planetarypy-0.76.2}/CHANGELOG.md +6 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/PKG-INFO +1 -1
- {planetarypy-0.76.1 → planetarypy-0.76.2}/pyproject.toml +2 -2
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/__init__.py +1 -1
- planetarypy-0.76.2/src/planetarypy/spice/_deps.py +19 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/spice/generic_kernels.py +1 -2
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/spice/spicer.py +5 -2
- {planetarypy-0.76.1 → planetarypy-0.76.2}/.gitignore +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/AUTHORS.md +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/LICENSE +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/README.md +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/docs/README.md +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/catalog/__init__.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/catalog/_index_resolver.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/catalog/_mission_map.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/catalog/_objects.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/catalog/_parser.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/catalog/_pattern_resolver.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/catalog/_repo.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/catalog/_resolver.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/catalog/_schema.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/catalog/_url_rewrite.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/catalog/_validation.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/cli.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/config.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/constants/__init__.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/constants/_gm_jpl.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/constants/base.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/constants/iau2009.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/constants/iau2015.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/constants/nssdc/__init__.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/constants/nssdc/_loader.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/crs.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/data/__init__.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/datetime_format_converters.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/geo.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/instruments/__init__.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/instruments/go/__init__.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/instruments/go/ssi.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/instruments/mro/__init__.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/instruments/mro/ctx/__init__.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/instruments/mro/ctx/ctx_calib.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/instruments/mro/ctx/ctx_edr.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/instruments/mro/hirise.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/instruments/utils.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/io.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/isis/autoseed.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/pds/__init__.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/pds/dynamic_index.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/pds/dynamic_url_handlers.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/pds/index_fixes.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/pds/index_labels.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/pds/index_logging.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/pds/index_main.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/pds/meta_display.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/pds/static_index.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/pds/utils.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/plotting.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/psa.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/search.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/spice/__init__.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/spice/archived_kernels.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/spice/config.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/spice/pckernels.py +0 -0
- {planetarypy-0.76.1 → planetarypy-0.76.2}/src/planetarypy/utils.py +0 -0
|
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.76.2] - 2026-06-12
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Graceful error when the optional `[spice]` extra is missing.** `spiceypy` and `scipy` ship in the `[spice]` extra rather than core, so a bare `pip install planetarypy` does not have them — yet importing `planetarypy.spice` (or `planetarypy.spice.spicer`) failed with a bare `ModuleNotFoundError: No module named 'spiceypy'` that gave no hint about the fix. SPICE imports now route through a small guard that raises a clear `ImportError` telling the user to `pip install 'planetarypy[spice]'` (the conda package ships SPICE by default). Core is unaffected — `planetarypy` itself never imports SPICE, and the `scipy` import in `spicer.py` stays lazy.
|
|
13
|
+
|
|
8
14
|
## [0.76.1] - 2026-06-12
|
|
9
15
|
|
|
10
16
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: planetarypy
|
|
3
|
-
Version: 0.76.
|
|
3
|
+
Version: 0.76.2
|
|
4
4
|
Summary: Core package for planetary data tools. Includes PDS index utilities, SPICE integrations, and more.
|
|
5
5
|
Project-URL: Homepage, https://github.com/planetarypy/planetarypy
|
|
6
6
|
Project-URL: Repository, https://github.com/planetarypy/planetarypy
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "planetarypy"
|
|
7
|
-
version = "0.76.
|
|
7
|
+
version = "0.76.2"
|
|
8
8
|
description = "Core package for planetary data tools. Includes PDS index utilities, SPICE integrations, and more."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">= 3.11, <4"
|
|
@@ -201,7 +201,7 @@ DEP003 = [
|
|
|
201
201
|
]
|
|
202
202
|
|
|
203
203
|
[tool.bumpversion]
|
|
204
|
-
current_version = "0.76.
|
|
204
|
+
current_version = "0.76.2"
|
|
205
205
|
commit = true
|
|
206
206
|
tag = true
|
|
207
207
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"""Friendly import guard for the optional SPICE dependency stack.
|
|
2
|
+
|
|
3
|
+
``spiceypy`` and ``scipy`` ship in the ``[spice]`` extra rather than core, so a
|
|
4
|
+
bare ``pip install planetarypy`` does not have them. Routing their imports
|
|
5
|
+
through this module turns an otherwise cryptic ``ModuleNotFoundError`` into an
|
|
6
|
+
actionable hint pointing at the extra.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
SPICE_INSTALL_HINT = (
|
|
10
|
+
"planetarypy SPICE support requires the optional 'spice' dependencies "
|
|
11
|
+
"(spiceypy, scipy), which are not installed. Install them with:\n\n"
|
|
12
|
+
" pip install 'planetarypy[spice]'\n\n"
|
|
13
|
+
"(The conda package ships them by default.)"
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
try:
|
|
17
|
+
import spiceypy as spice # noqa: F401
|
|
18
|
+
except ImportError as exc: # pragma: no cover - only without the [spice] extra
|
|
19
|
+
raise ImportError(SPICE_INSTALL_HINT) from exc
|
|
@@ -36,8 +36,8 @@ from math import tau
|
|
|
36
36
|
|
|
37
37
|
import dateutil.parser as tparser
|
|
38
38
|
import numpy as np
|
|
39
|
-
import spiceypy as spice
|
|
40
39
|
|
|
40
|
+
from ._deps import SPICE_INSTALL_HINT, spice
|
|
41
41
|
from .generic_kernels import load_generic_kernels
|
|
42
42
|
|
|
43
43
|
_kernels_loaded = False
|
|
@@ -64,7 +64,10 @@ def _rotate_vector(vector, axis, angle_rad):
|
|
|
64
64
|
np.ndarray
|
|
65
65
|
Rotated 3D vector.
|
|
66
66
|
"""
|
|
67
|
-
|
|
67
|
+
try:
|
|
68
|
+
from scipy.spatial.transform import Rotation
|
|
69
|
+
except ImportError as exc: # pragma: no cover - only without the [spice] extra
|
|
70
|
+
raise ImportError(SPICE_INSTALL_HINT) from exc
|
|
68
71
|
|
|
69
72
|
axis = np.array(axis, dtype=np.float64)
|
|
70
73
|
axis /= np.linalg.norm(axis)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|