flood-adapt 0.3.3__py3-none-any.whl → 0.3.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
flood_adapt/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # has to be here at the start to avoid circular imports
2
- __version__ = "0.3.3"
2
+ __version__ = "0.3.5"
3
3
 
4
4
  from flood_adapt import adapter, dbs_classes, objects
5
5
  from flood_adapt.config.config import Settings
@@ -176,9 +176,7 @@ class SfincsAdapter(IHazardAdapter):
176
176
  # No need to check postprocessing for risk scenarios
177
177
  return all(self.sfincs_completed(sim_path) for sim_path in sim_paths)
178
178
  else:
179
- return self.sfincs_completed(
180
- self._get_simulation_path(scenario)
181
- ) and self.run_completed(scenario)
179
+ return self.sfincs_completed(self._get_simulation_path(scenario))
182
180
 
183
181
  def execute(self, path: Path, strict: bool = True) -> bool:
184
182
  """
@@ -66,7 +66,7 @@ class Settings(BaseSettings):
66
66
 
67
67
  Usage
68
68
  -----
69
- from flood_adapt.config import Settings
69
+ from flood_adapt import Settings
70
70
 
71
71
  One of the following:
72
72
 
@@ -77,7 +77,7 @@ class Settings(BaseSettings):
77
77
  `settings = Settings.read(toml_path: Path)`
78
78
 
79
79
  3) Load settings from keyword arguments, overwriting any environment variables:
80
- `settings = Settings(DATABASE_ROOT="path/to/database", DATABASE_NAME="database_name", SYSTEM_FOLDER="path/to/system_folder")`
80
+ `settings = Settings(DATABASE_ROOT="path/to/database", DATABASE_NAME="database_name")`
81
81
 
82
82
  Attributes
83
83
  ----------
@@ -85,19 +85,21 @@ class Settings(BaseSettings):
85
85
  The name of the database.
86
86
  database_root : Path
87
87
  The root directory of the database.
88
- system_folder : Path
89
- The root directory of the system folder containing the kernels.
90
88
  delete_crashed_runs : bool
91
89
  Whether to delete crashed/corrupted runs immediately after they are detected.
90
+ sfincs_path : Path
91
+ The path to the SFINCS binary.
92
+ fiat_path : Path
93
+ The path to the FIAT binary.
94
+ validate_allowed_forcings : bool
95
+ Whether to validate the forcing types and sources against the allowed forcings in the event model.
96
+ validate_bin_paths : bool
97
+ Whether to validate the existence of the paths to the SFINCS and FIAT binaries.
92
98
 
93
99
  Properties
94
100
  ----------
95
101
  database_path : Path
96
102
  The full path to the database.
97
- sfincs_path : Path
98
- The path to the SFINCS binary.
99
- fiat_path : Path
100
- The path to the FIAT binary.
101
103
 
102
104
  Raises
103
105
  ------
@@ -121,16 +123,22 @@ class Settings(BaseSettings):
121
123
 
122
124
  delete_crashed_runs: bool = Field(
123
125
  alias="DELETE_CRASHED_RUNS", # environment variable: DELETE_CRASHED_RUNS
124
- default=True,
126
+ default=False,
125
127
  description="Whether to delete the output of crashed/corrupted runs. Be careful when setting this to False, as it may lead to a broken database that cannot be read in anymore.",
126
128
  exclude=True,
127
129
  )
128
130
  validate_allowed_forcings: bool = Field(
129
131
  alias="VALIDATE_ALLOWED_FORCINGS", # environment variable: VALIDATE_ALLOWED_FORCINGS
130
- default=True,
132
+ default=False,
131
133
  description="Whether to validate the forcing types and sources against the allowed forcings in the event model.",
132
134
  exclude=True,
133
135
  )
136
+ validate_bin_paths: bool = Field(
137
+ alias="VALIDATE_BINARIES", # environment variable: VALIDATE_BINARIES
138
+ default=False,
139
+ description="Whether to validate the existence of the paths to the SFINCS and FIAT binaries.",
140
+ exclude=True,
141
+ )
134
142
 
135
143
  sfincs_path: Path = Field(
136
144
  default=_default_exe_path("sfincs"),
@@ -154,8 +162,9 @@ class Settings(BaseSettings):
154
162
  @model_validator(mode="after")
155
163
  def validate_settings(self):
156
164
  self._validate_database_path()
157
- self._validate_fiat_path()
158
- self._validate_sfincs_path()
165
+ if self.validate_bin_paths:
166
+ self._validate_fiat_path()
167
+ self._validate_sfincs_path()
159
168
  self._update_environment_variables()
160
169
  return self
161
170
 
@@ -164,8 +173,22 @@ class Settings(BaseSettings):
164
173
  environ["DATABASE_NAME"] = self.database_name
165
174
  environ["SFINCS_BIN_PATH"] = str(self.sfincs_path)
166
175
  environ["FIAT_BIN_PATH"] = str(self.fiat_path)
167
- environ["DELETE_CRASHED_RUNS"] = str(self.delete_crashed_runs)
168
- environ["VALIDATE_ALLOWED_FORCINGS"] = str(self.validate_allowed_forcings)
176
+ environ["SFINCS_PATH"] = str(self.sfincs_path)
177
+ environ["FIAT_PATH"] = str(self.fiat_path)
178
+
179
+ if self.delete_crashed_runs:
180
+ environ["DELETE_CRASHED_RUNS"] = str(self.delete_crashed_runs)
181
+ else:
182
+ environ.pop("DELETE_CRASHED_RUNS", None)
183
+ if self.validate_allowed_forcings:
184
+ environ["VALIDATE_ALLOWED_FORCINGS"] = str(self.validate_allowed_forcings)
185
+ else:
186
+ environ.pop("VALIDATE_ALLOWED_FORCINGS", None)
187
+ if self.validate_bin_paths:
188
+ environ["VALIDATE_BINARIES"] = str(self.validate_bin_paths)
189
+ else:
190
+ environ.pop("VALIDATE_BINARIES", None)
191
+
169
192
  return self
170
193
 
171
194
  def _validate_database_path(self):
@@ -59,27 +59,6 @@ class DbsBenefit(DbsTemplate[Benefit]):
59
59
  if output_path.exists():
60
60
  shutil.rmtree(output_path, ignore_errors=True)
61
61
 
62
- def edit(self, benefit: Benefit):
63
- """Edits an already existing benefit in the database.
64
-
65
- Parameters
66
- ----------
67
- benefit : Benefit
68
- benefit to be edited in the database
69
-
70
- Raises
71
- ------
72
- ValueError
73
- Raise error if name is already in use.
74
- """
75
- # Check if it is possible to edit the benefit.
76
- super().edit(benefit)
77
-
78
- # Delete output if edited
79
- output_path = self.output_path / benefit.name
80
- if output_path.exists():
81
- shutil.rmtree(output_path, ignore_errors=True)
82
-
83
62
  def get_runner(self, name: str) -> BenefitRunner:
84
63
  return BenefitRunner(self._database, self.get(name))
85
64
 
@@ -58,28 +58,6 @@ class DbsScenario(DbsTemplate[Scenario]):
58
58
  if (self.output_path / name).exists():
59
59
  shutil.rmtree(self.output_path / name, ignore_errors=False)
60
60
 
61
- def edit(self, scenario: Scenario):
62
- """Edits an already existing scenario in the database.
63
-
64
- Parameters
65
- ----------
66
- scenario : Scenario
67
- scenario to be edited in the database
68
-
69
- Raises
70
- ------
71
- ValueError
72
- Raise error if name is already in use.
73
- """
74
- # Check if it is possible to edit the scenario. This then also covers checking whether the
75
- # scenario is already used in a higher level object. If this is the case, it cannot be edited.
76
- super().edit(scenario)
77
-
78
- # Delete output if edited
79
- output_path = self.output_path / scenario.name
80
- if output_path.exists():
81
- shutil.rmtree(output_path, ignore_errors=True)
82
-
83
61
  def check_higher_level_usage(self, name: str) -> list[str]:
84
62
  """Check if a scenario is used in a benefit.
85
63
 
@@ -133,30 +133,6 @@ class DbsTemplate(AbstractDatabaseElement[T_OBJECTMODEL]):
133
133
  self.input_path / object_model.name / f"{object_model.name}.toml",
134
134
  )
135
135
 
136
- def edit(self, object_model: T_OBJECTMODEL):
137
- """Edit an already existing object in the database.
138
-
139
- Parameters
140
- ----------
141
- object_model : Object
142
- object to be edited in the database
143
-
144
- Raises
145
- ------
146
- ValueError
147
- Raise error if name is already in use.
148
- """
149
- # Check if the object exists
150
- if object_model.name not in self.summarize_objects()["name"]:
151
- raise ValueError(
152
- f"{self.display_name}: '{object_model.name}' does not exist. You cannot edit an {self.display_name.lower()} that does not exist."
153
- )
154
-
155
- # Check if it is possible to delete the object by saving with overwrite. This then
156
- # also covers checking whether the object is a standard object, is already used in
157
- # a higher level object. If any of these are the case, it cannot be deleted.
158
- self.save(object_model, overwrite=True)
159
-
160
136
  def delete(self, name: str, toml_only: bool = False):
161
137
  """Delete an already existing object in the database.
162
138
 
@@ -85,22 +85,6 @@ class AbstractDatabaseElement(ABC, Generic[T_OBJECT_MODEL]):
85
85
  """
86
86
  pass
87
87
 
88
- @abstractmethod
89
- def edit(self, object_model: T_OBJECT_MODEL):
90
- """Edits an already existing object in the database.
91
-
92
- Parameters
93
- ----------
94
- object : IObject
95
- object to be edited in the database
96
-
97
- Raises
98
- ------
99
- ValueError
100
- Raise error if name is already in use.
101
- """
102
- pass
103
-
104
88
  @abstractmethod
105
89
  def delete(self, name: str, toml_only: bool = False):
106
90
  """Delete an already existing object in the database.
@@ -129,6 +129,8 @@ class FloodAdapt:
129
129
  ----------
130
130
  measure : Measure
131
131
  The measure object to save.
132
+ overwrite : bool, optional
133
+ Whether to overwrite an existing measure with the same name (default is False).
132
134
 
133
135
  Raises
134
136
  ------
@@ -137,21 +139,6 @@ class FloodAdapt:
137
139
  """
138
140
  self.database.measures.save(measure, overwrite=overwrite)
139
141
 
140
- def edit_measure(self, measure: Measure) -> None:
141
- """Edit a measure object in the database.
142
-
143
- Parameters
144
- ----------
145
- measure : Measure
146
- The measure object to edit.
147
-
148
- Raises
149
- ------
150
- ValueError
151
- If the measure object does not exist.
152
- """
153
- self.database.measures.edit(measure)
154
-
155
142
  def delete_measure(self, name: str) -> None:
156
143
  """Delete an measure from the database.
157
144
 
@@ -253,7 +240,7 @@ class FloodAdapt:
253
240
  """
254
241
  return Strategy(**attrs)
255
242
 
256
- def save_strategy(self, strategy: Strategy) -> None:
243
+ def save_strategy(self, strategy: Strategy, overwrite: bool = False) -> None:
257
244
  """
258
245
  Save a strategy object to the database.
259
246
 
@@ -261,6 +248,8 @@ class FloodAdapt:
261
248
  ----------
262
249
  strategy : Strategy
263
250
  The strategy object to save.
251
+ overwrite : bool, optional
252
+ Whether to overwrite an existing strategy with the same name (default is False).
264
253
 
265
254
  Raises
266
255
  ------
@@ -268,7 +257,7 @@ class FloodAdapt:
268
257
  If the strategy object is not valid.
269
258
  If the strategy object already exists.
270
259
  """
271
- self.database.strategies.save(strategy)
260
+ self.database.strategies.save(strategy, overwrite=overwrite)
272
261
 
273
262
  def delete_strategy(self, name: str) -> None:
274
263
  """
@@ -368,36 +357,22 @@ class FloodAdapt:
368
357
  """
369
358
  return EventSet(**attrs, sub_events=sub_events)
370
359
 
371
- def save_event(self, event: Event) -> None:
360
+ def save_event(self, event: Event, overwrite: bool = False) -> None:
372
361
  """Save an event object to the database.
373
362
 
374
363
  Parameters
375
364
  ----------
376
365
  event : Event
377
366
  The event object to save.
367
+ overwrite : bool, optional
368
+ Whether to overwrite an existing event with the same name (default is False).
378
369
 
379
370
  Raises
380
371
  ------
381
372
  ValueError
382
373
  If the event object is not valid.
383
374
  """
384
- self.database.events.save(event)
385
-
386
- def edit_event(self, event: Event) -> None:
387
- """Edit an event object in the database.
388
-
389
- Parameters
390
- ----------
391
- event : Event
392
- The event object to edit.
393
-
394
- Raises
395
- ------
396
- ValueError
397
- If the event object does not exist.
398
- If the event is used in a scenario.
399
- """
400
- self.database.events.edit(event)
375
+ self.database.events.save(event, overwrite=overwrite)
401
376
 
402
377
  def delete_event(self, name: str) -> None:
403
378
  """Delete an event from the database.
@@ -519,35 +494,22 @@ class FloodAdapt:
519
494
  """
520
495
  return Projection(**attrs)
521
496
 
522
- def save_projection(self, projection: Projection) -> None:
497
+ def save_projection(self, projection: Projection, overwrite: bool = False) -> None:
523
498
  """Save a projection object to the database.
524
499
 
525
500
  Parameters
526
501
  ----------
527
502
  projection : Projection
528
503
  The projection object to save.
504
+ overwrite : bool, optional
505
+ Whether to overwrite an existing projection with the same name (default is False).
529
506
 
530
507
  Raises
531
508
  ------
532
509
  ValueError
533
510
  If the projection object is not valid.
534
511
  """
535
- self.database.projections.save(projection)
536
-
537
- def edit_projection(self, projection: Projection) -> None:
538
- """Edit a projection object in the database.
539
-
540
- Parameters
541
- ----------
542
- projection : Projection
543
- The projection object to edit.
544
-
545
- Raises
546
- ------
547
- ValueError
548
- If the projection object does not exist.
549
- """
550
- self.database.projections.edit(projection)
512
+ self.database.projections.save(projection, overwrite=overwrite)
551
513
 
552
514
  def delete_projection(self, name: str) -> None:
553
515
  """Delete a projection from the database.
@@ -676,13 +638,17 @@ class FloodAdapt:
676
638
  """
677
639
  return Scenario(**attrs)
678
640
 
679
- def save_scenario(self, scenario: Scenario) -> tuple[bool, str]:
641
+ def save_scenario(
642
+ self, scenario: Scenario, overwrite: bool = False
643
+ ) -> tuple[bool, str]:
680
644
  """Save the scenario to the database.
681
645
 
682
646
  Parameters
683
647
  ----------
684
648
  scenario : Scenario
685
649
  The scenario to save.
650
+ overwrite : bool, optional
651
+ Whether to overwrite an existing scenario with the same name (default is False).
686
652
 
687
653
  Returns
688
654
  -------
@@ -692,26 +658,11 @@ class FloodAdapt:
692
658
  The error message if the scenario was not saved successfully.
693
659
  """
694
660
  try:
695
- self.database.scenarios.save(scenario)
661
+ self.database.scenarios.save(scenario, overwrite=overwrite)
696
662
  return True, ""
697
663
  except Exception as e:
698
664
  return False, str(e)
699
665
 
700
- def edit_scenario(self, scenario: Scenario) -> None:
701
- """Edit a scenario object in the database.
702
-
703
- Parameters
704
- ----------
705
- scenario : Scenario
706
- The scenario object to edit.
707
-
708
- Raises
709
- ------
710
- ValueError
711
- If the scenario object does not exist.
712
- """
713
- self.database.scenarios.edit(scenario)
714
-
715
666
  def delete_scenario(self, name: str) -> None:
716
667
  """Delete a scenario from the database.
717
668
 
@@ -1137,35 +1088,22 @@ class FloodAdapt:
1137
1088
  """
1138
1089
  return Benefit(**attrs)
1139
1090
 
1140
- def save_benefit(self, benefit: Benefit) -> None:
1091
+ def save_benefit(self, benefit: Benefit, overwrite: bool = False) -> None:
1141
1092
  """Save a benefit object to the database.
1142
1093
 
1143
1094
  Parameters
1144
1095
  ----------
1145
1096
  benefit : Benefit
1146
1097
  The benefit object to save.
1098
+ overwrite : bool, optional
1099
+ Whether to overwrite an existing benefit with the same name (default is False).
1147
1100
 
1148
1101
  Raises
1149
1102
  ------
1150
1103
  ValueError
1151
1104
  If the benefit object is not valid.
1152
1105
  """
1153
- self.database.benefits.save(benefit)
1154
-
1155
- def edit_benefit(self, benefit: Benefit) -> None:
1156
- """Edit a benefit object in the database.
1157
-
1158
- Parameters
1159
- ----------
1160
- benefit : Benefit
1161
- The benefit object to edit.
1162
-
1163
- Raises
1164
- ------
1165
- ValueError
1166
- If the benefit object does not exist.
1167
- """
1168
- self.database.benefits.edit(benefit)
1106
+ self.database.benefits.save(benefit, overwrite=overwrite)
1169
1107
 
1170
1108
  def delete_benefit(self, name: str) -> None:
1171
1109
  """Delete a benefit object from the database.
@@ -0,0 +1,92 @@
1
+ from flood_adapt.objects.forcing.discharge import (
2
+ DischargeConstant,
3
+ DischargeCSV,
4
+ DischargeSynthetic,
5
+ )
6
+ from flood_adapt.objects.forcing.forcing import ForcingSource, ForcingType, IForcing
7
+ from flood_adapt.objects.forcing.meteo_handler import MeteoHandler
8
+ from flood_adapt.objects.forcing.rainfall import (
9
+ RainfallConstant,
10
+ RainfallCSV,
11
+ RainfallMeteo,
12
+ RainfallNetCDF,
13
+ RainfallSynthetic,
14
+ RainfallTrack,
15
+ )
16
+ from flood_adapt.objects.forcing.tide_gauge import TideGauge, TideGaugeSource
17
+ from flood_adapt.objects.forcing.time_frame import TimeFrame
18
+ from flood_adapt.objects.forcing.timeseries import (
19
+ BlockTimeseries,
20
+ CSVTimeseries,
21
+ GaussianTimeseries,
22
+ ScsTimeseries,
23
+ Scstype,
24
+ ShapeType,
25
+ SyntheticTimeseries,
26
+ TimeseriesFactory,
27
+ TriangleTimeseries,
28
+ )
29
+ from flood_adapt.objects.forcing.waterlevels import (
30
+ SurgeModel,
31
+ TideModel,
32
+ WaterlevelCSV,
33
+ WaterlevelGauged,
34
+ WaterlevelModel,
35
+ WaterlevelSynthetic,
36
+ )
37
+ from flood_adapt.objects.forcing.wind import (
38
+ WindConstant,
39
+ WindCSV,
40
+ WindMeteo,
41
+ WindNetCDF,
42
+ WindSynthetic,
43
+ WindTrack,
44
+ )
45
+
46
+ __all__ = [
47
+ # Forcing
48
+ "IForcing",
49
+ "ForcingSource",
50
+ "ForcingType",
51
+ # Timeseries
52
+ "ShapeType",
53
+ "Scstype",
54
+ "CSVTimeseries",
55
+ "TimeseriesFactory",
56
+ "SyntheticTimeseries",
57
+ "BlockTimeseries",
58
+ "ScsTimeseries",
59
+ "GaussianTimeseries",
60
+ "TriangleTimeseries",
61
+ # TimeFrame
62
+ "TimeFrame",
63
+ # Discharge
64
+ "DischargeConstant",
65
+ "DischargeCSV",
66
+ "DischargeSynthetic",
67
+ # Waterlevels
68
+ "WaterlevelCSV",
69
+ "WaterlevelGauged",
70
+ "WaterlevelModel",
71
+ "WaterlevelSynthetic",
72
+ "TideModel",
73
+ "SurgeModel",
74
+ "TideGauge",
75
+ "TideGaugeSource",
76
+ # Rainfall
77
+ "RainfallConstant",
78
+ "RainfallCSV",
79
+ "RainfallSynthetic",
80
+ "RainfallMeteo",
81
+ "RainfallNetCDF",
82
+ "RainfallTrack",
83
+ # Wind
84
+ "WindConstant",
85
+ "WindCSV",
86
+ "WindSynthetic",
87
+ "WindMeteo",
88
+ "WindNetCDF",
89
+ "WindTrack",
90
+ # Other
91
+ "MeteoHandler",
92
+ ]
@@ -46,7 +46,7 @@ class ScenarioRunner:
46
46
  self._database.static.get_overland_sfincs_model(),
47
47
  ]
48
48
  for hazard in hazard_models:
49
- if not hazard.has_run(self._scenario):
49
+ if not hazard.run_completed(self._scenario):
50
50
  hazard.run(self._scenario)
51
51
  else:
52
52
  self.logger.info(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: flood-adapt
3
- Version: 0.3.3
3
+ Version: 0.3.5
4
4
  Summary: A software package support system which can be used to assess the benefits and costs of flood resilience measures
5
5
  Author-email: Gundula Winter <Gundula.Winter@deltares.nl>, Panos Athanasiou <Panos.Athanasiou@deltares.nl>, Frederique de Groen <Frederique.deGroen@deltares.nl>, Tim de Wilde <Tim.deWilde@deltares.nl>, Julian Hofer <Julian.Hofer@deltares.nl>, Daley Adrichem <Daley.Adrichem@deltares.nl>, Luuk Blom <Luuk.Blom@deltares.nl>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -727,6 +727,7 @@ Requires-Dist: sphinx<9.0,>=8.0; extra == "docs"
727
727
  Requires-Dist: sphinx-rtd-theme<4.0,>=3.0; extra == "docs"
728
728
  Requires-Dist: regex<2025.0,>=2024.11; extra == "docs"
729
729
  Requires-Dist: minio<8,>=7.2.15; extra == "docs"
730
+ Requires-Dist: python-dotenv<2.0,>=1.0; extra == "docs"
730
731
  Provides-Extra: all
731
732
  Requires-Dist: flood-adapt[build,dev,docs]; extra == "all"
732
733
 
@@ -1,9 +1,9 @@
1
- flood_adapt/__init__.py,sha256=CEGWB7Dsg_oi4vI6NQINFxr7wdQYUIx_KOWVfRjFP_U,596
1
+ flood_adapt/__init__.py,sha256=9v-B0hgeyWzNkjnCYPjau7NfQ6flGZHp-kTpY5uFEpU,596
2
2
  flood_adapt/database_builder.py,sha256=eq_LAqaGpV-KJkLNBVvXjyjFRDQaBFA5ubANiuVsZWU,420
3
- flood_adapt/flood_adapt.py,sha256=tBfkEnxFT7510rtTbZnPoQDVkMPcqcSRioa2fRML1Co,36032
3
+ flood_adapt/flood_adapt.py,sha256=X71dxpCHC9PhwyrR0UmxVP-zFPpoZN3gh0O3UzlucCc,35137
4
4
  flood_adapt/adapter/__init__.py,sha256=C6XBZK8x4MHe3beeKa9rPbXn0-gBHPEPnTKn14C-5gI,249
5
5
  flood_adapt/adapter/fiat_adapter.py,sha256=2SYHzmW6z5L66S1qD4AlEeCW9deLfLi_h9K7HPFCYRY,57105
6
- flood_adapt/adapter/sfincs_adapter.py,sha256=fHew5cmY4Ni87tIyJbqWKUsVyfTYoGVbxLtoPRy_vU0,73119
6
+ flood_adapt/adapter/sfincs_adapter.py,sha256=9KwfVLqGWFG5A-uVc5GULf7OTSgccSV88ZwLdKrRqOM,73056
7
7
  flood_adapt/adapter/sfincs_offshore.py,sha256=BBdeCYKKDweFla05aE1Q9Fr-eXY1VzxQEfE_74lR7B8,7600
8
8
  flood_adapt/adapter/interface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  flood_adapt/adapter/interface/hazard_adapter.py,sha256=1yZUNTrT3dtrD_PTJfczVkjNVB9JcQr64Y4xYRtR-sc,2758
@@ -11,7 +11,7 @@ flood_adapt/adapter/interface/impact_adapter.py,sha256=5KMUzUqT18pfjzVS2QT2PSnDJ
11
11
  flood_adapt/adapter/interface/model_adapter.py,sha256=i39fEsZ2gm1Q4PQ1vRX6CZ-1RwVSXVyPmppj1w6TfAE,2693
12
12
  flood_adapt/adapter/interface/offshore.py,sha256=hSsXKkU6rWPZH9wtquWkYsEvFSPuuU1l1MFZZ32qD20,462
13
13
  flood_adapt/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- flood_adapt/config/config.py,sha256=oWm-BLuG2E-vAfPatSfAVYCdb8N_wcMQ0oRwVfCEqPE,9287
14
+ flood_adapt/config/config.py,sha256=fFCPCSgalQEEZXRP2Ua4oHvMdR8MzBPs5Ohs1mBIQsM,10231
15
15
  flood_adapt/config/fiat.py,sha256=dgqmjuA7a6A9_QeQlObzxCG7u_h3Vcb94QOxPGygaLo,6036
16
16
  flood_adapt/config/gui.py,sha256=Ji6X9j1gC18evsHfeW3MwtWpOsod9fW0XMfd-GSx3DY,10157
17
17
  flood_adapt/config/sfincs.py,sha256=WHPPPtT9vxStsulElB_I8Hbtk3WNJs3Zqy-bfcy68fA,11279
@@ -76,16 +76,16 @@ flood_adapt/database_builder/templates/infometrics/US_NSI/without_SVI/infographi
76
76
  flood_adapt/database_builder/templates/output_layers/bin_colors.toml,sha256=OXlAdFfu3S99qrxFqn_Xu6ZIZMvk-0_LQhdsj5q_rZk,412
77
77
  flood_adapt/dbs_classes/__init__.py,sha256=_8DX6dK62U1RjRKz0zOgM0yR-kiBlBxz2dLkCWylmXc,710
78
78
  flood_adapt/dbs_classes/database.py,sha256=3OfwLxRI5Ufq01PCMSbNoJjW92tTH-xCyFEoa3DTDqw,24419
79
- flood_adapt/dbs_classes/dbs_benefit.py,sha256=Fzm0eCWOPFLorKkk86Qzt4Wq0ZGJTh1vwJ5I6vm-6zQ,3096
79
+ flood_adapt/dbs_classes/dbs_benefit.py,sha256=WgLXG37mrkIUq2cp8Y2ov2FYqxoGXHKe9h-7GnQd4Sw,2502
80
80
  flood_adapt/dbs_classes/dbs_event.py,sha256=lSTEQzmar5GhpZQ0060a-NodK-epCtSAjJmWHko-uok,2233
81
81
  flood_adapt/dbs_classes/dbs_measure.py,sha256=wfVo6hUHdgqffGxvvm5zdwZ5Jed6oCJGvFqdilYlEX0,3875
82
82
  flood_adapt/dbs_classes/dbs_projection.py,sha256=GXD8HcOcbH51sV5Eqh48NU1z1WNCxbQ9yCG-soDoim0,1658
83
- flood_adapt/dbs_classes/dbs_scenario.py,sha256=aXyS-swmEqtuJjstfgxgZfexn5-Gb2NEEeisPH3Pwxg,5414
83
+ flood_adapt/dbs_classes/dbs_scenario.py,sha256=NHjiRdV5dxYUtXR6FRGZ9c9Vng2-w-F1-Nn50lNbxXM,4665
84
84
  flood_adapt/dbs_classes/dbs_static.py,sha256=DuspOpQ6WLdaM8foizQ09aTG3YXAp9svrzi4RAq8Jto,9051
85
85
  flood_adapt/dbs_classes/dbs_strategy.py,sha256=4I9JiiHq3SsRV_S6l3SBOsiJEEerjRoK5v9aAX8sS9Q,5329
86
- flood_adapt/dbs_classes/dbs_template.py,sha256=7yGmpAiM9Tls-gBdA2rODyc-lob3US9bQsVXCOGbUvk,10891
86
+ flood_adapt/dbs_classes/dbs_template.py,sha256=EIe9UycVvcL45r8QVWHS7hijVeiZctmrch9QU2qT38Y,9938
87
87
  flood_adapt/dbs_classes/interface/database.py,sha256=StWp_f6iGyQosAI066CmZB6O55_UWmQ2JGJPUlw49j0,3338
88
- flood_adapt/dbs_classes/interface/element.py,sha256=3LJFb-WLVOogsMi-EpOMwzIp2p6Mra-ZKMNU-XSwTlk,3777
88
+ flood_adapt/dbs_classes/interface/element.py,sha256=Zwi2dNhWBdZT7LAJxlxG_YdR9tj_Hu1t_t_E0jrt9-I,3407
89
89
  flood_adapt/dbs_classes/interface/static.py,sha256=3kLaWabSWKe7h8-SiBTJlr09sO8Ykbk4NIE5mrMoCp0,1225
90
90
  flood_adapt/misc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
91
  flood_adapt/misc/database_user.py,sha256=FUCjJSDW4oF1kcmXJkhRbGcHj896OztWFfkB7-bufiM,530
@@ -103,7 +103,7 @@ flood_adapt/objects/events/events.py,sha256=JYBblzKngQmwKWtbTpvUUIYQKhrGiGcH5Utn
103
103
  flood_adapt/objects/events/historical.py,sha256=3yeotQ_McOhsDPWBgiY9tp4gVjIos-dtJOFPiTjygoo,1800
104
104
  flood_adapt/objects/events/hurricane.py,sha256=bJ3xOBQbuJsbxpQBgh6H-NtZvUtiJAFmPEK1H9qTxBQ,2229
105
105
  flood_adapt/objects/events/synthetic.py,sha256=LBDIvGfTPgBSAQ60OxaCOH_W2oT4OLulV6q03b_WBZM,1444
106
- flood_adapt/objects/forcing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
+ flood_adapt/objects/forcing/__init__.py,sha256=aRqbCRvVLNCZgbCG8o22G1a-CPMaWdRUceUOHWjvwEA,2049
107
107
  flood_adapt/objects/forcing/csv.py,sha256=PWXe8VuGNvGcnwAmnmLPhoQRdBD5Biyomh2OOjvTvzI,1959
108
108
  flood_adapt/objects/forcing/discharge.py,sha256=kTm2a5FB-nV1BJEQRxJ0iBqmz37_-LBinwQtM8b1y28,1991
109
109
  flood_adapt/objects/forcing/forcing.py,sha256=2ZxEI9EvVNULH7YR3XIsAjDPh2fWt1JEsYqXjnCEo9I,4363
@@ -131,9 +131,9 @@ flood_adapt/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
131
131
  flood_adapt/workflows/benefit_runner.py,sha256=hvCCJOzqe57kWJ1wQ-8dqBNP88sah0d1LPQYmy6M57c,19980
132
132
  flood_adapt/workflows/floodmap.py,sha256=6XatakhiZDkIi82VpRDb5dWtWAs-aSho8_iaCGph1_c,2932
133
133
  flood_adapt/workflows/impacts_integrator.py,sha256=Iq8namwu90SP_BTazUsDqROqOrJk7rGEyR6nA1Q7Vho,2330
134
- flood_adapt/workflows/scenario_runner.py,sha256=EY87fKjyWzwHaqV__xjQvdQDRxrmUwUyAHS68LnppO4,2908
135
- flood_adapt-0.3.3.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
136
- flood_adapt-0.3.3.dist-info/METADATA,sha256=ClMTaM9L_9u_nz2wITuAJj6sfPYuD18g9XhdGltHe5Y,51379
137
- flood_adapt-0.3.3.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
138
- flood_adapt-0.3.3.dist-info/top_level.txt,sha256=JvzMi6cTcQPEThCfpgMEeVny3ghI1urSH0CCgVIqSzw,12
139
- flood_adapt-0.3.3.dist-info/RECORD,,
134
+ flood_adapt/workflows/scenario_runner.py,sha256=mjiOr1_0oxJGXhwhPOstZo-pmCm1PBcKNz57bmw2htc,2914
135
+ flood_adapt-0.3.5.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
136
+ flood_adapt-0.3.5.dist-info/METADATA,sha256=z3buF6fmSdsnS9xpjOkbi_KSmu1ggoMUMZUmBDjYI4Q,51435
137
+ flood_adapt-0.3.5.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
138
+ flood_adapt-0.3.5.dist-info/top_level.txt,sha256=JvzMi6cTcQPEThCfpgMEeVny3ghI1urSH0CCgVIqSzw,12
139
+ flood_adapt-0.3.5.dist-info/RECORD,,