diff --git a/personal_data/html_util.py b/personal_data/html_util.py index 91d2b5d..fc02319 100644 --- a/personal_data/html_util.py +++ b/personal_data/html_util.py @@ -71,7 +71,11 @@ def has_data_attribute(e) -> bool: def normalize_soup_slightly( - soup, classes=True, scripts=True, comments=True, data_attributes=True, + soup, + classes=True, + scripts=True, + comments=True, + data_attributes=True, ): """Perform soup normalization.""" # Little if any content diff --git a/personal_data/main.py b/personal_data/main.py index c21bcec..795cfa7 100644 --- a/personal_data/main.py +++ b/personal_data/main.py @@ -1,18 +1,12 @@ -import csv -import datetime -import decimal import inspect -import io -from pathlib import Path import logging -from collections.abc import Iterable, Mapping, Sequence -from decimal import Decimal +from collections.abc import Sequence +from pathlib import Path import requests import requests_cache -from frozendict import frozendict -from . import notification, data +from . import data, notification from .util import * logger = logging.getLogger(__name__) diff --git a/personal_data/parse_util.py b/personal_data/parse_util.py index 868f55f..878b271 100644 --- a/personal_data/parse_util.py +++ b/personal_data/parse_util.py @@ -31,7 +31,8 @@ def parse_duration(text: str) -> datetime.timedelta: def parse_response_datetime(response) -> datetime.datetime: return datetime.datetime.strptime( - response.headers['Date'], FORMAT_DATE_HEADER, + response.headers['Date'], + FORMAT_DATE_HEADER, ).replace(tzinfo=datetime.UTC) diff --git a/personal_data/util.py b/personal_data/util.py index 4d64b50..b11025a 100644 --- a/personal_data/util.py +++ b/personal_data/util.py @@ -2,13 +2,13 @@ import csv import datetime import decimal import io -import urllib.parse -from pathlib import Path import logging -from collections.abc import Iterable, Mapping, Sequence, Callable -from decimal import Decimal - import typing +import urllib.parse +from collections.abc import Callable, Iterable, Mapping, Sequence +from decimal import Decimal +from pathlib import Path + from frozendict import frozendict from . import data @@ -20,14 +20,25 @@ csv.register_dialect(CSV_DIALECT, lineterminator='\n', skipinitialspace=True) T = typing.TypeVar('T') -def try_value(fn: Callable[[str],T], s: str) -> T | None: + +def try_value(fn: Callable[[str], T], s: str) -> T | None: try: return fn(s) except (ValueError, decimal.InvalidOperation): return None -def to_value(s: str) -> str | Decimal | datetime.date | datetime.datetime | urllib.parse.ParseResult | bool | None: +def to_value( + s: str, +) -> ( + str + | Decimal + | datetime.date + | datetime.datetime + | urllib.parse.ParseResult + | bool + | None +): s = s.strip() if len(s) == 0: return None @@ -139,6 +150,7 @@ def load_csv_file(csv_file: Path) -> list[frozendict]: del csvfile return dicts + def extend_csv_file( csv_file: Path, new_dicts: list[dict], @@ -175,7 +187,7 @@ def extend_csv_file( output_csv = csvfile_in_memory.getvalue() del writer, csvfile_in_memory - csv_file.parent.mkdir(parents=True,exist_ok=True) + csv_file.parent.mkdir(parents=True, exist_ok=True) with open(csv_file, 'w') as csvfile: csvfile.write(output_csv) del csvfile diff --git a/personal_data_calendar/__main__.py b/personal_data_calendar/__main__.py index 373b62f..56171c1 100644 --- a/personal_data_calendar/__main__.py +++ b/personal_data_calendar/__main__.py @@ -1,13 +1,13 @@ import argparse -import logging -import icalendar -import urllib.parse import datetime -import csv +import urllib.parse + +import icalendar from personal_data.util import load_csv_file -NOW = datetime.datetime.now(tz = datetime.UTC) +NOW = datetime.datetime.now(tz=datetime.UTC) + def parse_arguments(): parser = argparse.ArgumentParser() @@ -15,6 +15,7 @@ def parse_arguments(): parser.add_argument('output_file') return parser.parse_args() + def generate_calendar(rows: list[dict]) -> icalendar.Calendar: cal = icalendar.Calendar() cal.add('prodid', '-//personal_data_calendar//example.org//') @@ -24,9 +25,13 @@ def generate_calendar(rows: list[dict]) -> icalendar.Calendar: print(event_data) # Select data - possible_time_keys = [k for k,v in event_data.items() if isinstance(v, datetime.date)] - possible_name_keys = [k for k,v in event_data.items() if isinstance(v, str)] - possible_image_keys = [k for k,v in event_data.items() if isinstance(v, urllib.parse.ParseResult)] + possible_time_keys = [ + k for k, v in event_data.items() if isinstance(v, datetime.date) + ] + possible_name_keys = [k for k, v in event_data.items() if isinstance(v, str)] + possible_image_keys = [ + k for k, v in event_data.items() if isinstance(v, urllib.parse.ParseResult) + ] date = event_data[possible_time_keys[0]] if possible_time_keys else None title = event_data[possible_name_keys[0]] @@ -64,5 +69,6 @@ def main(): with open(args.output_file, 'wb') as f: f.write(calendar.to_ical()) + if __name__ == '__main__': main()