atmos-validation 2.0.0__tar.gz → 2.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/CHANGELOG.md +19 -0
  2. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/PKG-INFO +1 -1
  3. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/main.py +17 -9
  4. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/dims/dimvars_validator.py +1 -1
  5. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/variables/varinterval_validator.py +1 -0
  6. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/pyproject.toml +1 -1
  7. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  8. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  9. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/ci-conventional-commit-linter.yml +0 -0
  10. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/ci-cov-comment.yml +0 -0
  11. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/ci-doctest.yml +0 -0
  12. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/ci-lint-pr.yml +0 -0
  13. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/ci-test-pr.yml +0 -0
  14. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/ci-trufflehog-scan.yml +0 -0
  15. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/pypi-publisher.yml +0 -0
  16. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/release-please.yml +0 -0
  17. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.gitignore +0 -0
  18. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.pre-commit-config.yaml +0 -0
  19. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.vscode/extensions.json +0 -0
  20. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.vscode/settings.json +0 -0
  21. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/LICENSE +0 -0
  22. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/README.md +0 -0
  23. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/SECURITY.md +0 -0
  24. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/__init__.py +0 -0
  25. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/__main__.py +0 -0
  26. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/__init__.py +0 -0
  27. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/attrs_to_meta.py +0 -0
  28. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/df_to_nc.py +0 -0
  29. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/main.py +0 -0
  30. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/measurement_metadata_to_schema.json +0 -0
  31. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/parsers.py +0 -0
  32. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/utils.py +0 -0
  33. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/__init__.py +0 -0
  34. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/classification_level.py +0 -0
  35. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/data_usability_level.py +0 -0
  36. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/data_usability_levels.py +0 -0
  37. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/dim_constants.py +0 -0
  38. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/installation_type.py +0 -0
  39. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/installation_types.py +0 -0
  40. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/instrument_type.py +0 -0
  41. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/instrument_types.py +0 -0
  42. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/metadata.py +0 -0
  43. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/parameter_config.py +0 -0
  44. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/parameter_configs.py +0 -0
  45. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/qc_tests.py +0 -0
  46. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/tests/__init__.py +0 -0
  47. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/tests/test_classification_level.py +0 -0
  48. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/tests/test_parameter_configs.py +0 -0
  49. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/tests/test_unique_configs.py +0 -0
  50. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/__init__.py +0 -0
  51. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/date_helper.py +0 -0
  52. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_date.py +0 -0
  53. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_metadata.py +0 -0
  54. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_names.py +0 -0
  55. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_parameter_info.py +0 -0
  56. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_parameter_info_list.py +0 -0
  57. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_parser.py +0 -0
  58. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_position.py +0 -0
  59. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/main.py +0 -0
  60. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/result_file.py +0 -0
  61. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/row_parser.py +0 -0
  62. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/utils.py +0 -0
  63. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/validate_result.py +0 -0
  64. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/__init__.py +0 -0
  65. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/__init__.py +0 -0
  66. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_blacklisted_globals.py +0 -0
  67. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_data_usability_validation.py +0 -0
  68. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_dimvars_validator.py +0 -0
  69. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_file_attributes.py +0 -0
  70. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_final_reports_validation.py +0 -0
  71. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_height_depth_validation.py +0 -0
  72. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_height_longname_validator.py +0 -0
  73. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_installation_types_validation.py +0 -0
  74. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_lat_lon_validator.py +0 -0
  75. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_main.py +0 -0
  76. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_sig_digs.py +0 -0
  77. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_spatial_validators.py +0 -0
  78. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_time_validator.py +0 -0
  79. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_util.py +0 -0
  80. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_varattrs_validation.py +0 -0
  81. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_varinterval_validator.py +0 -0
  82. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/utils.py +0 -0
  83. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validation_logger.py +0 -0
  84. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validation_settings.py +0 -0
  85. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/__init__.py +0 -0
  86. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/dims/__init__.py +0 -0
  87. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/dims/dims_validator.py +0 -0
  88. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/dims/spatial_validators.py +0 -0
  89. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/dims/time_validator.py +0 -0
  90. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/file_attributes.py +0 -0
  91. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/root_validator.py +0 -0
  92. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/tests/__init__.py +0 -0
  93. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/variables/__init__.py +0 -0
  94. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/variables/sig_dig_validator.py +0 -0
  95. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/variables/varattrs_validator.py +0 -0
  96. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/variables/vardims_validator.py +0 -0
  97. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/variables/variables_validator.py +0 -0
  98. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/docs/ascii_format.md +0 -0
  99. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/docs/conventions.md +0 -0
  100. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/docs/run.md +0 -0
  101. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/examples/example_ascii_measurement.dat +0 -0
  102. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/examples/example_netcdf_measurement.nc +0 -0
  103. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/examples/hindcast_example/example_hindcast_20160101_20160131_T744.nc +0 -0
  104. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/examples/hindcast_example/example_hindcast_20160201_20160229_T696.nc +0 -0
  105. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/examples/hindcast_example/example_hindcast_20160301_20160331_T744.nc +0 -0
  106. {atmos_validation-2.0.0 → atmos_validation-2.0.2}/uv.lock +0 -0
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.0.2](https://github.com/equinor/atmos-validation/compare/v2.0.1...v2.0.2) (2025-09-10)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * Fix xarray future warnings ([#66](https://github.com/equinor/atmos-validation/issues/66)) ([2b8ef08](https://github.com/equinor/atmos-validation/commit/2b8ef08248e7f74cf097d179c7dd8d9522bacfe7))
9
+
10
+
11
+ ### Optimization
12
+
13
+ * Fix dataset load performance bottlenecks ([#67](https://github.com/equinor/atmos-validation/issues/67)) ([b899558](https://github.com/equinor/atmos-validation/commit/b899558a13dfe3ffa9138f5ef34836d20f9f8fa2))
14
+
15
+ ## [2.0.1](https://github.com/equinor/atmos-validation/compare/v2.0.0...v2.0.1) (2025-09-09)
16
+
17
+
18
+ ### Optimization
19
+
20
+ * Adjust compatibility settings for open_mfdataset ([#64](https://github.com/equinor/atmos-validation/issues/64)) ([9e5825f](https://github.com/equinor/atmos-validation/commit/9e5825f0d666d135f32d06242514258b8288ba9e))
21
+
3
22
  ## [2.0.0](https://github.com/equinor/atmos-validation/compare/v1.11.0...v2.0.0) (2025-09-05)
4
23
 
5
24
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atmos_validation
3
- Version: 2.0.0
3
+ Version: 2.0.2
4
4
  Summary: A python library containing automated data validation tools for the Atmos Data Service
5
5
  Project-URL: Repository, https://github.com/equinor/atmos-validation
6
6
  Project-URL: Documentation, https://github.com/equinor/atmos-validation/tree/main/docs
@@ -83,7 +83,7 @@ def validate(
83
83
  injected_logger: pass a logger to be used for validation
84
84
  additional_args: see docstring "Options" for available additional_args.
85
85
  batch_size: Since open_mfdataset is slow for opening large amount of files,
86
- validation can be run in batches. Defaults to 50 files per open_mfdataset/batch.
86
+ validation can be run in batches. Defaults to 1000 files per open_mfdataset/batch.
87
87
 
88
88
  Returns:
89
89
  ValidationResult containing errors and warning from running validation
@@ -148,14 +148,22 @@ def load_paths(path: str, batch_size: int) -> List[List[str]]:
148
148
 
149
149
  def open_mf_dataset(paths: List[str]) -> xr.Dataset:
150
150
  xr.set_options(use_new_combine_kwarg_defaults=True)
151
- return xr.open_mfdataset(
152
- paths,
153
- compat="equals",
154
- engine="h5netcdf",
155
- concat_dim="Time",
156
- combine="nested",
157
- parallel=True,
158
- )
151
+ if len(paths) > 1:
152
+ log.info("Running open mfdataset for %s files", len(paths))
153
+ ds = xr.open_mfdataset(
154
+ paths,
155
+ engine="h5netcdf",
156
+ concat_dim="Time",
157
+ compat="override",
158
+ data_vars="minimal",
159
+ combine="nested",
160
+ chunks="auto",
161
+ parallel=True,
162
+ )
163
+ else:
164
+ log.info("Running open dataset for single file %s", paths[0])
165
+ ds = xr.open_dataset(paths[0], engine="h5netcdf")
166
+ return ds
159
167
 
160
168
 
161
169
  def pretty_print_result(results: List[str], description: str, width: int = 150):
@@ -17,7 +17,7 @@ def dimvars_validator(
17
17
  Incidentally, this also verifies that height/depth dimensions are
18
18
  correctly attached
19
19
  """
20
- alldims = {str(key) for key in ds.dims.keys()}
20
+ alldims = {str(key) for key in ds.sizes.keys()}
21
21
  result = []
22
22
  for var in ds.keys():
23
23
  var = str(var)
@@ -136,6 +136,7 @@ def _check_randomly_selected_intervals_min_max(
136
136
 
137
137
  slice_tuple = _get_slice_tuple(dims, actual, rand)
138
138
  vals = actual[slice_tuple]
139
+ vals.load()
139
140
  result += undermin_validator(actual, expected, slice_tuple, vals)
140
141
  result += overmax_validator(actual, expected, slice_tuple, vals)
141
142
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "atmos_validation"
3
- version = "2.0.0"
3
+ version = "2.0.2"
4
4
  description = "A python library containing automated data validation tools for the Atmos Data Service"
5
5
  authors = [{ name = "Team Atmos (Equinor)" }]
6
6
  requires-python = ">=3.10, <3.14"