nds-mapviewer 2026.3.2.dev142__tar.gz → 2026.3.2.dev144__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.
- {nds_mapviewer-2026.3.2.dev142/src/nds_mapviewer.egg-info → nds_mapviewer-2026.3.2.dev144}/PKG-INFO +7 -1
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/README.md +6 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144/src/nds_mapviewer.egg-info}/PKG-INFO +7 -1
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/config.py +6 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/viewer.py +2 -1
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/tests/test_config.py +19 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/tests/test_viewer.py +1 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/.gitignore +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/CHANGELOG.md +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/pyproject.toml +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/setup.cfg +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/setup.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/nds_mapviewer.egg-info/SOURCES.txt +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/nds_mapviewer.egg-info/dependency_links.txt +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/nds_mapviewer.egg-info/entry_points.txt +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/nds_mapviewer.egg-info/requires.txt +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/nds_mapviewer.egg-info/top_level.txt +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/__init__.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/browser.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/cli.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/clipboard.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/container_runtime.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/docker_client.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/exceptions.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/tui.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/ui.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/tests/conftest.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/tests/test_cli.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/tests/test_clipboard.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/tests/test_docker_client.py +0 -0
- {nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/tests/test_tui.py +0 -0
{nds_mapviewer-2026.3.2.dev142/src/nds_mapviewer.egg-info → nds_mapviewer-2026.3.2.dev144}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nds-mapviewer
|
|
3
|
-
Version: 2026.3.2.
|
|
3
|
+
Version: 2026.3.2.dev144
|
|
4
4
|
Summary: CLI to run the NDS MapViewer Docker container for visualizing map data (NDS.Live, GeoJSON, and more)
|
|
5
5
|
Author-email: NDS Association <support@nds-association.org>
|
|
6
6
|
License: Proprietary
|
|
@@ -127,6 +127,12 @@ The run screen shows, below the info banner, the source you passed (a config
|
|
|
127
127
|
file or a directly-given data-source path such as a `*.ndslive` filestore) and
|
|
128
128
|
the mapped config that was generated and mounted into the container.
|
|
129
129
|
|
|
130
|
+
That mapped YAML is a disposable, one-way transformed copy. Map-preset catalogs
|
|
131
|
+
configured under `erdblick.mapPresets` are passed through, but the browser marks
|
|
132
|
+
their management surface read-only in CLI-launched sessions; edits are not written
|
|
133
|
+
back to the original host config. Edit the host YAML and let the normal config sync
|
|
134
|
+
reload it instead.
|
|
135
|
+
|
|
130
136
|
## Editions
|
|
131
137
|
|
|
132
138
|
| Edition | Formats | Access |
|
|
@@ -94,6 +94,12 @@ The run screen shows, below the info banner, the source you passed (a config
|
|
|
94
94
|
file or a directly-given data-source path such as a `*.ndslive` filestore) and
|
|
95
95
|
the mapped config that was generated and mounted into the container.
|
|
96
96
|
|
|
97
|
+
That mapped YAML is a disposable, one-way transformed copy. Map-preset catalogs
|
|
98
|
+
configured under `erdblick.mapPresets` are passed through, but the browser marks
|
|
99
|
+
their management surface read-only in CLI-launched sessions; edits are not written
|
|
100
|
+
back to the original host config. Edit the host YAML and let the normal config sync
|
|
101
|
+
reload it instead.
|
|
102
|
+
|
|
97
103
|
## Editions
|
|
98
104
|
|
|
99
105
|
| Edition | Formats | Access |
|
{nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144/src/nds_mapviewer.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nds-mapviewer
|
|
3
|
-
Version: 2026.3.2.
|
|
3
|
+
Version: 2026.3.2.dev144
|
|
4
4
|
Summary: CLI to run the NDS MapViewer Docker container for visualizing map data (NDS.Live, GeoJSON, and more)
|
|
5
5
|
Author-email: NDS Association <support@nds-association.org>
|
|
6
6
|
License: Proprietary
|
|
@@ -127,6 +127,12 @@ The run screen shows, below the info banner, the source you passed (a config
|
|
|
127
127
|
file or a directly-given data-source path such as a `*.ndslive` filestore) and
|
|
128
128
|
the mapped config that was generated and mounted into the container.
|
|
129
129
|
|
|
130
|
+
That mapped YAML is a disposable, one-way transformed copy. Map-preset catalogs
|
|
131
|
+
configured under `erdblick.mapPresets` are passed through, but the browser marks
|
|
132
|
+
their management surface read-only in CLI-launched sessions; edits are not written
|
|
133
|
+
back to the original host config. Edit the host YAML and let the normal config sync
|
|
134
|
+
reload it instead.
|
|
135
|
+
|
|
130
136
|
## Editions
|
|
131
137
|
|
|
132
138
|
| Edition | Formats | Access |
|
{nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/config.py
RENAMED
|
@@ -268,6 +268,7 @@ def transform_config(
|
|
|
268
268
|
config: dict[str, Any],
|
|
269
269
|
base_dir: str | Path | None = None,
|
|
270
270
|
existing_volumes: list[VolumeMount] | None = None,
|
|
271
|
+
ephemeral: bool = False,
|
|
271
272
|
) -> TransformedConfig:
|
|
272
273
|
"""
|
|
273
274
|
Transform a MapViewer config for Docker execution.
|
|
@@ -280,6 +281,11 @@ def transform_config(
|
|
|
280
281
|
import copy
|
|
281
282
|
|
|
282
283
|
transformed = copy.deepcopy(config)
|
|
284
|
+
if ephemeral:
|
|
285
|
+
erdblick = transformed.setdefault("erdblick", {})
|
|
286
|
+
if not isinstance(erdblick, dict):
|
|
287
|
+
raise ConfigError("erdblick must be an object before launcher metadata can be added")
|
|
288
|
+
erdblick["_configEphemeral"] = True
|
|
283
289
|
existing_by_host: dict[tuple[Path, str], str] = {}
|
|
284
290
|
used_container_paths: set[str] = set()
|
|
285
291
|
for volume in existing_volumes or []:
|
{nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/viewer.py
RENAMED
|
@@ -265,7 +265,7 @@ class MapViewer:
|
|
|
265
265
|
str(self._config_path) if self._config_path else None,
|
|
266
266
|
)
|
|
267
267
|
|
|
268
|
-
return transform_config(config, base_dir=config_base_dir)
|
|
268
|
+
return transform_config(config, base_dir=config_base_dir, ephemeral=True)
|
|
269
269
|
|
|
270
270
|
def _ensure_image(self, pull: bool = True) -> str:
|
|
271
271
|
"""Ensure the Docker image is available, pulling if needed."""
|
|
@@ -496,6 +496,7 @@ class MapViewer:
|
|
|
496
496
|
config,
|
|
497
497
|
base_dir=source_file.parent,
|
|
498
498
|
existing_volumes=active_volumes,
|
|
499
|
+
ephemeral=True,
|
|
499
500
|
)
|
|
500
501
|
missing_mounts = self._unmounted_volumes(
|
|
501
502
|
transformed.volumes,
|
|
@@ -241,6 +241,25 @@ class TestTransformConfigLocalhostUri:
|
|
|
241
241
|
class TestTransformConfig:
|
|
242
242
|
"""Tests for transform_config()."""
|
|
243
243
|
|
|
244
|
+
@pytest.mark.parametrize("catalog", [[], [{
|
|
245
|
+
"id": "network",
|
|
246
|
+
"name": "Network",
|
|
247
|
+
"enabled": True,
|
|
248
|
+
"layerPresets": [{
|
|
249
|
+
"layerId": "Lane",
|
|
250
|
+
"styleId": "Lanes",
|
|
251
|
+
"presetId": "topology",
|
|
252
|
+
}],
|
|
253
|
+
}]])
|
|
254
|
+
def test_map_presets_round_trip_without_asset_mounts(self, catalog):
|
|
255
|
+
config = {"sources": [], "erdblick": {"mapPresets": catalog}}
|
|
256
|
+
|
|
257
|
+
result = transform_config(config, ephemeral=True)
|
|
258
|
+
|
|
259
|
+
assert result.config["erdblick"]["mapPresets"] == catalog
|
|
260
|
+
assert result.config["erdblick"]["_configEphemeral"] is True
|
|
261
|
+
assert result.volumes == []
|
|
262
|
+
|
|
244
263
|
def test_http_only_no_volumes(self):
|
|
245
264
|
"""HTTP-only config produces no volume mounts."""
|
|
246
265
|
config = {
|
|
@@ -136,6 +136,7 @@ class TestMapViewerConfigTransformation:
|
|
|
136
136
|
|
|
137
137
|
assert transformed.config is not None
|
|
138
138
|
assert transformed.volumes == []
|
|
139
|
+
assert transformed.config["erdblick"]["_configEphemeral"] is True
|
|
139
140
|
assert mv.original_config is not None
|
|
140
141
|
|
|
141
142
|
def test_load_and_transform_local_path(self, sample_config_with_local_path):
|
|
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
|
{nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/__init__.py
RENAMED
|
File without changes
|
{nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/browser.py
RENAMED
|
File without changes
|
{nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/cli.py
RENAMED
|
File without changes
|
{nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/clipboard.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/exceptions.py
RENAMED
|
File without changes
|
{nds_mapviewer-2026.3.2.dev142 → nds_mapviewer-2026.3.2.dev144}/src/ndslive/mapviewer/tui.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|