gri-plot 0.2.0.post1__tar.gz → 0.2.1__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.
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/.gitlab-ci.yml +2 -2
- gri_plot-0.2.1/.python-version +1 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/CONTRIBUTING.md +1 -1
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/PKG-INFO +4 -4
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/README.md +1 -1
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/figure3d.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/frames.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/observables/aoa.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/observables/fdoa.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/observables/los.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/observables/range_sphere.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/observables/tdoa.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/observables/terrain.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/plot_ellipse.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/scatter.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/scatter_map.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/shapes/cone.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/shapes/cylinder.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/shapes/ellipse.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/shapes/ellipsoid.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/shapes/meshgen.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/shapes/sphere.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/surfaces/__init__.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/surfaces/gradients/axis.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/surfaces/gradients/line.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/surfaces/gradients/plane.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/surfaces/gradients/point.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/surfaces/intersection.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/surfaces/mesh.py +2 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/pyproject.toml +2 -2
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/report.xml +1 -1
- gri_plot-0.2.0.post1/.python-version +0 -1
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/.coveragerc +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/.docs_other_projects.md +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/.gitignore +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/.gitlab-ci-deps.yml +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/.init_venv.sh +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/.pre-commit-config.yaml +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/.pre-commit-unskipped.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/.ruff.toml +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/.vscode/settings.json +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/LICENSE +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/__init__.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/observables/__init__.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/py.typed +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/shapes/__init__.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/gri_plot/surfaces/gradients/__init__.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/notes.txt +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/__init__.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_figure3d.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_frames.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_observables/__init__.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_observables/test_aoa.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_observables/test_fdoa.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_observables/test_los.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_observables/test_range_sphere.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_observables/test_tdoa.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_observables/test_terrain.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_plot_ellipse.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_plot_scattermap.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_scatter.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_shapes/__init__.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_shapes/test_cone.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_shapes/test_cylinder.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_shapes/test_ellipse.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_shapes/test_ellipsoid.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_shapes/test_sphere.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_surfaces/__init__.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_surfaces/test_intersection.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/test/test_surfaces/test_mesh.py +0 -0
- {gri_plot-0.2.0.post1 → gri_plot-0.2.1}/uv.lock +0 -0
|
@@ -17,7 +17,7 @@ cache:
|
|
|
17
17
|
- .venv/
|
|
18
18
|
|
|
19
19
|
.python_base:
|
|
20
|
-
image: python:3.
|
|
20
|
+
image: python:3.12
|
|
21
21
|
before_script:
|
|
22
22
|
# TODO: This reference and include is a stopgap until we have the projects on pypi
|
|
23
23
|
- !reference [.clone_dependencies, before_script]
|
|
@@ -75,7 +75,7 @@ lint:pyright:
|
|
|
75
75
|
|
|
76
76
|
deploy:pypi:
|
|
77
77
|
stage: deploy
|
|
78
|
-
image: python:3.
|
|
78
|
+
image: python:3.12
|
|
79
79
|
id_tokens:
|
|
80
80
|
PYPI_ID_TOKEN:
|
|
81
81
|
aud: pypi
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gri-plot
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Project-URL: repository, https://gitlab.com/geosol-foss/python/gri-plot
|
|
5
5
|
Project-URL: homepage, https://geosolresearch.com
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
License-File: LICENSE
|
|
8
|
-
Requires-Python: >=3.
|
|
9
|
-
Requires-Dist: gri-utils
|
|
8
|
+
Requires-Python: >=3.12
|
|
9
|
+
Requires-Dist: gri-utils>=0.2.0
|
|
10
10
|
Requires-Dist: numpy>=2.3.3
|
|
11
11
|
Requires-Dist: plotly>=6.3.0
|
|
12
12
|
Requires-Dist: scikit-image>=0.25.0
|
|
@@ -16,7 +16,7 @@ Description-Content-Type: text/markdown
|
|
|
16
16
|
|
|
17
17
|
# Plot (3D Geolocation Visualization)
|
|
18
18
|
|
|
19
|
-
3D geolocation visualization and 2D plotting utilities built on Plotly. Requires Python 3.
|
|
19
|
+
3D geolocation visualization and 2D plotting utilities built on Plotly. Requires Python 3.12+.
|
|
20
20
|
|
|
21
21
|
## Overview
|
|
22
22
|
|
|
@@ -3,9 +3,9 @@ name = "gri-plot"
|
|
|
3
3
|
dynamic = ["version"]
|
|
4
4
|
readme = "README.md"
|
|
5
5
|
license = "MIT"
|
|
6
|
-
requires-python = ">=3.
|
|
6
|
+
requires-python = ">=3.12"
|
|
7
7
|
dependencies = [
|
|
8
|
-
"gri-utils",
|
|
8
|
+
"gri-utils>=0.2.0",
|
|
9
9
|
"numpy>=2.3.3",
|
|
10
10
|
"plotly>=6.3.0",
|
|
11
11
|
"scikit-image>=0.25.0",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="29" tests="111" time="8.481" timestamp="2026-02-19T16:46:25.619978+00:00" hostname="runner-zxwgkjaph-project-74598118-concurrent-0"><testcase classname="test.test_figure3d" name="test_enu_requires_origin" time="0.002" /><testcase classname="test.test_figure3d" name="test_build_returns_plotly_figure" time="0.854" /><testcase classname="test.test_figure3d" name="test_plot_surfaces_convenience" time="0.025" /><testcase classname="test.test_figure3d" name="test_visual_ellipsoid_enu" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_figure3d.py:41: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_figure3d" name="test_visual_multiple_spheres" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_figure3d.py:54: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_figure3d" name="test_visual_combined_surfaces" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_figure3d.py:66: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_figure3d" name="test_add_intersection_requires_two_surfaces" time="0.004" /><testcase classname="test.test_figure3d" name="test_add_intersection_returns_self" time="1.584" /><testcase classname="test.test_figure3d" name="test_add_intersection_creates_trace" time="1.517" /><testcase classname="test.test_figure3d" name="test_visual_sphere_intersection" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_figure3d.py:117: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_figure3d" name="test_visual_geolocation_surfaces" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_figure3d.py:252: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_figure3d" name="test_visual_geolocation_intersection" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_figure3d.py:262: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_frames" name="test_xyz_lla_roundtrip" time="0.001" /><testcase classname="test.test_frames" name="test_enu_requires_origin" time="0.001" /><testcase classname="test.test_frames" name="test_enu_roundtrip" time="0.004" /><testcase classname="test.test_frames" name="test_axis_labels" time="0.001" /><testcase classname="test.test_observables.test_aoa" name="test_residual_on_axis_inside" time="0.005" /><testcase classname="test.test_observables.test_aoa" name="test_residual_perpendicular_outside" time="0.001" /><testcase classname="test.test_observables.test_aoa" name="test_invalid_max_range" time="0.001" /><testcase classname="test.test_observables.test_aoa" name="test_visual_aoa_cone" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_aoa.py:40: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_observables.test_fdoa" name="test_residual_symmetric_velocities" time="0.005" /><testcase classname="test.test_observables.test_fdoa" name="test_invalid_frequency" time="0.001" /><testcase classname="test.test_observables.test_fdoa" name="test_visual_fdoa_surface" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_fdoa.py:36: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_observables.test_los" name="test_residual_inside_outside" time="0.005" /><testcase classname="test.test_observables.test_los" name="test_invalid_length" time="0.001" /><testcase classname="test.test_observables.test_los" name="test_visual_los_ray" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_los.py:32: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_observables.test_range_sphere" name="test_residual_on_surface" time="0.001" /><testcase classname="test.test_observables.test_range_sphere" name="test_invalid_range" time="0.001" /><testcase classname="test.test_observables.test_range_sphere" name="test_visual_range_sphere" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_range_sphere.py:25: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_observables.test_tdoa" name="test_residual_at_midpoint_zero_tdoa" time="0.004" /><testcase classname="test.test_observables.test_tdoa" name="test_residual_sign" time="0.001" /><testcase classname="test.test_observables.test_tdoa" name="test_visual_tdoa_hyperboloid" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_tdoa.py:34: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_observables.test_tdoa" name="test_visual_tdoa_hyperboloid_enu" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_tdoa.py:49: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_observables.test_terrain" name="test_from_xyz_grids" time="0.006" /><testcase classname="test.test_observables.test_terrain" name="test_from_3d_vertices" time="0.001" /><testcase classname="test.test_observables.test_terrain" name="test_visual_terrain" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_terrain.py:33: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_plot_ellipse" name="test_returns_figure" time="0.032" /><testcase classname="test.test_plot_ellipse" name="test_requires_at_least_one_ellipse" time="0.001" /><testcase classname="test.test_plot_ellipse" name="test_multiple_ellipses_create_traces" time="0.017" /><testcase classname="test.test_plot_ellipse" name="test_show_axes_false_reduces_traces" time="0.029" /><testcase classname="test.test_plot_ellipse" name="test_visual_single_ellipse" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to view">/builds/geosol-foss/python/gri-plot/test/test_plot_ellipse.py:40: Visual test - unskip to view</skipped></testcase><testcase classname="test.test_plot_ellipse" name="test_visual_multiple_ellipses" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to view">/builds/geosol-foss/python/gri-plot/test/test_plot_ellipse.py:48: Visual test - unskip to view</skipped></testcase><testcase classname="test.test_plot_scattermap" name="test_map_plot_single" time="0.000"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_plot_scattermap.py:6: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_plot_scattermap" name="test_map_plot_mult" time="0.000"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_plot_scattermap.py:23: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_single" time="0.000"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:7: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_double" time="0.000"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:14: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_x_space" time="0.000"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:22: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_sequence" time="0.000"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:30: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_kwargs" time="0.000"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:38: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_trace_kwargs" time="0.000"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:46: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_trace_kwargs2" time="0.000"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:54: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_shapes.test_cone" name="test_residual_inside_outside" time="0.001" /><testcase classname="test.test_shapes.test_cone" name="test_invalid_parameters[0.0-100.0]" time="0.001" /><testcase classname="test.test_shapes.test_cone" name="test_invalid_parameters[1.5707963267948966-100.0]" time="0.001" /><testcase classname="test.test_shapes.test_cone" name="test_invalid_parameters[0.5-0.0]" time="0.001" /><testcase classname="test.test_shapes.test_cone" name="test_invalid_parameters[0.5--10.0]" time="0.001" /><testcase classname="test.test_shapes.test_cone" name="test_visual_cone" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_shapes/test_cone.py:41: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_shapes.test_cylinder" name="test_residual_inside_outside" time="0.001" /><testcase classname="test.test_shapes.test_cylinder" name="test_invalid_parameters[0.0-100.0]" time="0.001" /><testcase classname="test.test_shapes.test_cylinder" name="test_invalid_parameters[-10.0-100.0]" time="0.001" /><testcase classname="test.test_shapes.test_cylinder" name="test_invalid_parameters[25.0-0.0]" time="0.001" /><testcase classname="test.test_shapes.test_cylinder" name="test_invalid_parameters[25.0--10.0]" time="0.001" /><testcase classname="test.test_shapes.test_cylinder" name="test_visual_cylinder" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_shapes/test_cylinder.py:44: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_shapes.test_ellipse" name="test_properties_stored" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_center_defaults_to_origin" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_ori_deg_normalized[370.0-10.0]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_ori_deg_normalized[-10.0-350.0]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_ori_deg_normalized[0.0-0.0]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_ori_deg_normalized[360.0-0.0]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_ori_deg_normalized[720.0-0.0]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_rejects_non_positive_axes[0-50]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_rejects_non_positive_axes[-10-50]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_rejects_non_positive_axes[100-0]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_rejects_non_positive_axes[100--5]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_rejects_sma_less_than_smi" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_boundary_shape" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_boundary_extent_at_zero_orientation" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_boundary_respects_center" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_repr" time="0.002" /><testcase classname="test.test_shapes.test_ellipsoid" name="test_residual_on_surface" time="0.004" /><testcase classname="test.test_shapes.test_ellipsoid" name="test_requires_covariance_or_semi_axes" time="0.001" /><testcase classname="test.test_shapes.test_ellipsoid" name="test_rejects_both_covariance_and_semi_axes" time="0.001" /><testcase classname="test.test_shapes.test_ellipsoid" name="test_visual_ellipsoid_from_covariance" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_shapes/test_ellipsoid.py:31: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_shapes.test_ellipsoid" name="test_visual_ellipsoid_from_semi_axes" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_shapes/test_ellipsoid.py:42: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_shapes.test_sphere" name="test_residual_fn[point_offset0-0]" time="0.001" /><testcase classname="test.test_shapes.test_sphere" name="test_residual_fn[point_offset1--1]" time="0.001" /><testcase classname="test.test_shapes.test_sphere" name="test_residual_fn[point_offset2-1]" time="0.001" /><testcase classname="test.test_shapes.test_sphere" name="test_invalid_radius" time="0.001" /><testcase classname="test.test_shapes.test_sphere" name="test_visual_sphere" time="0.000"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_shapes/test_sphere.py:37: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_surfaces.test_intersection" name="test_requires_at_least_two_surfaces" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_distance_zero_at_intersection" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_distance_increases_away_from_intersection" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_residual_fn_negative_at_intersection" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_residual_fn_positive_away_from_surfaces" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_radius_property" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_default_radius" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_bounds_merges_all_surfaces" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_label_property" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_volume_intersection" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_vertices_to_mesh3d" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_sphere_mesh_vertices_on_surface" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_compute_face_normals_single_triangle" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_compute_face_normals_tetrahedron" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_dihedral_angles_flat_surface" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_dihedral_angles_right_angle" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_dihedral_angles_boundary_edges_excluded" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_refine_mesh_no_refinement_when_flat" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_refine_mesh_subdivides_high_curvature" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_refine_mesh_with_projection" time="0.002" /><testcase classname="test.test_surfaces.test_mesh" name="test_refine_mesh_max_iterations_limits_refinement" time="0.003" /><testcase classname="test.test_surfaces.test_mesh" name="test_field_to_mesh_with_refinement" time="0.043" /></testsuite></testsuites>
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="29" tests="111" time="11.890" timestamp="2026-03-18T04:26:41.072019+00:00" hostname="runner-jhcjxvh8-project-74598118-concurrent-0"><testcase classname="test.test_figure3d" name="test_enu_requires_origin" time="0.002" /><testcase classname="test.test_figure3d" name="test_build_returns_plotly_figure" time="0.783" /><testcase classname="test.test_figure3d" name="test_plot_surfaces_convenience" time="0.048" /><testcase classname="test.test_figure3d" name="test_visual_ellipsoid_enu" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_figure3d.py:41: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_figure3d" name="test_visual_multiple_spheres" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_figure3d.py:54: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_figure3d" name="test_visual_combined_surfaces" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_figure3d.py:66: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_figure3d" name="test_add_intersection_requires_two_surfaces" time="0.002" /><testcase classname="test.test_figure3d" name="test_add_intersection_returns_self" time="2.824" /><testcase classname="test.test_figure3d" name="test_add_intersection_creates_trace" time="2.964" /><testcase classname="test.test_figure3d" name="test_visual_sphere_intersection" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_figure3d.py:117: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_figure3d" name="test_visual_geolocation_surfaces" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_figure3d.py:252: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_figure3d" name="test_visual_geolocation_intersection" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_figure3d.py:262: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_frames" name="test_xyz_lla_roundtrip" time="0.002" /><testcase classname="test.test_frames" name="test_enu_requires_origin" time="0.001" /><testcase classname="test.test_frames" name="test_enu_roundtrip" time="0.002" /><testcase classname="test.test_frames" name="test_axis_labels" time="0.001" /><testcase classname="test.test_observables.test_aoa" name="test_residual_on_axis_inside" time="0.002" /><testcase classname="test.test_observables.test_aoa" name="test_residual_perpendicular_outside" time="0.001" /><testcase classname="test.test_observables.test_aoa" name="test_invalid_max_range" time="0.001" /><testcase classname="test.test_observables.test_aoa" name="test_visual_aoa_cone" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_aoa.py:40: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_observables.test_fdoa" name="test_residual_symmetric_velocities" time="0.001" /><testcase classname="test.test_observables.test_fdoa" name="test_invalid_frequency" time="0.001" /><testcase classname="test.test_observables.test_fdoa" name="test_visual_fdoa_surface" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_fdoa.py:36: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_observables.test_los" name="test_residual_inside_outside" time="0.001" /><testcase classname="test.test_observables.test_los" name="test_invalid_length" time="0.001" /><testcase classname="test.test_observables.test_los" name="test_visual_los_ray" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_los.py:32: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_observables.test_range_sphere" name="test_residual_on_surface" time="0.001" /><testcase classname="test.test_observables.test_range_sphere" name="test_invalid_range" time="0.001" /><testcase classname="test.test_observables.test_range_sphere" name="test_visual_range_sphere" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_range_sphere.py:25: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_observables.test_tdoa" name="test_residual_at_midpoint_zero_tdoa" time="0.001" /><testcase classname="test.test_observables.test_tdoa" name="test_residual_sign" time="0.002" /><testcase classname="test.test_observables.test_tdoa" name="test_visual_tdoa_hyperboloid" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_tdoa.py:34: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_observables.test_tdoa" name="test_visual_tdoa_hyperboloid_enu" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_tdoa.py:49: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_observables.test_terrain" name="test_from_xyz_grids" time="0.002" /><testcase classname="test.test_observables.test_terrain" name="test_from_3d_vertices" time="0.001" /><testcase classname="test.test_observables.test_terrain" name="test_visual_terrain" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_observables/test_terrain.py:33: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_plot_ellipse" name="test_returns_figure" time="0.059" /><testcase classname="test.test_plot_ellipse" name="test_requires_at_least_one_ellipse" time="0.002" /><testcase classname="test.test_plot_ellipse" name="test_multiple_ellipses_create_traces" time="0.051" /><testcase classname="test.test_plot_ellipse" name="test_show_axes_false_reduces_traces" time="0.083" /><testcase classname="test.test_plot_ellipse" name="test_visual_single_ellipse" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to view">/builds/geosol-foss/python/gri-plot/test/test_plot_ellipse.py:40: Visual test - unskip to view</skipped></testcase><testcase classname="test.test_plot_ellipse" name="test_visual_multiple_ellipses" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to view">/builds/geosol-foss/python/gri-plot/test/test_plot_ellipse.py:48: Visual test - unskip to view</skipped></testcase><testcase classname="test.test_plot_scattermap" name="test_map_plot_single" time="0.000"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_plot_scattermap.py:6: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_plot_scattermap" name="test_map_plot_mult" time="0.001"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_plot_scattermap.py:23: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_single" time="0.000"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:7: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_double" time="0.001"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:14: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_x_space" time="0.001"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:22: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_sequence" time="0.001"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:30: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_kwargs" time="0.001"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:38: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_trace_kwargs" time="0.001"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:46: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_scatter" name="test_trace_kwargs2" time="0.001"><skipped type="pytest.skip" message="manual only for demonstration and test">/builds/geosol-foss/python/gri-plot/test/test_scatter.py:54: manual only for demonstration and test</skipped></testcase><testcase classname="test.test_shapes.test_cone" name="test_residual_inside_outside" time="0.002" /><testcase classname="test.test_shapes.test_cone" name="test_invalid_parameters[0.0-100.0]" time="0.001" /><testcase classname="test.test_shapes.test_cone" name="test_invalid_parameters[1.5707963267948966-100.0]" time="0.001" /><testcase classname="test.test_shapes.test_cone" name="test_invalid_parameters[0.5-0.0]" time="0.001" /><testcase classname="test.test_shapes.test_cone" name="test_invalid_parameters[0.5--10.0]" time="0.001" /><testcase classname="test.test_shapes.test_cone" name="test_visual_cone" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_shapes/test_cone.py:41: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_shapes.test_cylinder" name="test_residual_inside_outside" time="0.001" /><testcase classname="test.test_shapes.test_cylinder" name="test_invalid_parameters[0.0-100.0]" time="0.001" /><testcase classname="test.test_shapes.test_cylinder" name="test_invalid_parameters[-10.0-100.0]" time="0.001" /><testcase classname="test.test_shapes.test_cylinder" name="test_invalid_parameters[25.0-0.0]" time="0.001" /><testcase classname="test.test_shapes.test_cylinder" name="test_invalid_parameters[25.0--10.0]" time="0.001" /><testcase classname="test.test_shapes.test_cylinder" name="test_visual_cylinder" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_shapes/test_cylinder.py:44: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_shapes.test_ellipse" name="test_properties_stored" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_center_defaults_to_origin" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_ori_deg_normalized[370.0-10.0]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_ori_deg_normalized[-10.0-350.0]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_ori_deg_normalized[0.0-0.0]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_ori_deg_normalized[360.0-0.0]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_ori_deg_normalized[720.0-0.0]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_rejects_non_positive_axes[0-50]" time="0.002" /><testcase classname="test.test_shapes.test_ellipse" name="test_rejects_non_positive_axes[-10-50]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_rejects_non_positive_axes[100-0]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_rejects_non_positive_axes[100--5]" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_rejects_sma_less_than_smi" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_boundary_shape" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_boundary_extent_at_zero_orientation" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_boundary_respects_center" time="0.001" /><testcase classname="test.test_shapes.test_ellipse" name="test_repr" time="0.001" /><testcase classname="test.test_shapes.test_ellipsoid" name="test_residual_on_surface" time="0.001" /><testcase classname="test.test_shapes.test_ellipsoid" name="test_requires_covariance_or_semi_axes" time="0.001" /><testcase classname="test.test_shapes.test_ellipsoid" name="test_rejects_both_covariance_and_semi_axes" time="0.001" /><testcase classname="test.test_shapes.test_ellipsoid" name="test_visual_ellipsoid_from_covariance" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_shapes/test_ellipsoid.py:31: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_shapes.test_ellipsoid" name="test_visual_ellipsoid_from_semi_axes" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_shapes/test_ellipsoid.py:42: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_shapes.test_sphere" name="test_residual_fn[point_offset0-0]" time="0.001" /><testcase classname="test.test_shapes.test_sphere" name="test_residual_fn[point_offset1--1]" time="0.001" /><testcase classname="test.test_shapes.test_sphere" name="test_residual_fn[point_offset2-1]" time="0.001" /><testcase classname="test.test_shapes.test_sphere" name="test_invalid_radius" time="0.001" /><testcase classname="test.test_shapes.test_sphere" name="test_visual_sphere" time="0.001"><skipped type="pytest.skip" message="Visual test - unskip to generate plot">/builds/geosol-foss/python/gri-plot/test/test_shapes/test_sphere.py:37: Visual test - unskip to generate plot</skipped></testcase><testcase classname="test.test_surfaces.test_intersection" name="test_requires_at_least_two_surfaces" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_distance_zero_at_intersection" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_distance_increases_away_from_intersection" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_residual_fn_negative_at_intersection" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_residual_fn_positive_away_from_surfaces" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_radius_property" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_default_radius" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_bounds_merges_all_surfaces" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_label_property" time="0.001" /><testcase classname="test.test_surfaces.test_intersection" name="test_volume_intersection" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_vertices_to_mesh3d" time="0.002" /><testcase classname="test.test_surfaces.test_mesh" name="test_sphere_mesh_vertices_on_surface" time="0.002" /><testcase classname="test.test_surfaces.test_mesh" name="test_compute_face_normals_single_triangle" time="0.002" /><testcase classname="test.test_surfaces.test_mesh" name="test_compute_face_normals_tetrahedron" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_dihedral_angles_flat_surface" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_dihedral_angles_right_angle" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_dihedral_angles_boundary_edges_excluded" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_refine_mesh_no_refinement_when_flat" time="0.001" /><testcase classname="test.test_surfaces.test_mesh" name="test_refine_mesh_subdivides_high_curvature" time="0.002" /><testcase classname="test.test_surfaces.test_mesh" name="test_refine_mesh_with_projection" time="0.004" /><testcase classname="test.test_surfaces.test_mesh" name="test_refine_mesh_max_iterations_limits_refinement" time="0.006" /><testcase classname="test.test_surfaces.test_mesh" name="test_field_to_mesh_with_refinement" time="0.083" /></testsuite></testsuites>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3.14
|
|
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
|