From 347dd06526f4b1387bed4a32b4ee0e34892f45bf Mon Sep 17 00:00:00 2001 From: imreddyTeja Date: Wed, 26 Feb 2025 15:21:18 -0800 Subject: [PATCH 1/2] Add thin NCDataset function Add ` thin_NCDataset!(ds_out, ds_in, thinning_factor=6, dims...)` which thins NCDataset files along the provided dimensions. --- ClimaArtifactsHelper.jl/Project.toml | 1 + .../src/ClimaArtifactsHelper.jl | 51 ++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/ClimaArtifactsHelper.jl/Project.toml b/ClimaArtifactsHelper.jl/Project.toml index a61da11..538d4c0 100644 --- a/ClimaArtifactsHelper.jl/Project.toml +++ b/ClimaArtifactsHelper.jl/Project.toml @@ -6,6 +6,7 @@ version = "0.0.1" [deps] ArtifactUtils = "8b73e784-e7d8-4ea5-973d-377fed4e3bce" Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +NCDatasets = "85f8d34a-cbdd-5861-8df4-14fed0d494ab" Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" SHA = "ea8e919c-243c-51af-8825-aaa63cd721ce" diff --git a/ClimaArtifactsHelper.jl/src/ClimaArtifactsHelper.jl b/ClimaArtifactsHelper.jl/src/ClimaArtifactsHelper.jl index bd11d6c..62de4c4 100644 --- a/ClimaArtifactsHelper.jl/src/ClimaArtifactsHelper.jl +++ b/ClimaArtifactsHelper.jl/src/ClimaArtifactsHelper.jl @@ -3,13 +3,13 @@ module ClimaArtifactsHelper using ArtifactUtils using REPL.TerminalMenus using Pkg.Artifacts +using NCDatasets import SHA: sha1 import Downloads: download export create_artifact_guided, - create_artifact_guided_one_file, - download_rate_callback + create_artifact_guided_one_file, download_rate_callback, thin_NCDataset! const MB = 1024 * 1024 const GB = 1024 * MB @@ -261,4 +261,51 @@ function create_artifact_guided_one_file( create_artifact_guided(output_dir; artifact_name, append) end +""" + thin_NCDataset!(ds_out::NCDataset, ds_in::NCDataset, thinning_factor=6, dims...) + +Fills `ds_out` with a thinned version of `ds_in` by a factor of `thinning_factor` in the dimensions `dims`. +If no dimensions are provided, all dimensions are thinned. +""" +function thin_NCDataset!(ds_out::NCDataset, ds_in::NCDataset, thinning_factor = 6, dims...) + # check that requested regrid dimensions are in the dataset. + all(in.(dims, Ref(keys(ds_in.dim)))) || error("Not all of $dims are in the dataset") + @show typeof(ds_out.attrib) + @show ds_in.attrib + old_history = get(ds_out.attrib, "history", "") + ds_out.attrib["history"] = + old_history * "; Thinned by a factor of $thinning_factor in dimensions $dims" + for (dim_name, dim_length) in ds_in.dim + if dim_name in dims + defDim(ds_out, dim_name, Int(ceil(ds_in.dim[dim_name] // thinning_factor))) + else + defDim(ds_out, dim_name, ds_in.dim[dim_name]) + end + end + for (varname, var) in ds_in + var_dims = dimnames(var) + input_indices = map(var_dims) do dim_name + dim_name in dims ? range(1, ds_in.dim[dim_name]; step = thinning_factor) : Colon() + end + defVar(ds_out, varname, var[input_indices...], dimnames(var), attrib = var.attrib) + end +end + +""" + thin_NCDataset!(ouput_path, input_path, thinning_factor=6, dims...) + +Create and thin a new NetCDF file at `ouput_path` from the file at `input_path` by a factor of +`thinning_factor` in the dimensions `dims`. This method also copies the global attributes. +""" +function thin_NCDataset!(ouput_path, input_path, thinning_factor = 6, dims...) + ds_in = NCDataset(input_path) + ds_out = NCDataset(ouput_path, "c"; attrib = copy(ds_in.attrib)) + thin_NCDataset!(ds_out, ds_in, thinning_factor, dims...) + close(ds_out) + close(ds_in) +end + +thin_NCDataset!(ds_out::NCDataset, ds_in::NCDataset, thinning_factor = 6) = + thin_NCDataset!(ds_out, ds_in, thinning_factor, keys(ds_in.dim)...) + end From c85252c92757d5bff65f19af520f2fc6a10d4d4c Mon Sep 17 00:00:00 2001 From: imreddyTeja Date: Fri, 28 Feb 2025 12:14:59 -0800 Subject: [PATCH 2/2] Update ClimaArtifactsHelper deps in Manifest --- aerosol_concentrations/Manifest.toml | 2 +- bedrock_depth/Manifest.toml | 2 +- bonan_richards_eqn/Manifest.toml | 2 +- clm_data/Manifest.toml | 2 +- co2_dataset/Manifest.toml | 2 +- era5_cloud/Manifest.toml | 2 +- era5_lai_covers/Manifest.toml | 2 +- era5_monthly_averages_2008/Manifest.toml | 2 +- era5_monthly_averages_pressure_levels_1979_2024/Manifest.toml | 2 +- era5_monthly_averages_single_level_1979_2024/Manifest.toml | 2 +- forty_yrs_era5_land_forcing_data/Manifest.toml | 2 +- historical_sst_sic/Manifest.toml | 2 +- landsea_mask/Manifest.toml | 2 +- lehmann2008_evaporation/Manifest.toml | 2 +- merra2_AOD/Manifest.toml | 2 +- merra2_aerosols/Manifest.toml | 2 +- ozone_concentrations/Manifest.toml | 2 +- precipitation_obs/Manifest.toml | 2 +- radiation_obs/Manifest.toml | 2 +- soil_ic_2008_50m/Manifest.toml | 2 +- surface_temperatures/Manifest.toml | 2 +- sw_albedo/Manifest.toml | 2 +- topo_drag/Manifest.toml | 2 +- water_conservation_test/Manifest.toml | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/aerosol_concentrations/Manifest.toml b/aerosol_concentrations/Manifest.toml index 47b91be..3bfa911 100644 --- a/aerosol_concentrations/Manifest.toml +++ b/aerosol_concentrations/Manifest.toml @@ -70,7 +70,7 @@ weakdeps = ["SparseArrays"] ChainRulesCoreSparseArraysExt = "SparseArrays" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/bedrock_depth/Manifest.toml b/bedrock_depth/Manifest.toml index e1e06b0..ff9de51 100644 --- a/bedrock_depth/Manifest.toml +++ b/bedrock_depth/Manifest.toml @@ -46,7 +46,7 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.3" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/bonan_richards_eqn/Manifest.toml b/bonan_richards_eqn/Manifest.toml index 2fd64c1..e1f92e7 100644 --- a/bonan_richards_eqn/Manifest.toml +++ b/bonan_richards_eqn/Manifest.toml @@ -28,7 +28,7 @@ uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" version = "0.1.9" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/clm_data/Manifest.toml b/clm_data/Manifest.toml index 31ec1fd..d115642 100644 --- a/clm_data/Manifest.toml +++ b/clm_data/Manifest.toml @@ -28,7 +28,7 @@ uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" version = "0.1.9" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/co2_dataset/Manifest.toml b/co2_dataset/Manifest.toml index fdcbd20..389d7e4 100644 --- a/co2_dataset/Manifest.toml +++ b/co2_dataset/Manifest.toml @@ -28,7 +28,7 @@ uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" version = "0.1.9" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/era5_cloud/Manifest.toml b/era5_cloud/Manifest.toml index 6cc4f5e..7b5f9ae 100644 --- a/era5_cloud/Manifest.toml +++ b/era5_cloud/Manifest.toml @@ -44,7 +44,7 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.3" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/era5_lai_covers/Manifest.toml b/era5_lai_covers/Manifest.toml index 9f1d84c..545ecec 100644 --- a/era5_lai_covers/Manifest.toml +++ b/era5_lai_covers/Manifest.toml @@ -193,7 +193,7 @@ weakdeps = ["GeoMakie", "Makie"] ClimaAnalysisMakieExt = "Makie" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/era5_monthly_averages_2008/Manifest.toml b/era5_monthly_averages_2008/Manifest.toml index ec561fe..53e6db4 100644 --- a/era5_monthly_averages_2008/Manifest.toml +++ b/era5_monthly_averages_2008/Manifest.toml @@ -46,7 +46,7 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.3" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/era5_monthly_averages_pressure_levels_1979_2024/Manifest.toml b/era5_monthly_averages_pressure_levels_1979_2024/Manifest.toml index 0143d5f..80aeaf1 100644 --- a/era5_monthly_averages_pressure_levels_1979_2024/Manifest.toml +++ b/era5_monthly_averages_pressure_levels_1979_2024/Manifest.toml @@ -46,7 +46,7 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.3" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/era5_monthly_averages_single_level_1979_2024/Manifest.toml b/era5_monthly_averages_single_level_1979_2024/Manifest.toml index 0143d5f..80aeaf1 100644 --- a/era5_monthly_averages_single_level_1979_2024/Manifest.toml +++ b/era5_monthly_averages_single_level_1979_2024/Manifest.toml @@ -46,7 +46,7 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.3" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/forty_yrs_era5_land_forcing_data/Manifest.toml b/forty_yrs_era5_land_forcing_data/Manifest.toml index 4d1cea6..c1ce458 100644 --- a/forty_yrs_era5_land_forcing_data/Manifest.toml +++ b/forty_yrs_era5_land_forcing_data/Manifest.toml @@ -46,7 +46,7 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.3" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/historical_sst_sic/Manifest.toml b/historical_sst_sic/Manifest.toml index 5180289..ace8eb2 100644 --- a/historical_sst_sic/Manifest.toml +++ b/historical_sst_sic/Manifest.toml @@ -44,7 +44,7 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.3" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/landsea_mask/Manifest.toml b/landsea_mask/Manifest.toml index 9b014a0..e35ddc1 100644 --- a/landsea_mask/Manifest.toml +++ b/landsea_mask/Manifest.toml @@ -100,7 +100,7 @@ uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" version = "0.2.6" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/lehmann2008_evaporation/Manifest.toml b/lehmann2008_evaporation/Manifest.toml index 72459a7..adfec8b 100644 --- a/lehmann2008_evaporation/Manifest.toml +++ b/lehmann2008_evaporation/Manifest.toml @@ -26,7 +26,7 @@ uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" version = "0.1.9" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/merra2_AOD/Manifest.toml b/merra2_AOD/Manifest.toml index fd9d08a..0c341ce 100644 --- a/merra2_AOD/Manifest.toml +++ b/merra2_AOD/Manifest.toml @@ -44,7 +44,7 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.4" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/merra2_aerosols/Manifest.toml b/merra2_aerosols/Manifest.toml index 7492e99..4cdc1b5 100644 --- a/merra2_aerosols/Manifest.toml +++ b/merra2_aerosols/Manifest.toml @@ -72,7 +72,7 @@ weakdeps = ["SparseArrays"] ChainRulesCoreSparseArraysExt = "SparseArrays" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/ozone_concentrations/Manifest.toml b/ozone_concentrations/Manifest.toml index 02a10f5..6d8e39a 100644 --- a/ozone_concentrations/Manifest.toml +++ b/ozone_concentrations/Manifest.toml @@ -44,7 +44,7 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.3" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/precipitation_obs/Manifest.toml b/precipitation_obs/Manifest.toml index dda0a6a..d19fa34 100644 --- a/precipitation_obs/Manifest.toml +++ b/precipitation_obs/Manifest.toml @@ -26,7 +26,7 @@ uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" version = "0.1.8" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/radiation_obs/Manifest.toml b/radiation_obs/Manifest.toml index 0465edd..348db07 100644 --- a/radiation_obs/Manifest.toml +++ b/radiation_obs/Manifest.toml @@ -26,7 +26,7 @@ uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" version = "0.1.9" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/soil_ic_2008_50m/Manifest.toml b/soil_ic_2008_50m/Manifest.toml index a387553..059fc06 100644 --- a/soil_ic_2008_50m/Manifest.toml +++ b/soil_ic_2008_50m/Manifest.toml @@ -46,7 +46,7 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.4" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/surface_temperatures/Manifest.toml b/surface_temperatures/Manifest.toml index 8a9c72e..9b34d31 100644 --- a/surface_temperatures/Manifest.toml +++ b/surface_temperatures/Manifest.toml @@ -44,7 +44,7 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.3" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/sw_albedo/Manifest.toml b/sw_albedo/Manifest.toml index f145e43..43da0dd 100644 --- a/sw_albedo/Manifest.toml +++ b/sw_albedo/Manifest.toml @@ -44,7 +44,7 @@ uuid = "179af706-886a-5703-950a-314cd64e0468" version = "0.1.3" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/topo_drag/Manifest.toml b/topo_drag/Manifest.toml index 00b13d3..bc9ca28 100644 --- a/topo_drag/Manifest.toml +++ b/topo_drag/Manifest.toml @@ -26,7 +26,7 @@ uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" version = "0.1.9" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1" diff --git a/water_conservation_test/Manifest.toml b/water_conservation_test/Manifest.toml index 5ac0b9c..f37ca1b 100644 --- a/water_conservation_test/Manifest.toml +++ b/water_conservation_test/Manifest.toml @@ -28,7 +28,7 @@ uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" version = "0.1.9" [[deps.ClimaArtifactsHelper]] -deps = ["ArtifactUtils", "Downloads", "Pkg", "REPL", "SHA"] +deps = ["ArtifactUtils", "Downloads", "NCDatasets", "Pkg", "REPL", "SHA"] path = "../ClimaArtifactsHelper.jl" uuid = "6ffa2572-8378-4377-82eb-ea11db28b255" version = "0.0.1"