Skip to content

Commit

Permalink
✨ Export filtered map CSVs for federations
Browse files Browse the repository at this point in the history
  • Loading branch information
jh0ker committed May 27, 2024
1 parent 69516a6 commit 399987b
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 2 deletions.
38 changes: 37 additions & 1 deletion ddj_cloud/scrapers/talsperren/exporters/map.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
import datetime as dt
from collections.abc import Sequence

import pandas as pd
from dateutil.relativedelta import relativedelta
from slugify import slugify

from ddj_cloud.scrapers.talsperren.common import Exporter, FEDERATION_RENAMES
from ddj_cloud.scrapers.talsperren.federations.agger import AggerFederation
from ddj_cloud.scrapers.talsperren.federations.eifel_rur import EifelRurFederation
from ddj_cloud.scrapers.talsperren.federations.gelsenwasser import GelsenwasserFederation
from ddj_cloud.scrapers.talsperren.federations.ruhr import RuhrFederation
from ddj_cloud.scrapers.talsperren.federations.wahnbach import WahnbachReservoirFederation
from ddj_cloud.scrapers.talsperren.federations.wupper import WupperFederation
from ddj_cloud.utils.date_and_time import local_today_midnight


Expand Down Expand Up @@ -201,3 +208,32 @@ def run(self, df_base: pd.DataFrame) -> pd.DataFrame:
)

return df_map


def _make_filtered_map_exporter(federation_names: Sequence[str]) -> MapExporter:
class FilteredMapExporter(MapExporter):
filename = f"filtered_map_{slugify('_'.join(federation_names))}"

def run(self, df_base: pd.DataFrame) -> pd.DataFrame:
df_map = super().run(df_base)

translated_names = [
FEDERATION_RENAMES.get(fed_name, fed_name) for fed_name in federation_names
]

df_filtered = df_map.loc[df_map["federation_name"].isin(translated_names)]

return df_filtered.reset_index(drop=True)

return FilteredMapExporter() # type: ignore


def filtered_map_exporters() -> list[MapExporter]:
filters = [
[AggerFederation.name],
[EifelRurFederation.name],
[RuhrFederation.name],
[WupperFederation.name],
[WahnbachReservoirFederation.name, GelsenwasserFederation.name],
]
return [_make_filtered_map_exporter(filter) for filter in filters]
4 changes: 3 additions & 1 deletion ddj_cloud/scrapers/talsperren/talsperren.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import datetime as dt
import sentry_sdk

from ddj_cloud.scrapers.talsperren.exporters.map import filtered_map_exporters
from ddj_cloud.utils.storage import (
DownloadFailedException,
upload_dataframe,
Expand Down Expand Up @@ -127,7 +128,8 @@ def run():

# Exporters
exporter_classes = Exporter.__subclasses__()
exporters = [cls() for cls in exporter_classes] # type: ignore
exporters = [cls() for cls in exporter_classes]
exporters.extend(filtered_map_exporters())

for exporter in exporters:
try:
Expand Down

0 comments on commit 399987b

Please sign in to comment.