From 39bda14d53ee80458a1d2d2de012b209d653dbf9 Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Fri, 27 Sep 2024 17:05:30 +0200 Subject: [PATCH 01/13] add section for extra info in config --- README.md | 9 +++++++++ mllam_data_prep/config.py | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/README.md b/README.md index a0a9c6a..21ebf95 100644 --- a/README.md +++ b/README.md @@ -201,6 +201,13 @@ inputs: name_format: f"{var_name}" target_output_variable: static +extra: + projection: + class_name: LambertConformal + kwargs: + central_longitude: 25.0 + central_latitude: 56.7 + standard_parallels: [56.7, 56.7] ``` Apart from identifiers to keep track of the configuration file format version and the dataset version (for you to keep track of changes that you make to the dataset), the configuration file is divided into two main sections: @@ -208,6 +215,8 @@ Apart from identifiers to keep track of the configuration file format version an - `output`: defines the variables and dimensions of the output dataset produced by `mllam-data-prep`. These are the variables and dimensions that the input datasets will be mapped to. These output variables and dimensions should match the input variables and dimensions expected by the model architecture you are training. - `inputs`: a list of source datasets to extract data from. These are the datasets that will be mapped to the architecture defined in the `architecture` section. +If you want to add any extra information to the configuration file you can add it to the `extra` section. This section is not used or validated by `mllam-data-prep` but can be used to store any extra information you want to keep track of (for example when using `mllam-data-prep` with [neural-lam](https://github.com/mllam/neural-lam) the `extra` section is used to store the projection information). + ### The `output` section ```yaml diff --git a/mllam_data_prep/config.py b/mllam_data_prep/config.py index 6112a0c..d4a52e7 100644 --- a/mllam_data_prep/config.py +++ b/mllam_data_prep/config.py @@ -294,6 +294,10 @@ class Config(dataclass_wizard.YAMLWizard): inputs: Dict[str, InputDataset] Input datasets for the model. The keys are the names of the datasets and the values are the input dataset configurations. + extra: Dict[str, Any] + Extra information to include in the config file. This will be ignored by the + `mllam_data_prep` library, but can be used to include additional information + that is useful for the user. schema_version: str Version string for the config file schema. dataset_version: str @@ -302,6 +306,7 @@ class Config(dataclass_wizard.YAMLWizard): output: Output inputs: Dict[str, InputDataset] + extra: Dict[str, Any] = None schema_version: str dataset_version: str From 9460967d027f15da5015aab1f24a3634edaad712 Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Fri, 27 Sep 2024 17:14:22 +0200 Subject: [PATCH 02/13] minor fixes --- README.md | 2 +- example.danra.yaml | 2 +- mllam_data_prep/config.py | 2 +- mllam_data_prep/create_dataset.py | 5 +++-- tests/data.py | 2 ++ tests/test_from_config.py | 6 +++--- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 21ebf95..70c6a4f 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ ds = mdp.create_dataset(config=config) A full example configuration file is given in [example.danra.yaml](example.danra.yaml), and reproduced here for completeness: ```yaml -schema_version: v0.2.0 +schema_version: v0.2.0+dev dataset_version: v0.1.0 output: diff --git a/example.danra.yaml b/example.danra.yaml index 28ae1af..793ec61 100644 --- a/example.danra.yaml +++ b/example.danra.yaml @@ -1,4 +1,4 @@ -schema_version: v0.2.0 +schema_version: v0.2.0+dev dataset_version: v0.1.0 output: diff --git a/mllam_data_prep/config.py b/mllam_data_prep/config.py index d4a52e7..f6c4209 100644 --- a/mllam_data_prep/config.py +++ b/mllam_data_prep/config.py @@ -306,9 +306,9 @@ class Config(dataclass_wizard.YAMLWizard): output: Output inputs: Dict[str, InputDataset] - extra: Dict[str, Any] = None schema_version: str dataset_version: str + extra: Dict[str, Any] = None if __name__ == "__main__": diff --git a/mllam_data_prep/create_dataset.py b/mllam_data_prep/create_dataset.py index ad14704..5a27b51 100644 --- a/mllam_data_prep/create_dataset.py +++ b/mllam_data_prep/create_dataset.py @@ -241,9 +241,10 @@ def create_dataset_zarr(fp_config, fp_zarr: str = None): """ config = Config.from_yaml_file(file=fp_config) + expected_schema_version = "v0.2.0+dev" assert ( - config.schema_version == "v0.2.0" - ), f"Expected schema version v0.2.0, got {config.schema_version}" + config.schema_version == expected_schema_version + ), f"Expected schema version {expected_schema_version}, got {config.schema_version}" ds = create_dataset(config=config) diff --git a/tests/data.py b/tests/data.py index c2517ff..fe8caba 100644 --- a/tests/data.py +++ b/tests/data.py @@ -5,6 +5,8 @@ import pandas as pd import xarray as xr +SCHEMA_VERSION = "v0.2.0+dev" + NX, NY = 10, 8 NT_ANALYSIS, NT_FORECAST = 5, 12 NZ = 3 diff --git a/tests/test_from_config.py b/tests/test_from_config.py index 5eb66ba..1fbbd25 100644 --- a/tests/test_from_config.py +++ b/tests/test_from_config.py @@ -29,7 +29,7 @@ def test_merging_static_and_surface_analysis(): t_test_end = testdata.T_END_ANALYSIS config = dict( - schema_version="v0.2.0", + schema_version=testdata.SCHEMA_VERSION, dataset_version="v0.1.0", output=dict( variables=dict( @@ -139,7 +139,7 @@ def test_time_selection(source_data_contains_time_range, time_stepsize): t_end_config = t_end_dataset + testdata.DT_ANALYSIS config = dict( - schema_version="v0.2.0", + schema_version=testdata.SCHEMA_VERSION, dataset_version="v0.1.0", output=dict( variables=dict( @@ -215,7 +215,7 @@ def test_feature_collision(use_common_feature_var_name): state_feature_var_name = "state_feature" config = dict( - schema_version="v0.2.0", + schema_version=testdata.SCHEMA_VERSION, dataset_version="v0.1.0", output=dict( variables=dict( From 77abeb268e3c14705e61f235b8433a6cadc57c8e Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Fri, 27 Sep 2024 17:19:40 +0200 Subject: [PATCH 03/13] actually add extra info to example --- example.danra.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/example.danra.yaml b/example.danra.yaml index 793ec61..e984cc1 100644 --- a/example.danra.yaml +++ b/example.danra.yaml @@ -86,3 +86,11 @@ inputs: method: stack_variables_by_var_name name_format: f"{var_name}" target_output_variable: static + +extra: + projection: + class_name: LambertConformal + kwargs: + central_longitude: 25.0 + central_latitude: 56.7 + standard_parallels: [56.7, 56.7] From 3189341f1074cc467025527b9dfd728d8f8ff3d5 Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Wed, 20 Nov 2024 10:27:26 +0100 Subject: [PATCH 04/13] update DANRA example, README and CHANGELOG --- CHANGELOG.md | 21 +++++++++++-- README.md | 9 +++++- example.danra.yaml | 3 ++ mllam_data_prep/create_dataset.py | 2 +- tests/data.py | 2 +- tests/test_config.py | 2 +- tests/test_from_config.py | 51 +++++++++++++++++++++++++++++++ 7 files changed, 83 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1125e42..a623b20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,22 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v0.4.0 +## Unreleased + +[All changes](https://github.com/mllam/mllam-data-prep/compare/v0.3.0...v0.4.0) + +### Added + +- Add optional section called `extra` to config file to allow for user-defined extra information that is ignored by `mllam-data-prep` but can be used by downstream applications. ![\#18](https://github.com/mllam/mllam-data-prep/pull/18), @leifdenby + +### Changed + +- Schema version bumped to `v0.5.0` to match next expected release that will support optional `extra` section in config [\#18](https://github.com/mllam/mllam-data-prep/pull/18) + + +## [v0.4.0](https://github.com/mllam/mllam-data-prep/releases/tag/v0.4.0) + +[All changes](https://github.com/mllam/mllam-data-prep/compare/v0.3.0...v0.4.0) This release adds support for defining the output path in the command line interface and addresses bugs around optional dependencies for @@ -25,7 +40,7 @@ interface and addresses bugs around optional dependencies for ## [v0.3.0](https://github.com/mllam/mllam-data-prep/releases/tag/v0.3.0) -[All changes](https://github.com/mllam/mllam-data-prep/compare/v0.3.0...v0.2.0) +[All changes](https://github.com/mllam/mllam-data-prep/compare/v0.2.0...v0.3.0) ### Added @@ -38,7 +53,7 @@ interface and addresses bugs around optional dependencies for ## [v0.2.0](https://github.com/mllam/mllam-data-prep/releases/tags/v0.2.0) -[All changes](https://github.com/mllam/mllam-data-prep/compare/v0.2.0...v0.1.0) +[All changes](https://github.com/mllam/mllam-data-prep/compare/v0.1.0...v0.2.0) ### Added diff --git a/README.md b/README.md index 8f294f6..bb7e5c1 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ ds = mdp.create_dataset(config=config) A full example configuration file is given in [example.danra.yaml](example.danra.yaml), and reproduced here for completeness: ```yaml -schema_version: v0.2.0+dev +schema_version: v0.5.0 dataset_version: v0.1.0 output: @@ -317,3 +317,10 @@ The `inputs` section defines the source datasets to extract data from. Each sour - `rename`: simply rename the dimension to the new name - `stack`: stack the listed dimension to create the dimension in the output - `stack_variables_by_var_name`: stack the dimension into the new dimension, and also stack the variable name into the new variable name. This is useful when you have multiple variables with the same dimensions that you want to stack into a single variable. + + +### Config schema versioning + +The schema version of the configuration file is defined by the `schema_version` attribute at the top of the configuration file. This is used to keep track of changes to the configuration file format. The schema version is used to check that the configuration file is compatible with the version of `mllam-data-prep` that you are using. If the schema version of the configuration file is not compatible with the version of `mllam-data-prep` that you are using you will get an error message telling you that the schema version is not compatible. + +The schema version is updated whenever the configuration format changes, with the new schema version matching the minimum version of `mllam-data-prep` that is required to use the new configuration format. As `mllam-data-prep` is still in rapid development (and hasn't reached version `v1.0.0` yet) we unfortunately make no gaurantee about backward compatibility. However, the [CHANGELOG.md](CHANGELOG.md) will always contain migration instructions when the config format changes. diff --git a/example.danra.yaml b/example.danra.yaml index 0801f83..413ed7d 100644 --- a/example.danra.yaml +++ b/example.danra.yaml @@ -94,3 +94,6 @@ extra: central_longitude: 25.0 central_latitude: 56.7 standard_parallels: [56.7, 56.7] + globe: + semimajor_axis: 6367470.0 + semiminor_axis: 6367470.0 diff --git a/mllam_data_prep/create_dataset.py b/mllam_data_prep/create_dataset.py index 5a27b51..272342f 100644 --- a/mllam_data_prep/create_dataset.py +++ b/mllam_data_prep/create_dataset.py @@ -241,7 +241,7 @@ def create_dataset_zarr(fp_config, fp_zarr: str = None): """ config = Config.from_yaml_file(file=fp_config) - expected_schema_version = "v0.2.0+dev" + expected_schema_version = "v0.5.0" assert ( config.schema_version == expected_schema_version ), f"Expected schema version {expected_schema_version}, got {config.schema_version}" diff --git a/tests/data.py b/tests/data.py index fe8caba..78739ee 100644 --- a/tests/data.py +++ b/tests/data.py @@ -5,7 +5,7 @@ import pandas as pd import xarray as xr -SCHEMA_VERSION = "v0.2.0+dev" +SCHEMA_VERSION = "v0.5.0" NX, NY = 10, 8 NT_ANALYSIS, NT_FORECAST = 5, 12 diff --git a/tests/test_config.py b/tests/test_config.py index 5459db6..7a6ae9b 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -4,7 +4,7 @@ import mllam_data_prep as mdp INVALID_EXTRA_FIELDS_CONFIG_YAML = """ -schema_version: v0.1.0 +schema_version: {schema_version} dataset_version: v0.1.0 output: diff --git a/tests/test_from_config.py b/tests/test_from_config.py index 1fbbd25..45c4233 100644 --- a/tests/test_from_config.py +++ b/tests/test_from_config.py @@ -280,3 +280,54 @@ def test_danra_example(): fp_config = Path(__file__).parent.parent / "example.danra.yaml" with tempfile.TemporaryDirectory(suffix=".zarr") as tmpdir: mdp.create_dataset_zarr(fp_config=fp_config, fp_zarr=tmpdir) + + +@pytest.mark.parametrize("extra_content", [None, {"foobar": {"baz": 42}}]) +def test_optional_extra_section(extra_content): + """ + Test to ensure that the optional `extra` section of the config can contain + arbitrary information and is not required for the config to be valid + """ + tmpdir = tempfile.TemporaryDirectory() + datasets = testdata.create_data_collection( + data_kinds=["static"], fp_root=tmpdir.name + ) + + config_dict = dict( + schema_version=testdata.SCHEMA_VERSION, + dataset_version="v0.1.0", + output=dict( + variables=dict( + static=["grid_index", "static_feature"], + ), + ), + inputs=dict( + danra_static=dict( + path=datasets["static"], + dims=["x", "y"], + variables=testdata.DEFAULT_STATIC_VARS, + dim_mapping=dict( + grid_index=dict( + method="stack", + dims=["x", "y"], + ), + static_feature=dict( + method="stack_variables_by_var_name", + name_format="{var_name}", + ), + ), + target_output_variable="static", + ), + ), + ) + + if extra_content is not None: + config_dict["extra"] = extra_content + + # write yaml config to file + fn_config = "config.yaml" + fp_config = Path(tmpdir.name) / fn_config + with open(fp_config, "w") as f: + yaml.dump(config_dict, f) + + mdp.create_dataset_zarr(fp_config=fp_config) From 724cc9604e04f78c20cb84a7c52609f65ac110c8 Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Wed, 20 Nov 2024 10:30:35 +0100 Subject: [PATCH 05/13] fix schema version in danra example --- example.danra.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example.danra.yaml b/example.danra.yaml index 413ed7d..3edf126 100644 --- a/example.danra.yaml +++ b/example.danra.yaml @@ -1,4 +1,4 @@ -schema_version: v0.2.0+dev +schema_version: v0.5.0 dataset_version: v0.1.0 output: From d4f1bb7970d12f20035f6a99ed7594103dd6967b Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Wed, 20 Nov 2024 10:44:05 +0100 Subject: [PATCH 06/13] we should still support v0.2.0 schema --- example.danra.yaml | 19 +- mllam_data_prep/create_dataset.py | 14 +- pdm.lock | 442 ++---------------- .../config_examples/v0.2.0/example.danra.yaml | 88 ++++ .../config_examples/v0.5.0/example.danra.yaml | 99 ++++ tests/test_from_config.py | 32 ++ 6 files changed, 269 insertions(+), 425 deletions(-) create mode 100644 tests/config_examples/v0.2.0/example.danra.yaml create mode 100644 tests/config_examples/v0.5.0/example.danra.yaml diff --git a/example.danra.yaml b/example.danra.yaml index 3edf126..73aa0df 100644 --- a/example.danra.yaml +++ b/example.danra.yaml @@ -1,4 +1,4 @@ -schema_version: v0.5.0 +schema_version: v0.2.0 dataset_version: v0.1.0 output: @@ -49,7 +49,7 @@ inputs: state_feature: method: stack_variables_by_var_name dims: [altitude] - name_format: "{var_name}{altitude}m" + name_format: f"{var_name}{altitude}m" grid_index: method: stack dims: [x, y] @@ -70,7 +70,7 @@ inputs: dims: [x, y] forcing_feature: method: stack_variables_by_var_name - name_format: "{var_name}" + name_format: f"{var_name}" target_output_variable: forcing danra_lsm: @@ -84,16 +84,5 @@ inputs: dims: [x, y] static_feature: method: stack_variables_by_var_name - name_format: "{var_name}" + name_format: f"{var_name}" target_output_variable: static - -extra: - projection: - class_name: LambertConformal - kwargs: - central_longitude: 25.0 - central_latitude: 56.7 - standard_parallels: [56.7, 56.7] - globe: - semimajor_axis: 6367470.0 - semiminor_axis: 6367470.0 diff --git a/mllam_data_prep/create_dataset.py b/mllam_data_prep/create_dataset.py index 272342f..739cf70 100644 --- a/mllam_data_prep/create_dataset.py +++ b/mllam_data_prep/create_dataset.py @@ -15,6 +15,10 @@ from .ops.selection import select_by_kwargs from .ops.statistics import calc_stats +# the `extra` field in the config that was added between v0.2.0 and v0.5.0 is +# optional, so we can support both v0.2.0 and v0.5.0 +SUPPORTED_CONFIG_VERSIONS = ["v0.2.0", "v0.5.0"] + def _check_dataset_attributes(ds, expected_attributes, dataset_name): # check that the dataset has the expected attributes with the expected values @@ -241,10 +245,12 @@ def create_dataset_zarr(fp_config, fp_zarr: str = None): """ config = Config.from_yaml_file(file=fp_config) - expected_schema_version = "v0.5.0" - assert ( - config.schema_version == expected_schema_version - ), f"Expected schema version {expected_schema_version}, got {config.schema_version}" + if not config.schema_version in SUPPORTED_CONFIG_VERSIONS: + raise ValueError( + f"Unsupported schema version {config.schema_version}. Only schema versions " + f" {', '.join(SUPPORTED_CONFIG_VERSIONS)} are supported by mllam-data-prep " + f"v{__version__}." + ) ds = create_dataset(config=config) diff --git a/pdm.lock b/pdm.lock index 749d944..30a0e20 100644 --- a/pdm.lock +++ b/pdm.lock @@ -2,10 +2,10 @@ # It is not intended for manual editing. [metadata] -groups = ["default", "dask-distibuted", "dev"] +groups = ["default", "dev"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:e35fd7d265f53e711c01b5e20141b553bcd3ab07854b42384e6ec37c5ae5b128" +content_hash = "sha256:ed345b0df8664a5ab1aadb77d5c4218ef15f135ddacd674f0d029e5a39f9654d" [[metadata.targets]] requires_python = ">=3.9" @@ -101,6 +101,7 @@ name = "asttokens" version = "2.4.1" summary = "Annotate AST trees with source code positions" groups = ["dev"] +marker = "python_version > \"3.6\"" dependencies = [ "six>=1.12.0", "typing; python_version < \"3.5\"", @@ -139,28 +140,6 @@ files = [ {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] -[[package]] -name = "bokeh" -version = "3.4.3" -requires_python = ">=3.9" -summary = "Interactive plots and applications in the browser from Python" -groups = ["dask-distibuted"] -dependencies = [ - "Jinja2>=2.9", - "PyYAML>=3.10", - "contourpy>=1.2", - "numpy>=1.16", - "packaging>=16.8", - "pandas>=1.2", - "pillow>=7.1.0", - "tornado>=6.2", - "xyzservices>=2021.09.1", -] -files = [ - {file = "bokeh-3.4.3-py3-none-any.whl", hash = "sha256:c6f33817f866fc67fbeb5df79cd13a8bb592c05c591f3fd7f4f22b824f7afa01"}, - {file = "bokeh-3.4.3.tar.gz", hash = "sha256:b7c22fb0f7004b04f12e1b7b26ee0269a26737a08ded848fb58f6a34ec1eb155"}, -] - [[package]] name = "certifi" version = "2024.6.2" @@ -244,7 +223,7 @@ name = "click" version = "8.1.7" requires_python = ">=3.7" summary = "Composable command line interface toolkit" -groups = ["default", "dask-distibuted"] +groups = ["default"] dependencies = [ "colorama; platform_system == \"Windows\"", "importlib-metadata; python_version < \"3.8\"", @@ -259,7 +238,7 @@ name = "cloudpickle" version = "3.0.0" requires_python = ">=3.8" summary = "Pickler class to extend the standard pickle.Pickler functionality" -groups = ["default", "dask-distibuted"] +groups = ["default"] files = [ {file = "cloudpickle-3.0.0-py3-none-any.whl", hash = "sha256:246ee7d0c295602a036e86369c77fecda4ab17b506496730f2f576d9016fd9c7"}, {file = "cloudpickle-3.0.0.tar.gz", hash = "sha256:996d9a482c6fb4f33c1a35335cf8afd065d2a56e973270364840712d9131a882"}, @@ -270,75 +249,19 @@ name = "colorama" version = "0.4.6" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" summary = "Cross-platform colored terminal text." -groups = ["default", "dask-distibuted", "dev"] +groups = ["default", "dev"] marker = "sys_platform == \"win32\" or platform_system == \"Windows\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -[[package]] -name = "contourpy" -version = "1.2.1" -requires_python = ">=3.9" -summary = "Python library for calculating contours of 2D quadrilateral grids" -groups = ["dask-distibuted"] -dependencies = [ - "numpy>=1.20", -] -files = [ - {file = "contourpy-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd7c23df857d488f418439686d3b10ae2fbf9bc256cd045b37a8c16575ea1040"}, - {file = "contourpy-1.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5b9eb0ca724a241683c9685a484da9d35c872fd42756574a7cfbf58af26677fd"}, - {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c75507d0a55378240f781599c30e7776674dbaf883a46d1c90f37e563453480"}, - {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11959f0ce4a6f7b76ec578576a0b61a28bdc0696194b6347ba3f1c53827178b9"}, - {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb3315a8a236ee19b6df481fc5f997436e8ade24a9f03dfdc6bd490fea20c6da"}, - {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39f3ecaf76cd98e802f094e0d4fbc6dc9c45a8d0c4d185f0f6c2234e14e5f75b"}, - {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:94b34f32646ca0414237168d68a9157cb3889f06b096612afdd296003fdd32fd"}, - {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:457499c79fa84593f22454bbd27670227874cd2ff5d6c84e60575c8b50a69619"}, - {file = "contourpy-1.2.1-cp310-cp310-win32.whl", hash = "sha256:ac58bdee53cbeba2ecad824fa8159493f0bf3b8ea4e93feb06c9a465d6c87da8"}, - {file = "contourpy-1.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9cffe0f850e89d7c0012a1fb8730f75edd4320a0a731ed0c183904fe6ecfc3a9"}, - {file = "contourpy-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6022cecf8f44e36af10bd9118ca71f371078b4c168b6e0fab43d4a889985dbb5"}, - {file = "contourpy-1.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef5adb9a3b1d0c645ff694f9bca7702ec2c70f4d734f9922ea34de02294fdf72"}, - {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6150ffa5c767bc6332df27157d95442c379b7dce3a38dff89c0f39b63275696f"}, - {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c863140fafc615c14a4bf4efd0f4425c02230eb8ef02784c9a156461e62c965"}, - {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:00e5388f71c1a0610e6fe56b5c44ab7ba14165cdd6d695429c5cd94021e390b2"}, - {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4492d82b3bc7fbb7e3610747b159869468079fe149ec5c4d771fa1f614a14df"}, - {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49e70d111fee47284d9dd867c9bb9a7058a3c617274900780c43e38d90fe1205"}, - {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b59c0ffceff8d4d3996a45f2bb6f4c207f94684a96bf3d9728dbb77428dd8cb8"}, - {file = "contourpy-1.2.1-cp311-cp311-win32.whl", hash = "sha256:7b4182299f251060996af5249c286bae9361fa8c6a9cda5efc29fe8bfd6062ec"}, - {file = "contourpy-1.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2855c8b0b55958265e8b5888d6a615ba02883b225f2227461aa9127c578a4922"}, - {file = "contourpy-1.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:62828cada4a2b850dbef89c81f5a33741898b305db244904de418cc957ff05dc"}, - {file = "contourpy-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:309be79c0a354afff9ff7da4aaed7c3257e77edf6c1b448a779329431ee79d7e"}, - {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e785e0f2ef0d567099b9ff92cbfb958d71c2d5b9259981cd9bee81bd194c9a4"}, - {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cac0a8f71a041aa587410424ad46dfa6a11f6149ceb219ce7dd48f6b02b87a7"}, - {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af3f4485884750dddd9c25cb7e3915d83c2db92488b38ccb77dd594eac84c4a0"}, - {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ce6889abac9a42afd07a562c2d6d4b2b7134f83f18571d859b25624a331c90b"}, - {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a1eea9aecf761c661d096d39ed9026574de8adb2ae1c5bd7b33558af884fb2ce"}, - {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:187fa1d4c6acc06adb0fae5544c59898ad781409e61a926ac7e84b8f276dcef4"}, - {file = "contourpy-1.2.1-cp312-cp312-win32.whl", hash = "sha256:c2528d60e398c7c4c799d56f907664673a807635b857df18f7ae64d3e6ce2d9f"}, - {file = "contourpy-1.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:1a07fc092a4088ee952ddae19a2b2a85757b923217b7eed584fdf25f53a6e7ce"}, - {file = "contourpy-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bb6834cbd983b19f06908b45bfc2dad6ac9479ae04abe923a275b5f48f1a186b"}, - {file = "contourpy-1.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1d59e739ab0e3520e62a26c60707cc3ab0365d2f8fecea74bfe4de72dc56388f"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd3db01f59fdcbce5b22afad19e390260d6d0222f35a1023d9adc5690a889364"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a12a813949e5066148712a0626895c26b2578874e4cc63160bb007e6df3436fe"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe0ccca550bb8e5abc22f530ec0466136379c01321fd94f30a22231e8a48d985"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1d59258c3c67c865435d8fbeb35f8c59b8bef3d6f46c1f29f6123556af28445"}, - {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f32c38afb74bd98ce26de7cc74a67b40afb7b05aae7b42924ea990d51e4dac02"}, - {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d31a63bc6e6d87f77d71e1abbd7387ab817a66733734883d1fc0021ed9bfa083"}, - {file = "contourpy-1.2.1-cp39-cp39-win32.whl", hash = "sha256:ddcb8581510311e13421b1f544403c16e901c4e8f09083c881fab2be80ee31ba"}, - {file = "contourpy-1.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:10a37ae557aabf2509c79715cd20b62e4c7c28b8cd62dd7d99e5ed3ce28c3fd9"}, - {file = "contourpy-1.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a31f94983fecbac95e58388210427d68cd30fe8a36927980fab9c20062645609"}, - {file = "contourpy-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef2b055471c0eb466033760a521efb9d8a32b99ab907fc8358481a1dd29e3bd3"}, - {file = "contourpy-1.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b33d2bc4f69caedcd0a275329eb2198f560b325605810895627be5d4b876bf7f"}, - {file = "contourpy-1.2.1.tar.gz", hash = "sha256:4d8908b3bee1c889e547867ca4cdc54e5ab6be6d3e078556814a22457f49423c"}, -] - [[package]] name = "dask" version = "2024.7.1" requires_python = ">=3.9" summary = "Parallel PyData with Task Scheduling" -groups = ["default", "dask-distibuted"] +groups = ["default"] dependencies = [ "click>=8.1", "cloudpickle>=1.5.0", @@ -354,22 +277,6 @@ files = [ {file = "dask-2024.7.1.tar.gz", hash = "sha256:dbaef2d50efee841a9d981a218cfeb50392fc9a95e0403b6d680450e4f50d531"}, ] -[[package]] -name = "dask" -version = "2024.7.1" -extras = ["distributed"] -requires_python = ">=3.9" -summary = "Parallel PyData with Task Scheduling" -groups = ["dask-distibuted"] -dependencies = [ - "dask==2024.7.1", - "distributed==2024.7.1", -] -files = [ - {file = "dask-2024.7.1-py3-none-any.whl", hash = "sha256:dd046840050376c317de90629db5c6197adda820176cf3e2df10c3219d11951f"}, - {file = "dask-2024.7.1.tar.gz", hash = "sha256:dbaef2d50efee841a9d981a218cfeb50392fc9a95e0403b6d680450e4f50d531"}, -] - [[package]] name = "dataclass-wizard" version = "0.22.3" @@ -391,6 +298,7 @@ version = "5.1.1" requires_python = ">=3.5" summary = "Decorators for Humans" groups = ["dev"] +marker = "python_version > \"3.6\"" files = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, @@ -406,34 +314,6 @@ files = [ {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, ] -[[package]] -name = "distributed" -version = "2024.7.1" -requires_python = ">=3.9" -summary = "Distributed scheduler for Dask" -groups = ["dask-distibuted"] -dependencies = [ - "click>=8.0", - "cloudpickle>=1.5.0", - "dask==2024.7.1", - "jinja2>=2.10.3", - "locket>=1.0.0", - "msgpack>=1.0.0", - "packaging>=20.0", - "psutil>=5.7.2", - "pyyaml>=5.3.1", - "sortedcontainers>=2.0.5", - "tblib>=1.6.0", - "toolz>=0.10.0", - "tornado>=6.0.4", - "urllib3>=1.24.3", - "zict>=3.0.0", -] -files = [ - {file = "distributed-2024.7.1-py3-none-any.whl", hash = "sha256:d5ac38d9682c191e6582c86ebf37c10d7adb60bf4a95048a05ae4fb0866119bc"}, - {file = "distributed-2024.7.1.tar.gz", hash = "sha256:7bce7fa745163b55bdd67fd632b3edf57b31827640390b92d0ee3f73436429d3"}, -] - [[package]] name = "exceptiongroup" version = "1.2.1" @@ -452,6 +332,7 @@ version = "2.0.1" requires_python = ">=3.5" summary = "Get the currently executing AST node of a frame, and other information" groups = ["dev"] +marker = "python_version > \"3.6\"" files = [ {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, @@ -541,7 +422,7 @@ name = "fsspec" version = "2024.6.0" requires_python = ">=3.8" summary = "File-system specification" -groups = ["default", "dask-distibuted"] +groups = ["default"] files = [ {file = "fsspec-2024.6.0-py3-none-any.whl", hash = "sha256:58d7122eb8a1a46f7f13453187bfea4972d66bf01618d37366521b1998034cee"}, {file = "fsspec-2024.6.0.tar.gz", hash = "sha256:f579960a56e6d8038a9efc8f9c77279ec12e6299aa86b0769a7e9c46b94527c2"}, @@ -574,7 +455,7 @@ name = "importlib-metadata" version = "7.2.1" requires_python = ">=3.8" summary = "Read metadata from Python packages" -groups = ["default", "dask-distibuted"] +groups = ["default"] marker = "python_version < \"3.12\"" dependencies = [ "typing-extensions>=3.6.4; python_version < \"3.8\"", @@ -633,6 +514,7 @@ version = "8.18.1" requires_python = ">=3.9" summary = "IPython: Productive Interactive Computing" groups = ["dev"] +marker = "python_version > \"3.6\"" dependencies = [ "colorama; sys_platform == \"win32\"", "decorator", @@ -670,6 +552,7 @@ version = "0.19.1" requires_python = ">=3.6" summary = "An autocompletion tool for Python that can be used for text editors." groups = ["dev"] +marker = "python_version > \"3.6\"" dependencies = [ "parso<0.9.0,>=0.8.3", ] @@ -678,26 +561,12 @@ files = [ {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, ] -[[package]] -name = "jinja2" -version = "3.1.4" -requires_python = ">=3.7" -summary = "A very fast and expressive template engine." -groups = ["dask-distibuted"] -dependencies = [ - "MarkupSafe>=2.0", -] -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - [[package]] name = "locket" version = "1.0.0" requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" summary = "File-based locks for Python on Linux and Windows" -groups = ["default", "dask-distibuted"] +groups = ["default"] files = [ {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, @@ -733,62 +602,13 @@ files = [ {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, ] -[[package]] -name = "markupsafe" -version = "2.1.5" -requires_python = ">=3.7" -summary = "Safely add untrusted strings to HTML/XML markup." -groups = ["dask-distibuted"] -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - [[package]] name = "matplotlib-inline" version = "0.1.7" requires_python = ">=3.8" summary = "Inline Matplotlib backend for Jupyter" groups = ["dev"] +marker = "python_version > \"3.6\"" dependencies = [ "traitlets", ] @@ -808,60 +628,6 @@ files = [ {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] -[[package]] -name = "msgpack" -version = "1.0.8" -requires_python = ">=3.8" -summary = "MessagePack serializer" -groups = ["dask-distibuted"] -files = [ - {file = "msgpack-1.0.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:505fe3d03856ac7d215dbe005414bc28505d26f0c128906037e66d98c4e95868"}, - {file = "msgpack-1.0.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6b7842518a63a9f17107eb176320960ec095a8ee3b4420b5f688e24bf50c53c"}, - {file = "msgpack-1.0.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:376081f471a2ef24828b83a641a02c575d6103a3ad7fd7dade5486cad10ea659"}, - {file = "msgpack-1.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e390971d082dba073c05dbd56322427d3280b7cc8b53484c9377adfbae67dc2"}, - {file = "msgpack-1.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e073efcba9ea99db5acef3959efa45b52bc67b61b00823d2a1a6944bf45982"}, - {file = "msgpack-1.0.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82d92c773fbc6942a7a8b520d22c11cfc8fd83bba86116bfcf962c2f5c2ecdaa"}, - {file = "msgpack-1.0.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9ee32dcb8e531adae1f1ca568822e9b3a738369b3b686d1477cbc643c4a9c128"}, - {file = "msgpack-1.0.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e3aa7e51d738e0ec0afbed661261513b38b3014754c9459508399baf14ae0c9d"}, - {file = "msgpack-1.0.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69284049d07fce531c17404fcba2bb1df472bc2dcdac642ae71a2d079d950653"}, - {file = "msgpack-1.0.8-cp310-cp310-win32.whl", hash = "sha256:13577ec9e247f8741c84d06b9ece5f654920d8365a4b636ce0e44f15e07ec693"}, - {file = "msgpack-1.0.8-cp310-cp310-win_amd64.whl", hash = "sha256:e532dbd6ddfe13946de050d7474e3f5fb6ec774fbb1a188aaf469b08cf04189a"}, - {file = "msgpack-1.0.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9517004e21664f2b5a5fd6333b0731b9cf0817403a941b393d89a2f1dc2bd836"}, - {file = "msgpack-1.0.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d16a786905034e7e34098634b184a7d81f91d4c3d246edc6bd7aefb2fd8ea6ad"}, - {file = "msgpack-1.0.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2872993e209f7ed04d963e4b4fbae72d034844ec66bc4ca403329db2074377b"}, - {file = "msgpack-1.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c330eace3dd100bdb54b5653b966de7f51c26ec4a7d4e87132d9b4f738220ba"}, - {file = "msgpack-1.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83b5c044f3eff2a6534768ccfd50425939e7a8b5cf9a7261c385de1e20dcfc85"}, - {file = "msgpack-1.0.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1876b0b653a808fcd50123b953af170c535027bf1d053b59790eebb0aeb38950"}, - {file = "msgpack-1.0.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dfe1f0f0ed5785c187144c46a292b8c34c1295c01da12e10ccddfc16def4448a"}, - {file = "msgpack-1.0.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3528807cbbb7f315bb81959d5961855e7ba52aa60a3097151cb21956fbc7502b"}, - {file = "msgpack-1.0.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e2f879ab92ce502a1e65fce390eab619774dda6a6ff719718069ac94084098ce"}, - {file = "msgpack-1.0.8-cp311-cp311-win32.whl", hash = "sha256:26ee97a8261e6e35885c2ecd2fd4a6d38252246f94a2aec23665a4e66d066305"}, - {file = "msgpack-1.0.8-cp311-cp311-win_amd64.whl", hash = "sha256:eadb9f826c138e6cf3c49d6f8de88225a3c0ab181a9b4ba792e006e5292d150e"}, - {file = "msgpack-1.0.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:114be227f5213ef8b215c22dde19532f5da9652e56e8ce969bf0a26d7c419fee"}, - {file = "msgpack-1.0.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d661dc4785affa9d0edfdd1e59ec056a58b3dbb9f196fa43587f3ddac654ac7b"}, - {file = "msgpack-1.0.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d56fd9f1f1cdc8227d7b7918f55091349741904d9520c65f0139a9755952c9e8"}, - {file = "msgpack-1.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0726c282d188e204281ebd8de31724b7d749adebc086873a59efb8cf7ae27df3"}, - {file = "msgpack-1.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8db8e423192303ed77cff4dce3a4b88dbfaf43979d280181558af5e2c3c71afc"}, - {file = "msgpack-1.0.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99881222f4a8c2f641f25703963a5cefb076adffd959e0558dc9f803a52d6a58"}, - {file = "msgpack-1.0.8-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b5505774ea2a73a86ea176e8a9a4a7c8bf5d521050f0f6f8426afe798689243f"}, - {file = "msgpack-1.0.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ef254a06bcea461e65ff0373d8a0dd1ed3aa004af48839f002a0c994a6f72d04"}, - {file = "msgpack-1.0.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e1dd7839443592d00e96db831eddb4111a2a81a46b028f0facd60a09ebbdd543"}, - {file = "msgpack-1.0.8-cp312-cp312-win32.whl", hash = "sha256:64d0fcd436c5683fdd7c907eeae5e2cbb5eb872fafbc03a43609d7941840995c"}, - {file = "msgpack-1.0.8-cp312-cp312-win_amd64.whl", hash = "sha256:74398a4cf19de42e1498368c36eed45d9528f5fd0155241e82c4082b7e16cffd"}, - {file = "msgpack-1.0.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f51bab98d52739c50c56658cc303f190785f9a2cd97b823357e7aeae54c8f68a"}, - {file = "msgpack-1.0.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:73ee792784d48aa338bba28063e19a27e8d989344f34aad14ea6e1b9bd83f596"}, - {file = "msgpack-1.0.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f9904e24646570539a8950400602d66d2b2c492b9010ea7e965025cb71d0c86d"}, - {file = "msgpack-1.0.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e75753aeda0ddc4c28dce4c32ba2f6ec30b1b02f6c0b14e547841ba5b24f753f"}, - {file = "msgpack-1.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5dbf059fb4b7c240c873c1245ee112505be27497e90f7c6591261c7d3c3a8228"}, - {file = "msgpack-1.0.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4916727e31c28be8beaf11cf117d6f6f188dcc36daae4e851fee88646f5b6b18"}, - {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7938111ed1358f536daf311be244f34df7bf3cdedb3ed883787aca97778b28d8"}, - {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:493c5c5e44b06d6c9268ce21b302c9ca055c1fd3484c25ba41d34476c76ee746"}, - {file = "msgpack-1.0.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fbb160554e319f7b22ecf530a80a3ff496d38e8e07ae763b9e82fadfe96f273"}, - {file = "msgpack-1.0.8-cp39-cp39-win32.whl", hash = "sha256:f9af38a89b6a5c04b7d18c492c8ccf2aee7048aff1ce8437c4683bb5a1df893d"}, - {file = "msgpack-1.0.8-cp39-cp39-win_amd64.whl", hash = "sha256:ed59dd52075f8fc91da6053b12e8c89e37aa043f8986efd89e61fae69dc1b011"}, - {file = "msgpack-1.0.8.tar.gz", hash = "sha256:95c02b0e27e706e48d0e5426d1710ca78e0f0628d6e89d5b5a5b91a5f12274f3"}, -] - [[package]] name = "multidict" version = "6.0.5" @@ -959,7 +725,7 @@ name = "numpy" version = "2.0.0" requires_python = ">=3.9" summary = "Fundamental package for array computing in Python" -groups = ["default", "dask-distibuted"] +groups = ["default"] files = [ {file = "numpy-2.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:04494f6ec467ccb5369d1808570ae55f6ed9b5809d7f035059000a37b8d7e86f"}, {file = "numpy-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2635dbd200c2d6faf2ef9a0d04f0ecc6b13b3cad54f7c67c61155138835515d2"}, @@ -1003,7 +769,7 @@ name = "packaging" version = "24.1" requires_python = ">=3.8" summary = "Core utilities for Python packages" -groups = ["default", "dask-distibuted", "dev"] +groups = ["default", "dev"] files = [ {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, @@ -1014,7 +780,7 @@ name = "pandas" version = "2.2.2" requires_python = ">=3.9" summary = "Powerful data structures for data analysis, time series, and statistics" -groups = ["default", "dask-distibuted"] +groups = ["default"] dependencies = [ "numpy>=1.22.4; python_version < \"3.11\"", "numpy>=1.23.2; python_version == \"3.11\"", @@ -1054,6 +820,7 @@ version = "0.8.4" requires_python = ">=3.6" summary = "A Python Parser" groups = ["dev"] +marker = "python_version > \"3.6\"" files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, @@ -1064,7 +831,7 @@ name = "partd" version = "1.4.2" requires_python = ">=3.9" summary = "Appendable key-value storage" -groups = ["default", "dask-distibuted"] +groups = ["default"] dependencies = [ "locket", "toolz", @@ -1079,7 +846,7 @@ name = "pexpect" version = "4.9.0" summary = "Pexpect allows easy control of interactive console applications." groups = ["dev"] -marker = "sys_platform != \"win32\"" +marker = "sys_platform != \"win32\" and python_version > \"3.6\"" dependencies = [ "ptyprocess>=0.5", ] @@ -1088,85 +855,6 @@ files = [ {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, ] -[[package]] -name = "pillow" -version = "10.4.0" -requires_python = ">=3.8" -summary = "Python Imaging Library (Fork)" -groups = ["dask-distibuted"] -files = [ - {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, - {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, - {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, - {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, - {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, - {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, - {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, - {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, - {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, - {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, - {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, - {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, - {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, - {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, - {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, - {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, - {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, - {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, - {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, - {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, - {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, - {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, - {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, - {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, - {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, - {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, - {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, - {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, - {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, - {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, - {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, - {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, - {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, - {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, - {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, - {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, -] - [[package]] name = "platformdirs" version = "4.2.2" @@ -1213,6 +901,7 @@ version = "3.0.47" requires_python = ">=3.7.0" summary = "Library for building powerful interactive command lines in Python" groups = ["dev"] +marker = "python_version > \"3.6\"" dependencies = [ "wcwidth", ] @@ -1226,7 +915,7 @@ name = "psutil" version = "6.0.0" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" summary = "Cross-platform lib for process and system monitoring in Python." -groups = ["dask-distibuted"] +groups = ["default"] files = [ {file = "psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0"}, {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0"}, @@ -1243,7 +932,7 @@ name = "ptyprocess" version = "0.7.0" summary = "Run a subprocess in a pseudo terminal" groups = ["dev"] -marker = "sys_platform != \"win32\"" +marker = "sys_platform != \"win32\" and python_version > \"3.6\"" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -1254,6 +943,7 @@ name = "pure-eval" version = "0.2.2" summary = "Safely evaluate AST nodes without side effects" groups = ["dev"] +marker = "python_version > \"3.6\"" files = [ {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"}, {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"}, @@ -1294,7 +984,7 @@ name = "python-dateutil" version = "2.9.0.post0" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" summary = "Extensions to the standard Python datetime module" -groups = ["default", "dask-distibuted"] +groups = ["default"] dependencies = [ "six>=1.5", ] @@ -1307,7 +997,7 @@ files = [ name = "pytz" version = "2024.1" summary = "World timezone definitions, modern and historical" -groups = ["default", "dask-distibuted"] +groups = ["default"] files = [ {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, @@ -1318,7 +1008,7 @@ name = "pyyaml" version = "6.0.1" requires_python = ">=3.6" summary = "YAML parser and emitter for Python" -groups = ["default", "dask-distibuted", "dev"] +groups = ["default", "dev"] files = [ {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, @@ -1395,27 +1085,18 @@ name = "six" version = "1.16.0" requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" summary = "Python 2 and 3 compatibility utilities" -groups = ["default", "dask-distibuted", "dev"] +groups = ["default", "dev"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -[[package]] -name = "sortedcontainers" -version = "2.4.0" -summary = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" -groups = ["dask-distibuted"] -files = [ - {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, - {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, -] - [[package]] name = "stack-data" version = "0.6.3" summary = "Extract data from python stack frames and tracebacks for informative displays" groups = ["dev"] +marker = "python_version > \"3.6\"" dependencies = [ "asttokens>=2.1.0", "executing>=1.2.0", @@ -1426,17 +1107,6 @@ files = [ {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, ] -[[package]] -name = "tblib" -version = "3.0.0" -requires_python = ">=3.8" -summary = "Traceback serialization library." -groups = ["dask-distibuted"] -files = [ - {file = "tblib-3.0.0-py3-none-any.whl", hash = "sha256:80a6c77e59b55e83911e1e607c649836a69c103963c5f28a46cbeef44acf8129"}, - {file = "tblib-3.0.0.tar.gz", hash = "sha256:93622790a0a29e04f0346458face1e144dc4d32f493714c6c3dff82a4adb77e6"}, -] - [[package]] name = "tomli" version = "2.0.1" @@ -1454,38 +1124,19 @@ name = "toolz" version = "0.12.1" requires_python = ">=3.7" summary = "List processing tools and functional utilities" -groups = ["default", "dask-distibuted"] +groups = ["default"] files = [ {file = "toolz-0.12.1-py3-none-any.whl", hash = "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85"}, {file = "toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d"}, ] -[[package]] -name = "tornado" -version = "6.4.1" -requires_python = ">=3.8" -summary = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -groups = ["dask-distibuted"] -files = [ - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, - {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, - {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, - {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, -] - [[package]] name = "traitlets" version = "5.14.3" requires_python = ">=3.8" summary = "Traitlets Python configuration system" groups = ["dev"] +marker = "python_version > \"3.6\"" files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -1508,7 +1159,7 @@ name = "tzdata" version = "2024.1" requires_python = ">=2" summary = "Provider of IANA time zone data" -groups = ["default", "dask-distibuted"] +groups = ["default"] files = [ {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, @@ -1519,7 +1170,7 @@ name = "urllib3" version = "2.2.2" requires_python = ">=3.8" summary = "HTTP library with thread-safe connection pooling, file post, and more." -groups = ["default", "dask-distibuted"] +groups = ["default"] files = [ {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, @@ -1547,6 +1198,7 @@ name = "wcwidth" version = "0.2.13" summary = "Measures the displayed width of unicode strings in a terminal" groups = ["dev"] +marker = "python_version > \"3.6\"" dependencies = [ "backports-functools-lru-cache>=1.2.1; python_version < \"3.2\"", ] @@ -1583,17 +1235,6 @@ files = [ {file = "xarray-2024.6.0.tar.gz", hash = "sha256:0b91e0bc4dc0296947947640fe31ec6e867ce258d2f7cbc10bedf4a6d68340c7"}, ] -[[package]] -name = "xyzservices" -version = "2024.6.0" -requires_python = ">=3.8" -summary = "Source of XYZ tiles providers" -groups = ["dask-distibuted"] -files = [ - {file = "xyzservices-2024.6.0-py3-none-any.whl", hash = "sha256:fecb2508f0f2b71c819aecf5df2c03cef001c56a4b49302e640f3b34710d25e4"}, - {file = "xyzservices-2024.6.0.tar.gz", hash = "sha256:58c1bdab4257d2551b9ef91cd48571f77b7c4d2bc45bf5e3c05ac97b3a4d7282"}, -] - [[package]] name = "yarl" version = "1.9.4" @@ -1672,23 +1313,12 @@ files = [ {file = "zarr-2.18.2.tar.gz", hash = "sha256:9bb393b8a0a38fb121dbb913b047d75db28de9890f6d644a217a73cf4ae74f47"}, ] -[[package]] -name = "zict" -version = "3.0.0" -requires_python = ">=3.8" -summary = "Mutable mapping tools" -groups = ["dask-distibuted"] -files = [ - {file = "zict-3.0.0-py2.py3-none-any.whl", hash = "sha256:5796e36bd0e0cc8cf0fbc1ace6a68912611c1dbd74750a3f3026b9b9d6a327ae"}, - {file = "zict-3.0.0.tar.gz", hash = "sha256:e321e263b6a97aafc0790c3cfb3c04656b7066e6738c37fffcca95d803c9fba5"}, -] - [[package]] name = "zipp" version = "3.19.2" requires_python = ">=3.8" summary = "Backport of pathlib-compatible object wrapper for zip files" -groups = ["default", "dask-distibuted"] +groups = ["default"] marker = "python_version < \"3.12\"" files = [ {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, diff --git a/tests/config_examples/v0.2.0/example.danra.yaml b/tests/config_examples/v0.2.0/example.danra.yaml new file mode 100644 index 0000000..73aa0df --- /dev/null +++ b/tests/config_examples/v0.2.0/example.danra.yaml @@ -0,0 +1,88 @@ +schema_version: v0.2.0 +dataset_version: v0.1.0 + +output: + variables: + static: [grid_index, static_feature] + state: [time, grid_index, state_feature] + forcing: [time, grid_index, forcing_feature] + coord_ranges: + time: + start: 1990-09-03T00:00 + end: 1990-09-09T00:00 + step: PT3H + chunking: + time: 1 + splitting: + dim: time + splits: + train: + start: 1990-09-03T00:00 + end: 1990-09-06T00:00 + compute_statistics: + ops: [mean, std, diff_mean, diff_std] + dims: [grid_index, time] + val: + start: 1990-09-06T00:00 + end: 1990-09-07T00:00 + test: + start: 1990-09-07T00:00 + end: 1990-09-09T00:00 + +inputs: + danra_height_levels: + path: https://mllam-test-data.s3.eu-north-1.amazonaws.com/height_levels.zarr + dims: [time, x, y, altitude] + variables: + u: + altitude: + values: [100,] + units: m + v: + altitude: + values: [100, ] + units: m + dim_mapping: + time: + method: rename + dim: time + state_feature: + method: stack_variables_by_var_name + dims: [altitude] + name_format: f"{var_name}{altitude}m" + grid_index: + method: stack + dims: [x, y] + target_output_variable: state + + danra_surface: + path: https://mllam-test-data.s3.eu-north-1.amazonaws.com/single_levels.zarr + dims: [time, x, y] + variables: + # use surface incoming shortwave radiation as forcing + - swavr0m + dim_mapping: + time: + method: rename + dim: time + grid_index: + method: stack + dims: [x, y] + forcing_feature: + method: stack_variables_by_var_name + name_format: f"{var_name}" + target_output_variable: forcing + + danra_lsm: + path: https://mllam-test-data.s3.eu-north-1.amazonaws.com/lsm.zarr + dims: [x, y] + variables: + - lsm + dim_mapping: + grid_index: + method: stack + dims: [x, y] + static_feature: + method: stack_variables_by_var_name + name_format: f"{var_name}" + target_output_variable: static diff --git a/tests/config_examples/v0.5.0/example.danra.yaml b/tests/config_examples/v0.5.0/example.danra.yaml new file mode 100644 index 0000000..3edf126 --- /dev/null +++ b/tests/config_examples/v0.5.0/example.danra.yaml @@ -0,0 +1,99 @@ +schema_version: v0.5.0 +dataset_version: v0.1.0 + +output: + variables: + static: [grid_index, static_feature] + state: [time, grid_index, state_feature] + forcing: [time, grid_index, forcing_feature] + coord_ranges: + time: + start: 1990-09-03T00:00 + end: 1990-09-09T00:00 + step: PT3H + chunking: + time: 1 + splitting: + dim: time + splits: + train: + start: 1990-09-03T00:00 + end: 1990-09-06T00:00 + compute_statistics: + ops: [mean, std, diff_mean, diff_std] + dims: [grid_index, time] + val: + start: 1990-09-06T00:00 + end: 1990-09-07T00:00 + test: + start: 1990-09-07T00:00 + end: 1990-09-09T00:00 + +inputs: + danra_height_levels: + path: https://mllam-test-data.s3.eu-north-1.amazonaws.com/height_levels.zarr + dims: [time, x, y, altitude] + variables: + u: + altitude: + values: [100,] + units: m + v: + altitude: + values: [100, ] + units: m + dim_mapping: + time: + method: rename + dim: time + state_feature: + method: stack_variables_by_var_name + dims: [altitude] + name_format: "{var_name}{altitude}m" + grid_index: + method: stack + dims: [x, y] + target_output_variable: state + + danra_surface: + path: https://mllam-test-data.s3.eu-north-1.amazonaws.com/single_levels.zarr + dims: [time, x, y] + variables: + # use surface incoming shortwave radiation as forcing + - swavr0m + dim_mapping: + time: + method: rename + dim: time + grid_index: + method: stack + dims: [x, y] + forcing_feature: + method: stack_variables_by_var_name + name_format: "{var_name}" + target_output_variable: forcing + + danra_lsm: + path: https://mllam-test-data.s3.eu-north-1.amazonaws.com/lsm.zarr + dims: [x, y] + variables: + - lsm + dim_mapping: + grid_index: + method: stack + dims: [x, y] + static_feature: + method: stack_variables_by_var_name + name_format: "{var_name}" + target_output_variable: static + +extra: + projection: + class_name: LambertConformal + kwargs: + central_longitude: 25.0 + central_latitude: 56.7 + standard_parallels: [56.7, 56.7] + globe: + semimajor_axis: 6367470.0 + semiminor_axis: 6367470.0 diff --git a/tests/test_from_config.py b/tests/test_from_config.py index 45c4233..ce37beb 100644 --- a/tests/test_from_config.py +++ b/tests/test_from_config.py @@ -1,3 +1,4 @@ +import shutil import tempfile from pathlib import Path @@ -331,3 +332,34 @@ def test_optional_extra_section(extra_content): yaml.dump(config_dict, f) mdp.create_dataset_zarr(fp_config=fp_config) + + +CONFIG_REVISION_EXAMPLES_PATH = Path(__file__).parent / "config_examples" + + +def find_config_revision_examples(): + """ + Build a dictionary of examples for each revision of the config schema + so that we can check that the examples are valid and up-to-date + """ + examples = {} + for fp in CONFIG_REVISION_EXAMPLES_PATH.rglob("*.yaml"): + revision = fp.parent.name + examples[revision] = fp + + return examples.values() + + +@pytest.mark.parametrize("fp_example", find_config_revision_examples()) +def test_config_revision_examples(fp_example): + """ + Ensure that all the examples (which may be using different config schema + versions)in the `config_examples` directory are valid + """ + tmpdir = tempfile.TemporaryDirectory() + + # copy example to tempdir + fp_config_copy = Path(tmpdir.name) / fp_example.name + shutil.copy(fp_example, fp_config_copy) + + mdp.create_dataset_zarr(fp_config=fp_config_copy) From dd80c998e30bbc3043c9844c41ac86908caa976c Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Wed, 20 Nov 2024 10:49:42 +0100 Subject: [PATCH 07/13] update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a623b20..744cb2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased -[All changes](https://github.com/mllam/mllam-data-prep/compare/v0.3.0...v0.4.0) +[All changes](https://github.com/mllam/mllam-data-prep/compare/v0.4.0...HEAD) ### Added From d1ff60ae32adb204d79bedc60ce3b1a6be47ffa8 Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Wed, 20 Nov 2024 10:50:51 +0100 Subject: [PATCH 08/13] update changelog --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 744cb2f..c09e536 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,7 +40,7 @@ interface and addresses bugs around optional dependencies for ## [v0.3.0](https://github.com/mllam/mllam-data-prep/releases/tag/v0.3.0) -[All changes](https://github.com/mllam/mllam-data-prep/compare/v0.2.0...v0.3.0) +[All changes](https://github.com/mllam/mllam-data-prep/compare/v0.3.0...v0.2.0) ### Added @@ -53,7 +53,7 @@ interface and addresses bugs around optional dependencies for ## [v0.2.0](https://github.com/mllam/mllam-data-prep/releases/tags/v0.2.0) -[All changes](https://github.com/mllam/mllam-data-prep/compare/v0.1.0...v0.2.0) +[All changes](https://github.com/mllam/mllam-data-prep/compare/v0.2.0...v0.1.0) ### Added From b235ef687514414475685427271508e9819ac957 Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Wed, 20 Nov 2024 10:56:54 +0100 Subject: [PATCH 09/13] update example in README and cleanup --- README.md | 3 + example.danra.yaml | 11 +++ .../config_examples/v0.5.0/example.danra.yaml | 99 ------------------- tests/old_config_schema_examples/README.md | 3 + .../v0.2.0/example.danra.yaml | 0 tests/test_from_config.py | 2 +- 6 files changed, 18 insertions(+), 100 deletions(-) delete mode 100644 tests/config_examples/v0.5.0/example.danra.yaml create mode 100644 tests/old_config_schema_examples/README.md rename tests/{config_examples => old_config_schema_examples}/v0.2.0/example.danra.yaml (100%) diff --git a/README.md b/README.md index bb7e5c1..5f5fcdf 100644 --- a/README.md +++ b/README.md @@ -208,6 +208,9 @@ extra: central_longitude: 25.0 central_latitude: 56.7 standard_parallels: [56.7, 56.7] + globe: + semimajor_axis: 6367470.0 + semiminor_axis: 6367470.0 ``` Apart from identifiers to keep track of the configuration file format version and the dataset version (for you to keep track of changes that you make to the dataset), the configuration file is divided into two main sections: diff --git a/example.danra.yaml b/example.danra.yaml index 73aa0df..5d663f2 100644 --- a/example.danra.yaml +++ b/example.danra.yaml @@ -86,3 +86,14 @@ inputs: method: stack_variables_by_var_name name_format: f"{var_name}" target_output_variable: static + +extra: + projection: + class_name: LambertConformal + kwargs: + central_longitude: 25.0 + central_latitude: 56.7 + standard_parallels: [56.7, 56.7] + globe: + semimajor_axis: 6367470.0 + semiminor_axis: 6367470.0 diff --git a/tests/config_examples/v0.5.0/example.danra.yaml b/tests/config_examples/v0.5.0/example.danra.yaml deleted file mode 100644 index 3edf126..0000000 --- a/tests/config_examples/v0.5.0/example.danra.yaml +++ /dev/null @@ -1,99 +0,0 @@ -schema_version: v0.5.0 -dataset_version: v0.1.0 - -output: - variables: - static: [grid_index, static_feature] - state: [time, grid_index, state_feature] - forcing: [time, grid_index, forcing_feature] - coord_ranges: - time: - start: 1990-09-03T00:00 - end: 1990-09-09T00:00 - step: PT3H - chunking: - time: 1 - splitting: - dim: time - splits: - train: - start: 1990-09-03T00:00 - end: 1990-09-06T00:00 - compute_statistics: - ops: [mean, std, diff_mean, diff_std] - dims: [grid_index, time] - val: - start: 1990-09-06T00:00 - end: 1990-09-07T00:00 - test: - start: 1990-09-07T00:00 - end: 1990-09-09T00:00 - -inputs: - danra_height_levels: - path: https://mllam-test-data.s3.eu-north-1.amazonaws.com/height_levels.zarr - dims: [time, x, y, altitude] - variables: - u: - altitude: - values: [100,] - units: m - v: - altitude: - values: [100, ] - units: m - dim_mapping: - time: - method: rename - dim: time - state_feature: - method: stack_variables_by_var_name - dims: [altitude] - name_format: "{var_name}{altitude}m" - grid_index: - method: stack - dims: [x, y] - target_output_variable: state - - danra_surface: - path: https://mllam-test-data.s3.eu-north-1.amazonaws.com/single_levels.zarr - dims: [time, x, y] - variables: - # use surface incoming shortwave radiation as forcing - - swavr0m - dim_mapping: - time: - method: rename - dim: time - grid_index: - method: stack - dims: [x, y] - forcing_feature: - method: stack_variables_by_var_name - name_format: "{var_name}" - target_output_variable: forcing - - danra_lsm: - path: https://mllam-test-data.s3.eu-north-1.amazonaws.com/lsm.zarr - dims: [x, y] - variables: - - lsm - dim_mapping: - grid_index: - method: stack - dims: [x, y] - static_feature: - method: stack_variables_by_var_name - name_format: "{var_name}" - target_output_variable: static - -extra: - projection: - class_name: LambertConformal - kwargs: - central_longitude: 25.0 - central_latitude: 56.7 - standard_parallels: [56.7, 56.7] - globe: - semimajor_axis: 6367470.0 - semiminor_axis: 6367470.0 diff --git a/tests/old_config_schema_examples/README.md b/tests/old_config_schema_examples/README.md new file mode 100644 index 0000000..3e1bed6 --- /dev/null +++ b/tests/old_config_schema_examples/README.md @@ -0,0 +1,3 @@ +This directoy should contain config examples with schema versions which are still supported by the current version. + +The folder structure is expected to be `{schema_version}/{config_name}.yaml`. diff --git a/tests/config_examples/v0.2.0/example.danra.yaml b/tests/old_config_schema_examples/v0.2.0/example.danra.yaml similarity index 100% rename from tests/config_examples/v0.2.0/example.danra.yaml rename to tests/old_config_schema_examples/v0.2.0/example.danra.yaml diff --git a/tests/test_from_config.py b/tests/test_from_config.py index ce37beb..06cf640 100644 --- a/tests/test_from_config.py +++ b/tests/test_from_config.py @@ -334,7 +334,7 @@ def test_optional_extra_section(extra_content): mdp.create_dataset_zarr(fp_config=fp_config) -CONFIG_REVISION_EXAMPLES_PATH = Path(__file__).parent / "config_examples" +CONFIG_REVISION_EXAMPLES_PATH = Path(__file__).parent / "old_config_schema_examples" def find_config_revision_examples(): From 018ad59c3f76abb515ae042803fe80e7c405912e Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Wed, 20 Nov 2024 13:26:42 +0100 Subject: [PATCH 10/13] update schema version in example config --- example.danra.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example.danra.yaml b/example.danra.yaml index 5d663f2..66b7f6c 100644 --- a/example.danra.yaml +++ b/example.danra.yaml @@ -1,4 +1,4 @@ -schema_version: v0.2.0 +schema_version: v0.5.0 dataset_version: v0.1.0 output: From bc6e2e6d033865e356081784697e2789cdd06949 Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Wed, 20 Nov 2024 13:27:50 +0100 Subject: [PATCH 11/13] remove re-introduction of f-string typo in config --- example.danra.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/example.danra.yaml b/example.danra.yaml index 66b7f6c..3edf126 100644 --- a/example.danra.yaml +++ b/example.danra.yaml @@ -49,7 +49,7 @@ inputs: state_feature: method: stack_variables_by_var_name dims: [altitude] - name_format: f"{var_name}{altitude}m" + name_format: "{var_name}{altitude}m" grid_index: method: stack dims: [x, y] @@ -70,7 +70,7 @@ inputs: dims: [x, y] forcing_feature: method: stack_variables_by_var_name - name_format: f"{var_name}" + name_format: "{var_name}" target_output_variable: forcing danra_lsm: @@ -84,7 +84,7 @@ inputs: dims: [x, y] static_feature: method: stack_variables_by_var_name - name_format: f"{var_name}" + name_format: "{var_name}" target_output_variable: static extra: From 9c1a4c40e2a1440c5ba4fa8aab7bb16320e5b64f Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Wed, 20 Nov 2024 13:29:04 +0100 Subject: [PATCH 12/13] revert change to config schema version in test --- tests/test_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_config.py b/tests/test_config.py index 7a6ae9b..5459db6 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -4,7 +4,7 @@ import mllam_data_prep as mdp INVALID_EXTRA_FIELDS_CONFIG_YAML = """ -schema_version: {schema_version} +schema_version: v0.1.0 dataset_version: v0.1.0 output: From 7867b6c59be72c57f75e0163309623c2d86f1fd6 Mon Sep 17 00:00:00 2001 From: Leif Denby Date: Wed, 20 Nov 2024 18:27:29 +0100 Subject: [PATCH 13/13] move check for schema version --- mllam_data_prep/create_dataset.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/mllam_data_prep/create_dataset.py b/mllam_data_prep/create_dataset.py index 739cf70..73996cf 100644 --- a/mllam_data_prep/create_dataset.py +++ b/mllam_data_prep/create_dataset.py @@ -106,6 +106,18 @@ def create_dataset(config: Config): The dataset created from the input datasets with a variable for each output as defined in the config file. """ + if not config.schema_version in SUPPORTED_CONFIG_VERSIONS: + raise ValueError( + f"Unsupported schema version {config.schema_version}. Only schema versions " + f" {', '.join(SUPPORTED_CONFIG_VERSIONS)} are supported by mllam-data-prep " + f"v{__version__}." + ) + if config.schema_version == "v0.2.0" and config.extra is not None: + raise ValueError( + "Config schema version v0.2.0 does not support the `extra` field. Please " + "update the schema version used in your config to v0.5.0." + ) + output_config = config.output output_coord_ranges = output_config.coord_ranges @@ -245,13 +257,6 @@ def create_dataset_zarr(fp_config, fp_zarr: str = None): """ config = Config.from_yaml_file(file=fp_config) - if not config.schema_version in SUPPORTED_CONFIG_VERSIONS: - raise ValueError( - f"Unsupported schema version {config.schema_version}. Only schema versions " - f" {', '.join(SUPPORTED_CONFIG_VERSIONS)} are supported by mllam-data-prep " - f"v{__version__}." - ) - ds = create_dataset(config=config) logger.info("Writing dataset to zarr")