JanusReader 0.18.2__tar.gz → 0.18.3__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.
- {janusreader-0.18.2 → janusreader-0.18.3}/CHNGELOG.md +5 -0
- {janusreader-0.18.2 → janusreader-0.18.3}/CITATION.cff +1 -1
- {janusreader-0.18.2 → janusreader-0.18.3}/PKG-INFO +8 -8
- {janusreader-0.18.2 → janusreader-0.18.3}/README.md +7 -7
- {janusreader-0.18.2 → janusreader-0.18.3}/pyproject.toml +1 -1
- {janusreader-0.18.2 → janusreader-0.18.3}/src/JanusReader/core.py +1 -1
- {janusreader-0.18.2 → janusreader-0.18.3}/src/JanusReader/__init__.py +0 -0
- {janusreader-0.18.2 → janusreader-0.18.3}/src/JanusReader/__main__.py +0 -0
- {janusreader-0.18.2 → janusreader-0.18.3}/src/JanusReader/cli.py +0 -0
- {janusreader-0.18.2 → janusreader-0.18.3}/src/JanusReader/exceptions.py +0 -0
- {janusreader-0.18.2 → janusreader-0.18.3}/src/JanusReader/py.typed +0 -0
- {janusreader-0.18.2 → janusreader-0.18.3}/src/JanusReader/vicar_head.py +0 -0
- {janusreader-0.18.2 → janusreader-0.18.3}/tests/conftest.py +0 -0
- {janusreader-0.18.2 → janusreader-0.18.3}/tests/test_core_extended.py +0 -0
- {janusreader-0.18.2 → janusreader-0.18.3}/tests/test_core_helpers.py +0 -0
- {janusreader-0.18.2 → janusreader-0.18.3}/tests/test_janus_reader.py +0 -0
- {janusreader-0.18.2 → janusreader-0.18.3}/tests/test_vicar_head.py +0 -0
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# JanusReader
|
|
2
2
|
|
|
3
|
+
## 0.18.3 13-10-2026
|
|
4
|
+
|
|
5
|
+
- Suppress the missing-label warning for `geom:target_heliocentric_distance` instead of `geom:spacecraft_heliocentric_distance`.
|
|
6
|
+
- Restore the missing-label warning for `geom:spacecraft_heliocentric_distance`.
|
|
7
|
+
|
|
3
8
|
## 0.18.2 13-10-2026
|
|
4
9
|
|
|
5
10
|
- Suppress the missing-label warning for `geom:spacecraft_heliocentric_distance`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: JanusReader
|
|
3
|
-
Version: 0.18.
|
|
3
|
+
Version: 0.18.3
|
|
4
4
|
Summary: Python Reader for the data from JANUS instrument suite on-board the ESA mission JUICE
|
|
5
5
|
Keywords: ESA,Space Missions,JUICE,JANUS,Jupiter
|
|
6
6
|
Author: Romolo Politi, Luca Penasa
|
|
@@ -23,7 +23,7 @@ Description-Content-Type: text/markdown
|
|
|
23
23
|
|
|
24
24
|
# JanusReader
|
|
25
25
|
|
|
26
|
-

|
|
27
27
|
[](https://doi.org/10.5281/zenodo.13364878)
|
|
28
28
|
|
|
29
29
|
**JanusReader** is the official Python library for reading data from the JANUS instrument on board ESA's JUICE mission. It loads image pixels and metadata from the accompanying PDS4 label.
|
|
@@ -32,7 +32,7 @@ Description-Content-Type: text/markdown
|
|
|
32
32
|
|
|
33
33
|
## Installation
|
|
34
34
|
|
|
35
|
-
The current source version is **0.18.
|
|
35
|
+
The current source version is **0.18.3** and requires **Python >=3.14,<4**.
|
|
36
36
|
|
|
37
37
|
Install the published package:
|
|
38
38
|
|
|
@@ -83,7 +83,7 @@ print(product.startDT, product.endDT)
|
|
|
83
83
|
product.Show() # General product information
|
|
84
84
|
product.Show(all=True) # Includes processing and instrument metadata
|
|
85
85
|
|
|
86
|
-
# Both distances are None when geom:Distances or the
|
|
86
|
+
# Both distances are None when geom:Distances or the target distance is missing.
|
|
87
87
|
spacecraft_solar_distance = product.spacecraftSolarDistance
|
|
88
88
|
target_solar_distance = product.targetSolarDistance
|
|
89
89
|
```
|
|
@@ -109,7 +109,7 @@ Attribute names are case-sensitive.
|
|
|
109
109
|
|
|
110
110
|
Since 0.18.0, `psa:stop_orbit_number` is no longer read, `endOrbit` is no longer created, and the information display omits End Orbit. Since 0.18.1, `psa:start_orbit_number`, `startOrbit`, and the Start Orbit display row are also removed.
|
|
111
111
|
|
|
112
|
-
Since 0.18.
|
|
112
|
+
Since 0.18.3, a missing `geom:target_heliocentric_distance` produces no missing-label warning; a missing spacecraft distance produces a warning again. If `geom:Distances` or the target distance field is absent, the constructor sets both `spacecraftSolarDistance` and `targetSolarDistance` to `None`. If only `geom:spacecraft_heliocentric_distance` is absent, it emits a warning and sets `spacecraftSolarDistance` to `None`, preserving the target distance.
|
|
113
113
|
|
|
114
114
|
Missing scalar label values generally produce a warning and return `None`; missing required XML structures can raise `IndexError`. Missing files raise `FileNotFoundError`, and malformed XML raises a parser error. With `vicar=True`, an invalid raw VICAR header raises `JanusReader.exceptions.NOT_VALID_VICAR_FILE`.
|
|
115
115
|
|
|
@@ -158,7 +158,7 @@ The repository's pytest configuration writes coverage reports under `coverage/`.
|
|
|
158
158
|
|
|
159
159
|
Before each release, set the version with `uv version <version>` (or `uv version --bump patch`), and update the README version badge, changelog, and citation metadata to match. Commit the updated `pyproject.toml` and `uv.lock` together.
|
|
160
160
|
|
|
161
|
-
For version 0.18.
|
|
161
|
+
For version 0.18.3:
|
|
162
162
|
|
|
163
163
|
```shell
|
|
164
164
|
uv sync --locked
|
|
@@ -171,7 +171,7 @@ uv build --no-sources
|
|
|
171
171
|
Set `UV_PUBLISH_TOKEN` to a PyPI API token through your shell or secret manager, then upload only the artifacts for the intended version:
|
|
172
172
|
|
|
173
173
|
```shell
|
|
174
|
-
uv publish dist/janusreader-0.18.
|
|
174
|
+
uv publish dist/janusreader-0.18.3.tar.gz dist/janusreader-0.18.3-py3-none-any.whl
|
|
175
175
|
```
|
|
176
176
|
|
|
177
177
|
Avoid a bare `uv publish` when `dist/` contains artifacts from older releases: it defaults to uploading all files in that directory. PyPI does not allow replacing an existing distribution filename with different contents; publish changed code under a new version.
|
|
@@ -183,7 +183,7 @@ The workflow [Upload Python Package](.github/workflows/python-publish.yml) start
|
|
|
183
183
|
1. Commit and push the release changes, including the workflow and `uv.lock`.
|
|
184
184
|
2. In the repository's **Settings → Secrets and variables → Actions**, create the repository secret `PYPI_API_TOKEN` with a PyPI token authorized to publish JanusReader, or verify that it is already configured.
|
|
185
185
|
3. In **Actions → Upload Python Package**, enable the workflow if it is disabled.
|
|
186
|
-
4. In **Releases → Draft a new release**, choose a tag matching the package version (for example, `v0.18.
|
|
186
|
+
4. In **Releases → Draft a new release**, choose a tag matching the package version (for example, `v0.18.3`) and target the commit containing the release changes. Add release notes and select **Publish release**.
|
|
187
187
|
5. Follow the job in **Actions**. It installs Python 3.14 and locked dependencies, runs tests, builds the sdist and wheel with uv, and uploads them using `pypa/gh-action-pypi-publish` and the configured token.
|
|
188
188
|
|
|
189
189
|
A push, a tag alone, or a saved release draft does not trigger this workflow. It has no `workflow_dispatch` trigger, so there is no manual **Run workflow** button. GitHub Pages and environment configuration are not required for this PyPI publication.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# JanusReader
|
|
2
2
|
|
|
3
|
-

|
|
4
4
|
[](https://doi.org/10.5281/zenodo.13364878)
|
|
5
5
|
|
|
6
6
|
**JanusReader** is the official Python library for reading data from the JANUS instrument on board ESA's JUICE mission. It loads image pixels and metadata from the accompanying PDS4 label.
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
## Installation
|
|
11
11
|
|
|
12
|
-
The current source version is **0.18.
|
|
12
|
+
The current source version is **0.18.3** and requires **Python >=3.14,<4**.
|
|
13
13
|
|
|
14
14
|
Install the published package:
|
|
15
15
|
|
|
@@ -60,7 +60,7 @@ print(product.startDT, product.endDT)
|
|
|
60
60
|
product.Show() # General product information
|
|
61
61
|
product.Show(all=True) # Includes processing and instrument metadata
|
|
62
62
|
|
|
63
|
-
# Both distances are None when geom:Distances or the
|
|
63
|
+
# Both distances are None when geom:Distances or the target distance is missing.
|
|
64
64
|
spacecraft_solar_distance = product.spacecraftSolarDistance
|
|
65
65
|
target_solar_distance = product.targetSolarDistance
|
|
66
66
|
```
|
|
@@ -86,7 +86,7 @@ Attribute names are case-sensitive.
|
|
|
86
86
|
|
|
87
87
|
Since 0.18.0, `psa:stop_orbit_number` is no longer read, `endOrbit` is no longer created, and the information display omits End Orbit. Since 0.18.1, `psa:start_orbit_number`, `startOrbit`, and the Start Orbit display row are also removed.
|
|
88
88
|
|
|
89
|
-
Since 0.18.
|
|
89
|
+
Since 0.18.3, a missing `geom:target_heliocentric_distance` produces no missing-label warning; a missing spacecraft distance produces a warning again. If `geom:Distances` or the target distance field is absent, the constructor sets both `spacecraftSolarDistance` and `targetSolarDistance` to `None`. If only `geom:spacecraft_heliocentric_distance` is absent, it emits a warning and sets `spacecraftSolarDistance` to `None`, preserving the target distance.
|
|
90
90
|
|
|
91
91
|
Missing scalar label values generally produce a warning and return `None`; missing required XML structures can raise `IndexError`. Missing files raise `FileNotFoundError`, and malformed XML raises a parser error. With `vicar=True`, an invalid raw VICAR header raises `JanusReader.exceptions.NOT_VALID_VICAR_FILE`.
|
|
92
92
|
|
|
@@ -135,7 +135,7 @@ The repository's pytest configuration writes coverage reports under `coverage/`.
|
|
|
135
135
|
|
|
136
136
|
Before each release, set the version with `uv version <version>` (or `uv version --bump patch`), and update the README version badge, changelog, and citation metadata to match. Commit the updated `pyproject.toml` and `uv.lock` together.
|
|
137
137
|
|
|
138
|
-
For version 0.18.
|
|
138
|
+
For version 0.18.3:
|
|
139
139
|
|
|
140
140
|
```shell
|
|
141
141
|
uv sync --locked
|
|
@@ -148,7 +148,7 @@ uv build --no-sources
|
|
|
148
148
|
Set `UV_PUBLISH_TOKEN` to a PyPI API token through your shell or secret manager, then upload only the artifacts for the intended version:
|
|
149
149
|
|
|
150
150
|
```shell
|
|
151
|
-
uv publish dist/janusreader-0.18.
|
|
151
|
+
uv publish dist/janusreader-0.18.3.tar.gz dist/janusreader-0.18.3-py3-none-any.whl
|
|
152
152
|
```
|
|
153
153
|
|
|
154
154
|
Avoid a bare `uv publish` when `dist/` contains artifacts from older releases: it defaults to uploading all files in that directory. PyPI does not allow replacing an existing distribution filename with different contents; publish changed code under a new version.
|
|
@@ -160,7 +160,7 @@ The workflow [Upload Python Package](.github/workflows/python-publish.yml) start
|
|
|
160
160
|
1. Commit and push the release changes, including the workflow and `uv.lock`.
|
|
161
161
|
2. In the repository's **Settings → Secrets and variables → Actions**, create the repository secret `PYPI_API_TOKEN` with a PyPI token authorized to publish JanusReader, or verify that it is already configured.
|
|
162
162
|
3. In **Actions → Upload Python Package**, enable the workflow if it is disabled.
|
|
163
|
-
4. In **Releases → Draft a new release**, choose a tag matching the package version (for example, `v0.18.
|
|
163
|
+
4. In **Releases → Draft a new release**, choose a tag matching the package version (for example, `v0.18.3`) and target the commit containing the release changes. Add release notes and select **Publish release**.
|
|
164
164
|
5. Follow the job in **Actions**. It installs Python 3.14 and locked dependencies, runs tests, builds the sdist and wheel with uv, and uploads them using `pypa/gh-action-pypi-publish` and the configured token.
|
|
165
165
|
|
|
166
166
|
A push, a tag alone, or a saved release draft does not trigger this workflow. It has no `workflow_dispatch` trigger, so there is no manual **Run workflow** button. GitHub Pages and environment configuration are not required for this PyPI publication.
|
|
@@ -53,7 +53,7 @@ def getElement(doc: md.Document | md.Element, label: str, el: int = 0) -> md.Ele
|
|
|
53
53
|
def getValue(nodeList: md.Document | md.Element, label: str) -> str | int | float | None:
|
|
54
54
|
"""Read label values with JanusReader's historical conversion semantics."""
|
|
55
55
|
elements = _get_elements(nodeList, label)
|
|
56
|
-
not_error=["geom:
|
|
56
|
+
not_error=["geom:target_heliocentric_distance"]
|
|
57
57
|
if not elements and label not in not_error:
|
|
58
58
|
cons.print(f"{MSG.WARNING} Missing label {label}. The label might have been removed or renamed.")
|
|
59
59
|
return None
|
|
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
|