Skip to content

Commit d36a68d

Browse files
[pre-commit.ci] pre-commit autoupdate (#17)
* [pre-commit.ci] pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.15.4 → v0.15.9](astral-sh/ruff-pre-commit@v0.15.4...v0.15.9) - [github.com/snakemake/snakefmt: v0.11.4 → v1.0.0](snakemake/snakefmt@v0.11.4...v1.0.0) - [github.com/codespell-project/codespell: v2.4.1 → v2.4.2](codespell-project/codespell@v2.4.1...v2.4.2) * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent c90e38d commit d36a68d

File tree

7 files changed

+67
-67
lines changed

7 files changed

+67
-67
lines changed

.pre-commit-config.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,21 @@ repos:
2525

2626
# Python file formatting
2727
- repo: https://github.com/astral-sh/ruff-pre-commit
28-
rev: v0.15.4
28+
rev: v0.15.9
2929
hooks:
3030
- id: ruff
3131
args: [--fix, --exit-non-zero-on-fix]
3232
- id: ruff-format
3333

3434
# Snakemake file formatting
3535
- repo: https://github.com/snakemake/snakefmt
36-
rev: v0.11.4
36+
rev: v1.0.0
3737
hooks:
3838
- id: snakefmt
3939

4040
# Spelling
4141
- repo: https://github.com/codespell-project/codespell
42-
rev: v2.4.1
42+
rev: v2.4.2
4343
hooks:
4444
- id: codespell
4545
files: .*\.(py|smk|md)$|^Snakefile$

tests/integration/Snakefile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ configfile: workflow.source_path("./test_config.yaml")
77
# `config`: specifies the module configuration.
88
# `pathvars:` helps you re-wire where the module places files.
99
module module_hydropower:
10-
snakefile:
11-
"../../workflow/Snakefile"
12-
config:
13-
config["module_hydropower"]
1410
pathvars:
1511
# Redirect specific user resources (inputs)
1612
shapes="resources/inputs/{shapes}/shapes.parquet",
@@ -21,6 +17,10 @@ module module_hydropower:
2117
logs="resources/hydropower/logs",
2218
resources="resources/hydropower/resources",
2319
results="resources/hydropower/results",
20+
snakefile:
21+
"../../workflow/Snakefile"
22+
config:
23+
config["module_hydropower"]
2424

2525

2626
# rename all module rules with a prefix, to avoid naming conflicts.
@@ -33,12 +33,12 @@ SHAPES = ["MNE"]
3333

3434
# Request something from the module
3535
rule all:
36-
message:
37-
"Generate PU timeseries for a small country."
3836
default_target: True
3937
input:
4038
expand(
4139
"results/outputs/{shapes}/{plant_type}_pu.parquet",
4240
shapes=SHAPES,
4341
plant_type=PLANTS,
4442
),
43+
message:
44+
"Generate PU timeseries for a small country."

workflow/Snakefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@ validate_year_config()
4747

4848

4949
rule all:
50-
message:
51-
"ERROR: Invalid `rule all:` call"
5250
default_target: True
5351
output:
5452
"INVALID",
5553
log:
5654
stderr="<logs>/all.stderr",
5755
conda:
5856
"envs/shell.yaml"
57+
message:
58+
"ERROR: Invalid `rule all:` call"
5959
shell:
6060
'echo "This workflow must be called as a snakemake module." > {log.stderr}'

workflow/rules/automatic.smk

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,42 @@
22

33

44
rule download_eia:
5-
message:
6-
"Download the EIA International energy statistics in bulk."
7-
params:
8-
url=internal["resources"]["automatic"]["EIA"],
95
output:
106
zipfile="<resources>/automatic/eia/EIA-INTL.zip",
117
log:
128
"<logs>/download_eia.log",
139
localrule: True
1410
conda:
1511
"../envs/shell.yaml"
12+
params:
13+
url=internal["resources"]["automatic"]["EIA"],
14+
message:
15+
"Download the EIA International energy statistics in bulk."
1616
shell:
1717
r'curl -fsSLo {output.zipfile:q} "{params.url}"'
1818

1919

2020
rule download_basin:
21-
message:
22-
"Downloading HydroBASINS file for '{wildcards.continent}'."
23-
params:
24-
url=lambda wc: internal["resources"]["automatic"]["HydroBASINS"].format(
25-
continent=wc.continent
26-
),
2721
output:
2822
path="<resources>/automatic/hydrobasins/{continent}.zip",
23+
log:
24+
"<logs>/download_basin_{continent}.log",
2925
wildcard_constraints:
3026
continent="|".join(internal["continent_codes"]),
27+
localrule: True
3128
conda:
3229
"../envs/shell.yaml"
33-
log:
34-
"<logs>/download_basin_{continent}.log",
35-
localrule: True
30+
params:
31+
url=lambda wc: internal["resources"]["automatic"]["HydroBASINS"].format(
32+
continent=wc.continent
33+
),
34+
message:
35+
"Downloading HydroBASINS file for '{wildcards.continent}'."
3636
shell:
3737
r'curl -fsSLo {output.path:q} "{params.url}"'
3838

3939

4040
rule download_cutout:
41-
message:
42-
"Downloading runoff cutout from {params.start_year}-01-01 to {params.end_year}-12-31."
43-
params:
44-
era5_crs=internal["era5_crs"],
45-
start_year=config["years"]["start"],
46-
end_year=config["years"]["end"],
4741
input:
4842
shapes="<shapes>",
4943
output:
@@ -53,10 +47,16 @@ rule download_cutout:
5347
caption="../report/cutout.rst",
5448
category="Hydropower module",
5549
),
56-
conda:
57-
"../envs/hydropower.yaml"
5850
log:
5951
"<logs>/{shapes}/download_cutout.log",
6052
localrule: True
53+
conda:
54+
"../envs/hydropower.yaml"
55+
params:
56+
era5_crs=internal["era5_crs"],
57+
start_year=config["years"]["start"],
58+
end_year=config["years"]["end"],
59+
message:
60+
"Downloading runoff cutout from {params.start_year}-01-01 to {params.end_year}-12-31."
6161
script:
6262
"../scripts/download_cutout.py"

workflow/rules/basins.smk

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,29 @@
22

33

44
rule basins_extract_pfafstetter_level:
5-
message:
6-
"Unzipping HydroBASINS file for '{wildcards.continent}' at Pfafstetter level '{params.level}'."
7-
params:
8-
level=lambda wc: wc.level,
9-
continent=lambda wc: wc.continent,
105
input:
116
zip_file=rules.download_basin.output.path,
127
output:
138
parquet_file=temp(
149
"<resources>/automatic/hydrobasins/{continent}_{level}.parquet"
1510
),
11+
log:
12+
"<logs>/basins_extract_pfafstetter_level_{continent}_{level}.log",
1613
wildcard_constraints:
1714
continent="|".join(internal["continent_codes"]),
1815
level="|".join(internal["pfafstetter_level_codes"]),
1916
conda:
2017
"../envs/hydropower.yaml"
21-
log:
22-
"<logs>/basins_extract_pfafstetter_level_{continent}_{level}.log",
18+
params:
19+
level=lambda wc: wc.level,
20+
continent=lambda wc: wc.continent,
21+
message:
22+
"Unzipping HydroBASINS file for '{wildcards.continent}' at Pfafstetter level '{params.level}'."
2323
script:
2424
"../scripts/basins_extract_pfafstetter_level.py"
2525

2626

2727
rule basins_combine_continents:
28-
message:
29-
"Combine all HydroBASINS into a single dataset for Pfafstetter level '{wildcards.level}'."
3028
input:
3129
continent_files=expand(
3230
"<resources>/automatic/hydrobasins/{continent}_{{level}}.parquet",
@@ -39,9 +37,11 @@ rule basins_combine_continents:
3937
caption="../report/basins.rst",
4038
category="Hydropower module",
4139
),
42-
conda:
43-
"../envs/hydropower.yaml"
4440
log:
4541
"<logs>/basins_combine_continents_{level}.log",
42+
conda:
43+
"../envs/hydropower.yaml"
44+
message:
45+
"Combine all HydroBASINS into a single dataset for Pfafstetter level '{wildcards.level}'."
4646
script:
4747
"../scripts/basins_combine_continents.py"

workflow/rules/powerplants.smk

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,6 @@
22

33

44
rule powerplants_adjust_location:
5-
message:
6-
"Adjusting hydro powerplant location to the nearest shape and basin."
7-
params:
8-
crs=config["crs"],
9-
basin_adjustment=config["powerplants"]["basin_adjustment"],
105
input:
116
basins=f"<resources>/automatic/hydrobasins/global_{config["pfafstetter_level"]}.parquet",
127
powerplants="<powerplants>",
@@ -22,15 +17,16 @@ rule powerplants_adjust_location:
2217
"<logs>/{shapes}/powerplants_adjust_location.log",
2318
conda:
2419
"../envs/hydropower.yaml"
20+
params:
21+
crs=config["crs"],
22+
basin_adjustment=config["powerplants"]["basin_adjustment"],
23+
message:
24+
"Adjusting hydro powerplant location to the nearest shape and basin."
2525
script:
2626
"../scripts/powerplants_adjust_location.py"
2727

2828

2929
rule powerplants_get_inflow_m3:
30-
message:
31-
"Calculating hydro powerplant inflow in m3."
32-
params:
33-
smoothing_hours=config["smoothing_hours"],
3430
input:
3531
adjusted_powerplants=rules.powerplants_adjust_location.output.adjusted_powerplants,
3632
basins=f"<resources>/automatic/hydrobasins/global_{config["pfafstetter_level"]}.parquet",
@@ -42,16 +38,15 @@ rule powerplants_get_inflow_m3:
4238
"<logs>/{shapes}/powerplants_get_inflow_m3.log",
4339
conda:
4440
"../envs/hydropower.yaml"
41+
params:
42+
smoothing_hours=config["smoothing_hours"],
43+
message:
44+
"Calculating hydro powerplant inflow in m3."
4545
script:
4646
"../scripts/powerplants_get_inflow_m3.py"
4747

4848

4949
rule powerplants_get_inflow_mwh:
50-
message:
51-
"Calculating powerplant generation in MWh and applying corrections using historical data."
52-
params:
53-
pu_factor_range=internal["pu_factor_range"],
54-
technology_mapping=config["powerplants"]["technology_mapping"],
5550
input:
5651
inflow_m3=rules.powerplants_get_inflow_m3.output.inflow,
5752
adjusted_powerplants=rules.powerplants_adjust_location.output.adjusted_powerplants,
@@ -62,15 +57,16 @@ rule powerplants_get_inflow_mwh:
6257
"<logs>/{shapes}/powerplants_get_inflow_mwh.log",
6358
conda:
6459
"../envs/hydropower.yaml"
60+
params:
61+
pu_factor_range=internal["pu_factor_range"],
62+
technology_mapping=config["powerplants"]["technology_mapping"],
63+
message:
64+
"Calculating powerplant generation in MWh and applying corrections using historical data."
6565
script:
6666
"../scripts/powerplants_get_inflow_mwh.py"
6767

6868

6969
rule powerplants_get_pu_per_shape:
70-
message:
71-
"Calculating aggregated per-unit timeseries per shape for '{wildcards.plant_type}'."
72-
params:
73-
technology_mapping=config["powerplants"]["technology_mapping"],
7470
input:
7571
adjusted_powerplants=rules.powerplants_adjust_location.output.adjusted_powerplants,
7672
inflow_mwh="<disaggregated_inflow>",
@@ -81,11 +77,15 @@ rule powerplants_get_pu_per_shape:
8177
caption="../report/pu_per_shape.rst",
8278
category="Hydropower module",
8379
),
84-
wildcard_constraints:
85-
plant_type="|".join(["run_of_river", "reservoir"]),
8680
log:
8781
"<logs>/{shapes}/powerplants_get_pu_per_shape_{plant_type}.log",
82+
wildcard_constraints:
83+
plant_type="|".join(["run_of_river", "reservoir"]),
8884
conda:
8985
"../envs/hydropower.yaml"
86+
params:
87+
technology_mapping=config["powerplants"]["technology_mapping"],
88+
message:
89+
"Calculating aggregated per-unit timeseries per shape for '{wildcards.plant_type}'."
9090
script:
9191
"../scripts/powerplants_get_pu_per_shape.py"

workflow/rules/statistics.smk

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22

33

44
rule prepare_statistics:
5-
message:
6-
"Get EIA annual country hydropower generation statistics."
7-
params:
8-
years=config["years"],
95
input:
106
shapes="<shapes>",
117
eia_bulk=rules.download_eia.output.zipfile,
@@ -16,5 +12,9 @@ rule prepare_statistics:
1612
"<logs>/{shapes}/prepare_statistics.log",
1713
conda:
1814
"../envs/hydropower.yaml"
15+
params:
16+
years=config["years"],
17+
message:
18+
"Get EIA annual country hydropower generation statistics."
1919
script:
2020
"../scripts/prepare_statistics.py"

0 commit comments

Comments
 (0)