imas-python 1.1.2.dev42__tar.gz → 1.1.2.dev55__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.
Potentially problematic release.
This version of imas-python might be problematic. Click here for more details.
- {imas_python-1.1.2.dev42/imas_python.egg-info → imas_python-1.1.2.dev55}/PKG-INFO +2 -2
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/ci/build_dd_zip.sh +13 -3
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/ci/build_docs_and_dist.sh +5 -3
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/ci/linting.sh +10 -3
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/ci/run_benchmark.sh +8 -2
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/ci/run_pytest.sh +12 -5
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/conftest.py +9 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/_version.py +2 -2
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/assets/IDSDef.zip +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/netcdf/db_entry_nc.py +8 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/netcdf/ids2nc.py +14 -1
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/netcdf/nc_validate.py +5 -4
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_primitive.py +4 -1
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_cli.py +8 -2
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_dbentry.py +1 -1
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_helpers.py +22 -8
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_toplevel.py +1 -1
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_minimal_types.py +11 -2
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_nbc_change.py +1 -1
- imas_python-1.1.2.dev55/imas/test/test_nc_autofill.py +54 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_static_ids.py +1 -1
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_util.py +3 -3
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55/imas_python.egg-info}/PKG-INFO +2 -2
- imas_python-1.1.2.dev55/imas_python.egg-info/SOURCES.txt +220 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas_python.egg-info/requires.txt +1 -1
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/pyproject.toml +1 -1
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/core_instant_changes/core_instant_changes_identifier.xml +0 -15
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/core_sources/core_source_identifier.xml +0 -76
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/core_transport/core_transport_identifier.xml +0 -25
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/edge_sources/edge_source_identifier.xml +0 -31
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/edge_transport/edge_transport_identifier.xml +0 -25
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/em_coupling/em_coupling_quantity_identifier.xml +0 -27
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/equilibrium/equilibrium_profiles_2d_identifier.xml +0 -21
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/magnetics/magnetics_flux_loop_type_identifier.xml +0 -14
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/magnetics/magnetics_probe_type_identifier.xml +0 -16
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/magnetics/magnetics_rogowski_measured_identifier.xml +0 -13
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/mhd_linear/mhd_linear_ballooning_identifier.xml +0 -13
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/mhd_linear/mhd_linear_equations_identifier.xml +0 -15
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/mhd_linear/mhd_linear_model_identifier.xml +0 -14
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/mhd_linear/mhd_linear_perturbation_identifier.xml +0 -24
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/neutron_diagnostic/neutron_event_identifier.xml +0 -18
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/neutron_diagnostic/neutron_mode_identifier.xml +0 -15
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/operational_instrumentation/operational_sensor_type_identifier.xml +0 -15
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/pf_active/pf_active_coil_function_identifier.xml +0 -10
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/plasma_sources/plasma_source_identifier.xml +0 -70
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/plasma_transport/plasma_transport_identifier.xml +0 -38
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/radiation/radiation_identifier.xml +0 -23
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/refractometer/refractometer_formula_identifier.xml +0 -12
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/runaway_electrons/e_field_critical_identifier.xml +0 -12
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/runaway_electrons/momentum_critical_avalanche_identifier.xml +0 -11
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/runaway_electrons/momentum_critical_hot_tail_identifier.xml +0 -11
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/spectrometer_visible/spectrometer_visible_method_identifier.xml +0 -13
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/spectrometer_x_ray_crystal/crystal_mesh_identifier.xml +0 -12
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/spectrometer_x_ray_crystal/spectro_x_instrument_function_identifier.xml +0 -14
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/spi/shatter_cone_identifier.xml +0 -11
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/coordinate_identifier.xml +0 -51
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/curved_object_curvature_identifier.xml +0 -16
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/curved_object_geometry_identifier.xml +0 -14
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/data_type_identifier.xml +0 -12
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/distribution_source_identifier.xml +0 -36
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/emission_grid_identifier.xml +0 -9
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/ggd_geometry_content_identifier.xml +0 -21
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/ggd_identifier.xml +0 -29
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/ggd_space_identifier.xml +0 -18
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/ggd_subset_identifier.xml +0 -70
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/materials_identifier.xml +0 -43
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/midplane_identifier.xml +0 -14
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/neutrals_identifier.xml +0 -20
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/occurrence_type_identifier.xml +0 -11
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/optical_element_identifier.xml +0 -13
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/optical_element_material_identifier.xml +0 -12
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/orbit_type_identifier.xml +0 -20
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/poloidal_plane_coordinates_identifier.xml +0 -119
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/species_reference_identifier.xml +0 -19
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/statistics_type_identifier.xml +0 -17
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/surface_geometry_identifier.xml +0 -16
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/utilities/wave_identifier.xml +0 -15
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/wall/wall_component_identifier.xml +0 -18
- imas_python-1.1.2.dev42/imas/assets/IDSDef/identifiers/wall/wall_description_2d_type_identifier.xml +0 -13
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/core_instant_changes/core_instant_changes_identifier.xml +0 -15
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/core_sources/core_source_identifier.xml +0 -76
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/core_transport/core_transport_identifier.xml +0 -25
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/edge_sources/edge_source_identifier.xml +0 -31
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/edge_transport/edge_transport_identifier.xml +0 -25
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/em_coupling/em_coupling_quantity_identifier.xml +0 -27
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/equilibrium/equilibrium_profiles_2d_identifier.xml +0 -21
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/magnetics/magnetics_flux_loop_type_identifier.xml +0 -14
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/magnetics/magnetics_probe_type_identifier.xml +0 -16
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/magnetics/magnetics_rogowski_measured_identifier.xml +0 -13
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/mhd_linear/mhd_linear_ballooning_identifier.xml +0 -13
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/mhd_linear/mhd_linear_equations_identifier.xml +0 -15
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/mhd_linear/mhd_linear_model_identifier.xml +0 -14
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/mhd_linear/mhd_linear_perturbation_identifier.xml +0 -24
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/neutron_diagnostic/neutron_event_identifier.xml +0 -18
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/neutron_diagnostic/neutron_mode_identifier.xml +0 -15
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/operational_instrumentation/operational_sensor_type_identifier.xml +0 -15
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/pf_active/pf_active_coil_function_identifier.xml +0 -10
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/plasma_sources/plasma_source_identifier.xml +0 -70
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/plasma_transport/plasma_transport_identifier.xml +0 -38
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/radiation/radiation_identifier.xml +0 -23
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/refractometer/refractometer_formula_identifier.xml +0 -12
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/runaway_electrons/e_field_critical_identifier.xml +0 -12
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/runaway_electrons/momentum_critical_avalanche_identifier.xml +0 -11
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/runaway_electrons/momentum_critical_hot_tail_identifier.xml +0 -11
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/spectrometer_visible/spectrometer_visible_method_identifier.xml +0 -13
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/spectrometer_x_ray_crystal/crystal_mesh_identifier.xml +0 -12
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/spectrometer_x_ray_crystal/spectro_x_instrument_function_identifier.xml +0 -14
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/spi/shatter_cone_identifier.xml +0 -11
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/coordinate_identifier.xml +0 -51
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/curved_object_curvature_identifier.xml +0 -16
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/curved_object_geometry_identifier.xml +0 -14
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/data_type_identifier.xml +0 -12
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/distribution_source_identifier.xml +0 -36
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/emission_grid_identifier.xml +0 -9
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/ggd_geometry_content_identifier.xml +0 -21
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/ggd_identifier.xml +0 -29
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/ggd_space_identifier.xml +0 -18
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/ggd_subset_identifier.xml +0 -70
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/materials_identifier.xml +0 -43
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/midplane_identifier.xml +0 -14
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/neutrals_identifier.xml +0 -20
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/occurrence_type_identifier.xml +0 -11
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/optical_element_identifier.xml +0 -13
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/optical_element_material_identifier.xml +0 -12
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/orbit_type_identifier.xml +0 -20
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/poloidal_plane_coordinates_identifier.xml +0 -119
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/species_reference_identifier.xml +0 -19
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/statistics_type_identifier.xml +0 -17
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/surface_geometry_identifier.xml +0 -16
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/utilities/wave_identifier.xml +0 -15
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/wall/wall_component_identifier.xml +0 -18
- imas_python-1.1.2.dev42/imas/assets/IDSDef_correct/identifiers/wall/wall_description_2d_type_identifier.xml +0 -13
- imas_python-1.1.2.dev42/imas/test/test_nc_autofill.py +0 -13
- imas_python-1.1.2.dev42/imas_python.egg-info/SOURCES.txt +0 -326
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/.git-blame-ignore-revs +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/.git_archival.txt +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/.gitattributes +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/.github/workflows/linting.yml +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/.github/workflows/publish.yml +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/.gitignore +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/.pylintrc +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/.readthedocs.yml +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/CODE_OF_CONDUCT.md +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/CONTRIBUTING.md +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/LICENSE.txt +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/MANIFEST.in +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/README.md +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/asv.conf.json +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/benchmarks/__init__.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/benchmarks/core_profiles.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/benchmarks/edge_profiles.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/benchmarks/technical.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/benchmarks/utils.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/.gitignore +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/Makefile +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/.gitignore +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/_static/imas.css +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/_static/imas_200x200.png +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/_templates/autosummary/accessor.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/_templates/autosummary/accessor_attribute.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/_templates/autosummary/accessor_callable.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/_templates/autosummary/accessor_method.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/_templates/autosummary/base.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/_templates/custom-class-template.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/_templates/custom-module-template.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/_templates/layout.html +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/api-hidden.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/api.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/benchmarking.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/changelog.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/ci_config.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/cli.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/code_style.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/conf.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/configuring.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/dd_versions.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/explore.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/hashing.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/imas_snippets/alternative_coordinates.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/imas_snippets/autoconvert_get.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/imas_snippets/autoconvert_put.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/imas_snippets/calc_with_units.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/imas_snippets/coordinates.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/imas_snippets/dd_versions.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/imas_snippets/explore_data.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/imas_snippets/explore_structures.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/imas_snippets/hashing.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/imas_snippets/ids_convert.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/imas_snippets/ids_to_xarray.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/imas_snippets/tensorized_ids_to_xarray.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/metadata.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced/xarray.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/advanced_user_training.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/analyze.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/core_profiles_ne_timeslice.png +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/core_profiles_te.png +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/create.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/explore.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_inspect.png +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/create_core_profiles.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/explore_public_ec_launchers.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/explore_public_pf_active.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/explore_training_data.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/find_paths.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/iterate_core_profiles.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/plot_core_profiles_ne_timeslice.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/plot_core_profiles_te.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/print_idss.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/read_core_profiles_ne_timeslice.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/read_equilibrium_time_array.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/read_whole_equilibrium.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/imas_snippets/transform_grid.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/interactive_tab_core_profiles_toplevel.png +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/print_tree_ids_properties.png +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/setup.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic/transform.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/courses/basic_user_training.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/identifiers.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/imas_architecture.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/imas_structure.png +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/index.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/installing.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/intro.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/lazy_loading.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/mdsplus.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/metadata.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/multi-dd.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/netcdf/conventions.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/netcdf.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/release_imas.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/resampling.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/docs/source/validation.rst +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/__init__.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/__main__.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/_util.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/assets/IDSDef2MDSpreTree.xsl +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/assets/IDS_fake_toplevel.xml +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/assets/IDS_minimal.xml +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/assets/IDS_minimal_2.xml +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/assets/IDS_minimal_struct_array.xml +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/assets/IDS_minimal_types.xml +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/assets/ITER_134173_106_core_profiles.ids +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/assets/ITER_134173_106_equilibrium.ids +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/assets/README.md +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/assets/core_profiles.ids +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/assets/equilibrium.ids +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/__init__.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/db_entry_impl.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/imas_core/__init__.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/imas_core/al_context.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/imas_core/db_entry_al.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/imas_core/db_entry_helpers.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/imas_core/imas_interface.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/imas_core/mdsplus_model.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/imas_core/uda_support.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/netcdf/__init__.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/netcdf/nc2ids.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/backends/netcdf/nc_metadata.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/command/cli.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/command/db_analysis.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/command/helpers.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/command/timer.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/db_entry.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/dd_helpers.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/dd_zip.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/exception.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_base.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_convert.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_coordinates.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_data_type.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_defs.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_factory.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_identifiers.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_metadata.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_path.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_struct_array.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_structure.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/ids_toplevel.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/setup_logging.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_all_dd_versions.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_dd_helpers.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_dd_zip.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_deepcopy.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_exception.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_get_sample.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_hash.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_identifiers.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids2nc.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_ascii_data.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_convert.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_coordinates.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_data_type.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_factory.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_metadata.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_mixin.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_path.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_primitive.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_struct_array.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_structure.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_ids_validate.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_latest_dd_autofill.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_latest_dd_manual.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_latest_dd_resample.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_lazy_loading.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_list_occurrences.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_minimal.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_minimal_conversion.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_minimal_io.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_minimal_struct_array_io.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_minimal_types_io.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_minimal_types_io_automatic.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_nc_entry.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_nc_metadata.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_nc_validation.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_snippets.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_str_1d.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_time_slicing.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/test/test_uda_support.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/training.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas/util.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas_python.egg-info/dependency_links.txt +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas_python.egg-info/entry_points.txt +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas_python.egg-info/not-zip-safe +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/imas_python.egg-info/top_level.txt +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/setup.cfg +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/setup.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/tools/compare_lowlevel_access_patterns.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/tools/extract_test_data.py +0 -0
- {imas_python-1.1.2.dev42 → imas_python-1.1.2.dev55}/tools/get_tagnames.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: imas-python
|
|
3
|
-
Version: 1.1.2.
|
|
3
|
+
Version: 1.1.2.dev55
|
|
4
4
|
Summary: Pythonic wrappers for the IMAS Access Layer
|
|
5
5
|
Author: ITER Organization
|
|
6
6
|
Author-email: Karel Lucas van de Plassche <karelvandeplassche@gmail.com>, Daan van Vugt <dvanvugt@ignitioncomputing.com>, Maarten Sebregts <msebregts@ignitioncomputing.com>, imas-support@iter.org
|
|
@@ -222,7 +222,7 @@ Requires-Dist: sphinx-autosummary-accessors>=0.1.2; extra == "docs"
|
|
|
222
222
|
Requires-Dist: sphinx-immaterial<0.12,>=0.11.0; extra == "docs"
|
|
223
223
|
Requires-Dist: sphinx-click; extra == "docs"
|
|
224
224
|
Provides-Extra: netcdf
|
|
225
|
-
Requires-Dist: netCDF4>=1.
|
|
225
|
+
Requires-Dist: netCDF4>=1.4.1; extra == "netcdf"
|
|
226
226
|
Provides-Extra: h5py
|
|
227
227
|
Requires-Dist: h5py; extra == "h5py"
|
|
228
228
|
Provides-Extra: test
|
|
@@ -3,18 +3,28 @@
|
|
|
3
3
|
# Note: this script should be run from the root of the git repository
|
|
4
4
|
|
|
5
5
|
# Debuggging:
|
|
6
|
-
|
|
6
|
+
if [[ "$(uname -n)" == *"bamboo"* ]]; then
|
|
7
|
+
set -e -o pipefail
|
|
8
|
+
fi
|
|
7
9
|
echo "Loading modules..."
|
|
8
10
|
|
|
9
11
|
# Set up environment such that module files can be loaded
|
|
10
12
|
source /etc/profile.d/modules.sh
|
|
11
13
|
module purge
|
|
12
14
|
# Modules are supplied as arguments in the CI job:
|
|
13
|
-
|
|
15
|
+
if [ -z "$@" ]; then
|
|
16
|
+
module load Python
|
|
17
|
+
else
|
|
18
|
+
module load $@
|
|
19
|
+
fi
|
|
14
20
|
|
|
15
21
|
# Debuggging:
|
|
16
22
|
echo "Done loading modules"
|
|
17
|
-
set -x
|
|
18
23
|
|
|
19
24
|
# Build the DD zip
|
|
25
|
+
rm -rf venv # Environment should be clean, but remove directory to be sure
|
|
26
|
+
python -m venv venv
|
|
27
|
+
source venv/bin/activate
|
|
28
|
+
pip install gitpython saxonche packaging
|
|
20
29
|
python imas/dd_helpers.py
|
|
30
|
+
deactivate
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
# Note: this script should be run from the root of the git repository
|
|
4
4
|
|
|
5
5
|
# Debuggging:
|
|
6
|
-
|
|
6
|
+
if [[ "$(uname -n)" == *"bamboo"* ]]; then
|
|
7
|
+
set -e -o pipefail
|
|
8
|
+
fi
|
|
7
9
|
echo "Loading modules:" $@
|
|
8
10
|
|
|
9
11
|
# Set up environment such that module files can be loaded
|
|
@@ -14,8 +16,6 @@ module load $@
|
|
|
14
16
|
|
|
15
17
|
# Debuggging:
|
|
16
18
|
echo "Done loading modules"
|
|
17
|
-
set -x
|
|
18
|
-
|
|
19
19
|
|
|
20
20
|
# Set up the testing venv
|
|
21
21
|
rm -rf venv # Environment should be clean, but remove directory to be sure
|
|
@@ -41,3 +41,5 @@ export SPHINXOPTS='-W -n --keep-going'
|
|
|
41
41
|
|
|
42
42
|
# Run sphinx to create the documentation
|
|
43
43
|
make -C docs clean html
|
|
44
|
+
|
|
45
|
+
deactivate
|
|
@@ -3,18 +3,23 @@
|
|
|
3
3
|
# Note: this script should be run from the root of the git repository
|
|
4
4
|
|
|
5
5
|
# Debuggging:
|
|
6
|
-
|
|
6
|
+
if [[ "$(uname -n)" == *"bamboo"* ]]; then
|
|
7
|
+
set -e -o pipefail
|
|
8
|
+
fi
|
|
7
9
|
echo "Loading modules..."
|
|
8
10
|
|
|
9
11
|
# Set up environment such that module files can be loaded
|
|
10
12
|
source /etc/profile.d/modules.sh
|
|
11
13
|
module purge
|
|
12
14
|
# Modules are supplied as arguments in the CI job:
|
|
13
|
-
|
|
15
|
+
if [ -z "$@" ]; then
|
|
16
|
+
module load Python
|
|
17
|
+
else
|
|
18
|
+
module load $@
|
|
19
|
+
fi
|
|
14
20
|
|
|
15
21
|
# Debuggging:
|
|
16
22
|
echo "Done loading modules"
|
|
17
|
-
set -x
|
|
18
23
|
|
|
19
24
|
# Create a venv
|
|
20
25
|
rm -rf venv
|
|
@@ -26,3 +31,5 @@ pip install --upgrade 'black >=24,<25' flake8
|
|
|
26
31
|
|
|
27
32
|
black --check imas
|
|
28
33
|
flake8 imas
|
|
34
|
+
|
|
35
|
+
deactivate
|
|
@@ -17,12 +17,16 @@ source /etc/profile.d/modules.sh
|
|
|
17
17
|
module purge
|
|
18
18
|
# Modules are supplied as arguments in the CI job:
|
|
19
19
|
# IMAS-AL-Python/5.2.1-intel-2023b-DD-3.41.0 Saxon-HE/12.4-Java-21
|
|
20
|
-
|
|
20
|
+
if [ -z "$@" ]; then
|
|
21
|
+
module load IMAS-AL-Core
|
|
22
|
+
else
|
|
23
|
+
module load $@
|
|
24
|
+
fi
|
|
25
|
+
|
|
21
26
|
|
|
22
27
|
|
|
23
28
|
# Debuggging:
|
|
24
29
|
echo "Done loading modules"
|
|
25
|
-
set -x
|
|
26
30
|
|
|
27
31
|
# Export current PYTHONPATH so ASV benchmarks can import imas
|
|
28
32
|
export ASV_PYTHONPATH="$PYTHONPATH"
|
|
@@ -71,3 +75,5 @@ asv publish
|
|
|
71
75
|
# And persistently store them
|
|
72
76
|
cp -rf .asv/{results,html} "$BENCHMARKS_DIR"
|
|
73
77
|
|
|
78
|
+
deactivate
|
|
79
|
+
|
|
@@ -3,19 +3,23 @@
|
|
|
3
3
|
# Note: this script should be run from the root of the git repository
|
|
4
4
|
|
|
5
5
|
# Debuggging:
|
|
6
|
-
|
|
6
|
+
if [[ "$(uname -n)" == *"bamboo"* ]]; then
|
|
7
|
+
set -e -o pipefail
|
|
8
|
+
fi
|
|
7
9
|
echo "Loading modules:" $@
|
|
8
10
|
|
|
9
11
|
# Set up environment such that module files can be loaded
|
|
10
12
|
source /etc/profile.d/modules.sh
|
|
11
13
|
module purge
|
|
12
14
|
# Modules are supplied as arguments in the CI job:
|
|
13
|
-
|
|
15
|
+
if [ -z "$@" ]; then
|
|
16
|
+
module load IMAS-AL-Core
|
|
17
|
+
else
|
|
18
|
+
module load $@
|
|
19
|
+
fi
|
|
14
20
|
|
|
15
21
|
# Debuggging:
|
|
16
22
|
echo "Done loading modules"
|
|
17
|
-
set -x
|
|
18
|
-
|
|
19
23
|
|
|
20
24
|
# Set up the testing venv
|
|
21
25
|
rm -rf venv # Environment should be clean, but remove directory to be sure
|
|
@@ -33,5 +37,8 @@ pip freeze
|
|
|
33
37
|
# Clean artifacts created by pytest
|
|
34
38
|
rm -f junit.xml
|
|
35
39
|
rm -rf htmlcov
|
|
40
|
+
mkdir -p ~/tmp
|
|
41
|
+
export PYTEST_DEBUG_TEMPROOT=~/tmp
|
|
42
|
+
python -m pytest -n=auto --cov=imas --cov-report=term-missing --cov-report=html --junit-xml=junit.xml -x
|
|
36
43
|
|
|
37
|
-
|
|
44
|
+
deactivate
|
|
@@ -72,6 +72,15 @@ _BACKENDS = {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
|
|
75
|
+
try:
|
|
76
|
+
import pytest_xdist
|
|
77
|
+
except ImportError:
|
|
78
|
+
# If pytest-xdist is not available we provide a dummy worker_id fixture.
|
|
79
|
+
@pytest.fixture()
|
|
80
|
+
def worker_id():
|
|
81
|
+
return "master"
|
|
82
|
+
|
|
83
|
+
|
|
75
84
|
@pytest.fixture(params=_BACKENDS)
|
|
76
85
|
def backend(pytestconfig: pytest.Config, request: pytest.FixtureRequest):
|
|
77
86
|
backends_provided = any(map(pytestconfig.getoption, _BACKENDS))
|
|
@@ -12,5 +12,5 @@ __version__: str
|
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
|
13
13
|
version_tuple: VERSION_TUPLE
|
|
14
14
|
|
|
15
|
-
__version__ = version = '1.1.2.
|
|
16
|
-
__version_tuple__ = version_tuple = (1, 1, 2, '
|
|
15
|
+
__version__ = version = '1.1.2.dev55'
|
|
16
|
+
__version_tuple__ = version_tuple = (1, 1, 2, 'dev55')
|
|
Binary file
|
|
@@ -33,12 +33,20 @@ class NCDBEntryImpl(DBEntryImpl):
|
|
|
33
33
|
"The `netCDF4` python module is not available. Please install this "
|
|
34
34
|
"module to read/write IMAS netCDF files with imas-python."
|
|
35
35
|
)
|
|
36
|
+
# To support netcdf v1.4 (which has no mode "x") we map it to "w" with
|
|
37
|
+
# `clobber=True`.
|
|
38
|
+
if mode == "x":
|
|
39
|
+
mode = "w"
|
|
40
|
+
clobber = False
|
|
41
|
+
else:
|
|
42
|
+
clobber = True
|
|
36
43
|
|
|
37
44
|
self._dataset = netCDF4.Dataset(
|
|
38
45
|
fname,
|
|
39
46
|
mode,
|
|
40
47
|
format="NETCDF4",
|
|
41
48
|
auto_complex=True,
|
|
49
|
+
clobber=clobber,
|
|
42
50
|
)
|
|
43
51
|
"""NetCDF4 dataset."""
|
|
44
52
|
self._factory = factory
|
|
@@ -7,8 +7,10 @@ from typing import Iterator, Tuple
|
|
|
7
7
|
|
|
8
8
|
import netCDF4
|
|
9
9
|
import numpy
|
|
10
|
+
from packaging import version
|
|
10
11
|
|
|
11
12
|
from imas.backends.netcdf.nc_metadata import NCMetadata
|
|
13
|
+
from imas.exception import InvalidNetCDFEntry
|
|
12
14
|
from imas.ids_base import IDSBase
|
|
13
15
|
from imas.ids_data_type import IDSDataType
|
|
14
16
|
from imas.ids_defs import IDS_TIME_MODE_HOMOGENEOUS
|
|
@@ -185,9 +187,20 @@ class IDS2NC:
|
|
|
185
187
|
|
|
186
188
|
else:
|
|
187
189
|
dtype = dtypes[metadata.data_type]
|
|
190
|
+
if (
|
|
191
|
+
version.parse(netCDF4.__version__) < version.parse("1.7.0")
|
|
192
|
+
and dtype is dtypes[IDSDataType.CPX]
|
|
193
|
+
):
|
|
194
|
+
raise InvalidNetCDFEntry(
|
|
195
|
+
f"Found complex data in {var_name}, NetCDF 1.7.0 or"
|
|
196
|
+
f" later is required for complex data types"
|
|
197
|
+
)
|
|
188
198
|
kwargs = {}
|
|
189
199
|
if dtype is not str: # Enable compression:
|
|
190
|
-
|
|
200
|
+
if version.parse(netCDF4.__version__) > version.parse("1.4.1"):
|
|
201
|
+
kwargs.update(compression="zlib", complevel=1)
|
|
202
|
+
else:
|
|
203
|
+
kwargs.update(zlib=True, complevel=1)
|
|
191
204
|
if dtype is not dtypes[IDSDataType.CPX]: # Set fillvalue
|
|
192
205
|
kwargs.update(fill_value=default_fillvals[metadata.data_type])
|
|
193
206
|
# Create variable
|
|
@@ -23,23 +23,24 @@ def validate_netcdf_file(filename: str) -> None:
|
|
|
23
23
|
# additional variables are smuggled inside:
|
|
24
24
|
groups = [dataset] + [dataset[group] for group in dataset.groups]
|
|
25
25
|
for group in groups:
|
|
26
|
+
group_name = group.path.split("/")[-1]
|
|
26
27
|
if group.variables or group.dimensions:
|
|
27
28
|
raise InvalidNetCDFEntry(
|
|
28
29
|
"NetCDF file should not have variables or dimensions in the "
|
|
29
|
-
f"{
|
|
30
|
+
f"{group_name} group."
|
|
30
31
|
)
|
|
31
32
|
if group is dataset:
|
|
32
33
|
continue
|
|
33
|
-
if
|
|
34
|
+
if group_name not in ids_names:
|
|
34
35
|
raise InvalidNetCDFEntry(
|
|
35
|
-
f"Invalid group name {
|
|
36
|
+
f"Invalid group name {group_name}: there is no IDS with this name."
|
|
36
37
|
)
|
|
37
38
|
for subgroup in group.groups:
|
|
38
39
|
try:
|
|
39
40
|
int(subgroup)
|
|
40
41
|
except ValueError:
|
|
41
42
|
raise InvalidNetCDFEntry(
|
|
42
|
-
f"Invalid group name {
|
|
43
|
+
f"Invalid group name {group_name}/{subgroup}: "
|
|
43
44
|
f"{subgroup} is not a valid occurrence number."
|
|
44
45
|
)
|
|
45
46
|
|
|
@@ -481,7 +481,10 @@ class IDSNumericArray(IDSPrimitive, np.lib.mixins.NDArrayOperatorsMixin):
|
|
|
481
481
|
value = np.asanyarray(value)
|
|
482
482
|
if value.dtype != dtype:
|
|
483
483
|
logger.info(_CONVERT_MSG, value.dtype, self)
|
|
484
|
-
value = np.
|
|
484
|
+
value = np.asarray(
|
|
485
|
+
value,
|
|
486
|
+
dtype=dtype,
|
|
487
|
+
)
|
|
485
488
|
if value.ndim != self.metadata.ndim:
|
|
486
489
|
raise ValueError(f"Trying to assign a {value.ndim}D value to {self!r}.")
|
|
487
490
|
return value
|
|
@@ -4,6 +4,7 @@ import pytest
|
|
|
4
4
|
from click.testing import CliRunner
|
|
5
5
|
from packaging.version import Version
|
|
6
6
|
|
|
7
|
+
from imas.backends.imas_core.imas_interface import has_imas
|
|
7
8
|
from imas.backends.imas_core.imas_interface import ll_interface
|
|
8
9
|
from imas.command.cli import print_version
|
|
9
10
|
from imas.command.db_analysis import analyze_db, process_db_analysis
|
|
@@ -19,8 +20,13 @@ def test_imas_version():
|
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
@pytest.mark.cli
|
|
22
|
-
@pytest.mark.skipif(
|
|
23
|
-
|
|
23
|
+
@pytest.mark.skipif(
|
|
24
|
+
not has_imas or ll_interface._al_version < Version("5.0"),
|
|
25
|
+
reason="Needs AL >= 5 AND Requires IMAS Core.",
|
|
26
|
+
)
|
|
27
|
+
def test_db_analysis(
|
|
28
|
+
tmp_path,
|
|
29
|
+
):
|
|
24
30
|
# This only tests the happy flow, error handling is not tested
|
|
25
31
|
db_path = tmp_path / "test_db_analysis"
|
|
26
32
|
with DBEntry(f"imas:hdf5?path={db_path}", "w") as entry:
|
|
@@ -82,7 +82,7 @@ def test_dbentry_constructor():
|
|
|
82
82
|
assert get_entry_attrs(entry) == (1, 2, 3, 4, None, 6)
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
def test_ignore_unknown_dd_version(monkeypatch, worker_id, tmp_path):
|
|
85
|
+
def test_ignore_unknown_dd_version(monkeypatch, worker_id, tmp_path, requires_imas):
|
|
86
86
|
entry = open_dbentry(imas.ids_defs.MEMORY_BACKEND, "w", worker_id, tmp_path)
|
|
87
87
|
ids = entry.factory.core_profiles()
|
|
88
88
|
ids.ids_properties.homogeneous_time = 0
|
|
@@ -93,7 +93,9 @@ def fill_with_random_data(structure, max_children=3):
|
|
|
93
93
|
child.value = random_data(child.metadata.data_type, child.metadata.ndim)
|
|
94
94
|
|
|
95
95
|
|
|
96
|
-
def maybe_set_random_value(
|
|
96
|
+
def maybe_set_random_value(
|
|
97
|
+
primitive: IDSPrimitive, leave_empty: float, skip_complex: bool
|
|
98
|
+
) -> None:
|
|
97
99
|
"""Set the value of an IDS primitive with a certain chance.
|
|
98
100
|
|
|
99
101
|
If the IDSPrimitive has coordinates, then the size of the coordinates is taken into
|
|
@@ -153,7 +155,7 @@ def maybe_set_random_value(primitive: IDSPrimitive, leave_empty: float) -> None:
|
|
|
153
155
|
# Scale chance of not setting a coordinate by our number of dimensions,
|
|
154
156
|
# such that overall there is roughly a 50% chance that any coordinate
|
|
155
157
|
# remains empty
|
|
156
|
-
maybe_set_random_value(coordinate_element, 0.5**ndim)
|
|
158
|
+
maybe_set_random_value(coordinate_element, 0.5**ndim, skip_complex)
|
|
157
159
|
size = coordinate_element.shape[0 if coordinate.references else dim]
|
|
158
160
|
|
|
159
161
|
if coordinate.size: # coordinateX = <path> OR 1...1
|
|
@@ -176,13 +178,18 @@ def maybe_set_random_value(primitive: IDSPrimitive, leave_empty: float) -> None:
|
|
|
176
178
|
elif primitive.metadata.data_type is IDSDataType.FLT:
|
|
177
179
|
primitive.value = np.random.random_sample(size=shape)
|
|
178
180
|
elif primitive.metadata.data_type is IDSDataType.CPX:
|
|
181
|
+
if skip_complex:
|
|
182
|
+
# If we are skipping complex numbers then leave the value empty.
|
|
183
|
+
return
|
|
179
184
|
val = np.random.random_sample(shape) + 1j * np.random.random_sample(shape)
|
|
180
185
|
primitive.value = val
|
|
181
186
|
else:
|
|
182
187
|
raise ValueError(f"Invalid IDS data type: {primitive.metadata.data_type}")
|
|
183
188
|
|
|
184
189
|
|
|
185
|
-
def fill_consistent(
|
|
190
|
+
def fill_consistent(
|
|
191
|
+
structure: IDSStructure, leave_empty: float = 0.2, skip_complex: bool = False
|
|
192
|
+
):
|
|
186
193
|
"""Fill a structure with random data, such that coordinate sizes are consistent.
|
|
187
194
|
|
|
188
195
|
Sets homogeneous_time to heterogeneous (always).
|
|
@@ -196,6 +203,9 @@ def fill_consistent(structure: IDSStructure, leave_empty: float = 0.2):
|
|
|
196
203
|
exclusive_coordinates: list of IDSPrimitives that have exclusive alternative
|
|
197
204
|
coordinates. These are initially not filled, and only at the very end of
|
|
198
205
|
filling an IDSToplevel, a choice is made between the exclusive coordinates.
|
|
206
|
+
skip_complex: Whether to skip over populating complex numbers. This is
|
|
207
|
+
useful for maintaining compatibility with older versions of netCDF4
|
|
208
|
+
(<1.7.0) where complex numbers are not supported.
|
|
199
209
|
"""
|
|
200
210
|
if isinstance(structure, IDSToplevel):
|
|
201
211
|
unsupported_ids_name = (
|
|
@@ -218,7 +228,9 @@ def fill_consistent(structure: IDSStructure, leave_empty: float = 0.2):
|
|
|
218
228
|
|
|
219
229
|
for child in structure:
|
|
220
230
|
if isinstance(child, IDSStructure):
|
|
221
|
-
exclusive_coordinates.extend(
|
|
231
|
+
exclusive_coordinates.extend(
|
|
232
|
+
fill_consistent(child, leave_empty, skip_complex)
|
|
233
|
+
)
|
|
222
234
|
|
|
223
235
|
elif isinstance(child, IDSStructArray):
|
|
224
236
|
if child.metadata.coordinates[0].references:
|
|
@@ -230,7 +242,7 @@ def fill_consistent(structure: IDSStructure, leave_empty: float = 0.2):
|
|
|
230
242
|
if isinstance(coor, IDSPrimitive):
|
|
231
243
|
# maybe fill with random data:
|
|
232
244
|
try:
|
|
233
|
-
maybe_set_random_value(coor, leave_empty)
|
|
245
|
+
maybe_set_random_value(coor, leave_empty, skip_complex)
|
|
234
246
|
except (RuntimeError, ValueError):
|
|
235
247
|
pass
|
|
236
248
|
child.resize(len(coor))
|
|
@@ -244,7 +256,9 @@ def fill_consistent(structure: IDSStructure, leave_empty: float = 0.2):
|
|
|
244
256
|
else:
|
|
245
257
|
child.resize(child.metadata.coordinates[0].size or 1)
|
|
246
258
|
for ele in child:
|
|
247
|
-
exclusive_coordinates.extend(
|
|
259
|
+
exclusive_coordinates.extend(
|
|
260
|
+
fill_consistent(ele, leave_empty, skip_complex)
|
|
261
|
+
)
|
|
248
262
|
|
|
249
263
|
else: # IDSPrimitive
|
|
250
264
|
coordinates = child.metadata.coordinates
|
|
@@ -256,7 +270,7 @@ def fill_consistent(structure: IDSStructure, leave_empty: float = 0.2):
|
|
|
256
270
|
exclusive_coordinates.append(child)
|
|
257
271
|
else:
|
|
258
272
|
try:
|
|
259
|
-
maybe_set_random_value(child, leave_empty)
|
|
273
|
+
maybe_set_random_value(child, leave_empty, skip_complex)
|
|
260
274
|
except (RuntimeError, ValueError):
|
|
261
275
|
pass
|
|
262
276
|
|
|
@@ -278,7 +292,7 @@ def fill_consistent(structure: IDSStructure, leave_empty: float = 0.2):
|
|
|
278
292
|
coor = filled_refs.pop()
|
|
279
293
|
unset_coordinate(coor)
|
|
280
294
|
|
|
281
|
-
maybe_set_random_value(element, leave_empty)
|
|
295
|
+
maybe_set_random_value(element, leave_empty, skip_complex)
|
|
282
296
|
else:
|
|
283
297
|
return exclusive_coordinates
|
|
284
298
|
|
|
@@ -46,7 +46,7 @@ def test_pretty_print(ids):
|
|
|
46
46
|
assert pprint.pformat(ids) == "<IDSToplevel (IDS:gyrokinetics)>"
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
def test_serialize_nondefault_dd_version():
|
|
49
|
+
def test_serialize_nondefault_dd_version(requires_imas):
|
|
50
50
|
ids = IDSFactory("3.31.0").core_profiles()
|
|
51
51
|
fill_with_random_data(ids)
|
|
52
52
|
data = ids.serialize()
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# A minimal testcase loading an IDS file and checking that the structure built is ok
|
|
2
2
|
from numbers import Complex, Integral, Number, Real
|
|
3
|
+
from packaging import version
|
|
3
4
|
|
|
4
5
|
import numpy as np
|
|
5
6
|
import pytest
|
|
@@ -61,7 +62,11 @@ def test_assign_str_1d(minimal, caplog):
|
|
|
61
62
|
|
|
62
63
|
|
|
63
64
|
# Prevent the expected numpy ComplexWarnings from cluttering pytest output
|
|
64
|
-
@pytest.mark.filterwarnings(
|
|
65
|
+
@pytest.mark.filterwarnings(
|
|
66
|
+
"ignore::numpy.ComplexWarning"
|
|
67
|
+
if version.parse(np.__version__) < version.parse("1.25")
|
|
68
|
+
else "ignore::numpy.exceptions.ComplexWarning"
|
|
69
|
+
)
|
|
65
70
|
@pytest.mark.parametrize("typ, max_dim", [("flt", 6), ("cpx", 6), ("int", 3)])
|
|
66
71
|
def test_assign_numeric_types(minimal, caplog, typ, max_dim):
|
|
67
72
|
caplog.set_level("INFO", "imas")
|
|
@@ -87,7 +92,11 @@ def test_assign_numeric_types(minimal, caplog, typ, max_dim):
|
|
|
87
92
|
len(caplog.records) == 1
|
|
88
93
|
elif dim == other_ndim >= 1 and other_typ == "cpx":
|
|
89
94
|
# np allows casting of complex to float or int, but warns:
|
|
90
|
-
with pytest.warns(
|
|
95
|
+
with pytest.warns(
|
|
96
|
+
np.ComplexWarning
|
|
97
|
+
if version.parse(np.__version__) < version.parse("1.25")
|
|
98
|
+
else np.exceptions.ComplexWarning
|
|
99
|
+
):
|
|
91
100
|
caplog.clear()
|
|
92
101
|
minimal[name].value = value
|
|
93
102
|
assert len(caplog.records) == 1
|
|
@@ -54,7 +54,7 @@ def test_nbc_structure_to_aos(caplog):
|
|
|
54
54
|
assert caplog.record_tuples[0][:2] == ("imas.ids_convert", logging.WARNING)
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
def test_nbc_0d_to_1d(caplog):
|
|
57
|
+
def test_nbc_0d_to_1d(caplog, requires_imas):
|
|
58
58
|
# channel/filter_spectrometer/radiance_calibration in spectrometer visible changed
|
|
59
59
|
# from FLT_0D to FLT_1D in DD 3.39.0
|
|
60
60
|
ids = IDSFactory("3.32.0").spectrometer_visible()
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
from imas.db_entry import DBEntry
|
|
2
|
+
from imas.exception import InvalidNetCDFEntry
|
|
3
|
+
from imas.test.test_helpers import compare_children, fill_consistent
|
|
4
|
+
import re
|
|
5
|
+
import pytest
|
|
6
|
+
import netCDF4
|
|
7
|
+
from packaging import version
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def test_nc_latest_dd_autofill_put_get_skip_complex(ids_name, tmp_path):
|
|
11
|
+
with DBEntry(f"{tmp_path}/test-{ids_name}.nc", "x") as entry:
|
|
12
|
+
ids = entry.factory.new(ids_name)
|
|
13
|
+
fill_consistent(ids, leave_empty=0.5, skip_complex=True)
|
|
14
|
+
|
|
15
|
+
entry.put(ids)
|
|
16
|
+
ids2 = entry.get(ids_name)
|
|
17
|
+
|
|
18
|
+
compare_children(ids, ids2)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@pytest.mark.skipif(
|
|
22
|
+
version.parse(netCDF4.__version__) >= version.parse("1.7.0"),
|
|
23
|
+
reason="NetCDF4 versions < 1.7.0 do not support complex numbers",
|
|
24
|
+
)
|
|
25
|
+
def test_nc_latest_dd_autofill_put_get_with_complex_older_netCDF4(ids_name, tmp_path):
|
|
26
|
+
with DBEntry(f"{tmp_path}/test-{ids_name}.nc", "x") as entry:
|
|
27
|
+
ids = entry.factory.new(ids_name)
|
|
28
|
+
fill_consistent(ids, leave_empty=0.5, skip_complex=False)
|
|
29
|
+
try:
|
|
30
|
+
entry.put(ids)
|
|
31
|
+
ids2 = entry.get(ids_name)
|
|
32
|
+
compare_children(ids, ids2)
|
|
33
|
+
except InvalidNetCDFEntry as e:
|
|
34
|
+
# This is expected, as these versions of NetCDF4 do not support
|
|
35
|
+
# complex numbers.
|
|
36
|
+
if not re.search(
|
|
37
|
+
r".*NetCDF 1.7.0 or later is required for complex data types", str(e)
|
|
38
|
+
):
|
|
39
|
+
raise InvalidNetCDFEntry(e) from e
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@pytest.mark.skipif(
|
|
43
|
+
version.parse(netCDF4.__version__) < version.parse("1.7.0"),
|
|
44
|
+
reason="NetCDF4 versions >= 1.7.0 support complex numbers",
|
|
45
|
+
)
|
|
46
|
+
def test_nc_latest_dd_autofill_put_get_with_complex_newer_netCDF4(ids_name, tmp_path):
|
|
47
|
+
with DBEntry(f"{tmp_path}/test-{ids_name}.nc", "x") as entry:
|
|
48
|
+
ids = entry.factory.new(ids_name)
|
|
49
|
+
fill_consistent(ids, leave_empty=0.5, skip_complex=False)
|
|
50
|
+
|
|
51
|
+
entry.put(ids)
|
|
52
|
+
ids2 = entry.get(ids_name)
|
|
53
|
+
|
|
54
|
+
compare_children(ids, ids2)
|
|
@@ -21,7 +21,7 @@ def test_ids_valid_type():
|
|
|
21
21
|
assert ids_types in ({IDSType.NONE}, {IDSType.CONSTANT, IDSType.DYNAMIC})
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
def test_constant_ids(caplog):
|
|
24
|
+
def test_constant_ids(caplog, requires_imas):
|
|
25
25
|
ids = imas.IDSFactory().new("amns_data")
|
|
26
26
|
if ids.metadata.type is IDSType.NONE:
|
|
27
27
|
pytest.skip("IDS definition has no constant IDSs")
|
|
@@ -54,7 +54,7 @@ def test_inspect():
|
|
|
54
54
|
inspect(cp.profiles_1d[1].grid.rho_tor_norm) # IDSPrimitive
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
def test_inspect_lazy():
|
|
57
|
+
def test_inspect_lazy(requires_imas):
|
|
58
58
|
with get_training_db_entry() as entry:
|
|
59
59
|
cp = entry.get("core_profiles", lazy=True)
|
|
60
60
|
inspect(cp)
|
|
@@ -141,7 +141,7 @@ def test_idsdiffgen():
|
|
|
141
141
|
assert diff[0] == ("profiles_1d/time", -1, 0)
|
|
142
142
|
|
|
143
143
|
|
|
144
|
-
def test_idsdiff():
|
|
144
|
+
def test_idsdiff(requires_imas):
|
|
145
145
|
# Test the diff rendering for two sample IDSs
|
|
146
146
|
with get_training_db_entry() as entry:
|
|
147
147
|
imas.util.idsdiff(entry.get("core_profiles"), entry.get("equilibrium"))
|
|
@@ -179,7 +179,7 @@ def test_get_toplevel():
|
|
|
179
179
|
assert get_toplevel(cp) is cp
|
|
180
180
|
|
|
181
181
|
|
|
182
|
-
def test_is_lazy_loaded():
|
|
182
|
+
def test_is_lazy_loaded(requires_imas):
|
|
183
183
|
with get_training_db_entry() as entry:
|
|
184
184
|
assert is_lazy_loaded(entry.get("core_profiles")) is False
|
|
185
185
|
assert is_lazy_loaded(entry.get("core_profiles", lazy=True)) is True
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: imas-python
|
|
3
|
-
Version: 1.1.2.
|
|
3
|
+
Version: 1.1.2.dev55
|
|
4
4
|
Summary: Pythonic wrappers for the IMAS Access Layer
|
|
5
5
|
Author: ITER Organization
|
|
6
6
|
Author-email: Karel Lucas van de Plassche <karelvandeplassche@gmail.com>, Daan van Vugt <dvanvugt@ignitioncomputing.com>, Maarten Sebregts <msebregts@ignitioncomputing.com>, imas-support@iter.org
|
|
@@ -222,7 +222,7 @@ Requires-Dist: sphinx-autosummary-accessors>=0.1.2; extra == "docs"
|
|
|
222
222
|
Requires-Dist: sphinx-immaterial<0.12,>=0.11.0; extra == "docs"
|
|
223
223
|
Requires-Dist: sphinx-click; extra == "docs"
|
|
224
224
|
Provides-Extra: netcdf
|
|
225
|
-
Requires-Dist: netCDF4>=1.
|
|
225
|
+
Requires-Dist: netCDF4>=1.4.1; extra == "netcdf"
|
|
226
226
|
Provides-Extra: h5py
|
|
227
227
|
Requires-Dist: h5py; extra == "h5py"
|
|
228
228
|
Provides-Extra: test
|