From e526a500fe513f54f04ecedd3edc2747d8da8dd5 Mon Sep 17 00:00:00 2001 From: Holger Frey Date: Wed, 2 Oct 2024 12:45:33 +0200 Subject: [PATCH] removed typehints due to py3.8 requirements --- superx_budget/__init__.py | 24 ++++++++++++------------ superx_budget/budget.py | 14 +++++--------- superx_budget/helpers.py | 21 ++++++++------------- 3 files changed, 25 insertions(+), 34 deletions(-) diff --git a/superx_budget/__init__.py b/superx_budget/__init__.py index 7f16735..ba77f8b 100644 --- a/superx_budget/__init__.py +++ b/superx_budget/__init__.py @@ -10,7 +10,7 @@ import pathlib import sys import warnings -from .budget import parse_budget_file # noqa: F401 +from .budget import parse_budget_file from .exceptions import BudgetParserError, SuperXParserError # noqa: F401 from .helpers import ( # noqa: F401 find_budget_file, @@ -19,7 +19,7 @@ from .helpers import ( # noqa: F401 is_budget_file_name, list_budget_files, ) -from .overview import create_overview # noqa: F401 +from .overview import create_overview from .pyramid import main # noqa: F401 from .superx import parse_exported_file # noqa: F401 @@ -31,17 +31,17 @@ def cli_parse_exported_file(): ) parser.add_argument("filename") args = parser.parse_args() - + with warnings.catch_warnings(action="ignore"): sys.stderr.write(f"trying to read '{args.filename}'\n") exported = superx.parse_exported_file(pathlib.Path(args.filename)) sys.stderr.write("... OK\n") - sys.stderr.write(f"searching budget file for year '{exported.account_year}'\n") - budget_dir = pathlib.Path(__file__).parent.parent / "budgets" - budget_file = find_budget_file( - budget_dir, exported.account_year + sys.stderr.write( + f"searching budget file for year '{exported.account_year}'\n" ) + budget_dir = pathlib.Path(__file__).parent.parent / "budgets" + budget_file = find_budget_file(budget_dir, exported.account_year) if not budget_file: sys.exit("... no budget file found") sys.stderr.write(f"... found '{budget_file}'\n") @@ -50,18 +50,18 @@ def cli_parse_exported_file(): budget_data = parse_budget_file(budget_file) sys.stderr.write("... OK\n") - sys.stderr.write(f"Creating overview\n") + sys.stderr.write("Creating overview\n") overview_map = create_overview(budget_data, exported) sys.stderr.write("... OK\n") - sys.stderr.write(f"Sorting overview\n") + sys.stderr.write("Sorting overview\n") overview = sorted(overview_map.values(), key=lambda i: i.row) sys.stderr.write("... OK\n") - sys.stderr.write(f"Geting recipients file\n") + sys.stderr.write("Geting recipients file\n") recipients = find_recipients(budget_dir) sys.stderr.write("... OK\n") - sys.stderr.write(f"Retrieving sheet for export\n") + sys.stderr.write("Retrieving sheet for export\n") sheet = get_sheet_of_file(budget_file) - sys.stderr.write("... OK\n") \ No newline at end of file + sys.stderr.write("... OK\n") diff --git a/superx_budget/budget.py b/superx_budget/budget.py index 6cbe193..3907070 100644 --- a/superx_budget/budget.py +++ b/superx_budget/budget.py @@ -1,14 +1,10 @@ """Budget Parser""" -import typing from collections import namedtuple from .exceptions import BudgetParserError from .helpers import get_sheet_of_file, is_empty_excel_value, strip_excel_value -ExcelStuff = typing.Any -T = typing.TypeVar("T") - EXPECTED_TABLE_HEADERS = [ "Nr.", "Projekt", @@ -40,7 +36,7 @@ BudgetData = namedtuple( ) -def _check_table_header(xl_row: ExcelStuff) -> None: +def _check_table_header(xl_row): fields_ignore_none = ( ("" if c is None else c) for c in xl_row.data[:NUM_EXPECTED_HEADERS] ) @@ -51,7 +47,7 @@ def _check_table_header(xl_row: ExcelStuff) -> None: raise BudgetParserError(msg) -def _skip_empty_lines(rows: ExcelStuff) -> typing.Iterable[T]: +def _skip_empty_lines(rows): for xl_row in rows: first_cell = xl_row.data[0] if is_empty_excel_value(first_cell): @@ -59,7 +55,7 @@ def _skip_empty_lines(rows: ExcelStuff) -> typing.Iterable[T]: yield xl_row -def _parse_data_table(rows: ExcelStuff) -> BudgetData: +def _parse_data_table(rows): for xl_row in _skip_empty_lines(rows): data = [ strip_excel_value(value) @@ -68,14 +64,14 @@ def _parse_data_table(rows: ExcelStuff) -> BudgetData: yield BudgetData(xl_row.row, *data) -def parse_budget_data(xls_sheet: ExcelStuff) -> list[BudgetData]: +def parse_budget_data(xls_sheet): """parses the budget data""" rows = (ExcelRow(i, v) for i, v in enumerate(xls_sheet.values, start=1)) _check_table_header(next(rows)) return list(_parse_data_table(rows)) -def parse_budget_file(file_path: str) -> list[BudgetData]: +def parse_budget_file(file_path): """parses the budget file""" sheet = get_sheet_of_file(file_path, sheet=None) return parse_budget_data(sheet) diff --git a/superx_budget/helpers.py b/superx_budget/helpers.py index f70425a..3c9ea29 100644 --- a/superx_budget/helpers.py +++ b/superx_budget/helpers.py @@ -1,16 +1,13 @@ """some helper functions""" from pathlib import Path -from typing import TypeVar import openpyxl -ExcelItem = TypeVar("ExcelItem") - DEFAULT_RECIPIENTS = ["frey@imtek.de"] -def excel_value_as_number(value: ExcelItem) -> float | int: +def excel_value_as_number(value): if value is None: return 0 if isinstance(value, str): @@ -21,7 +18,7 @@ def excel_value_as_number(value: ExcelItem) -> float | int: return value -def get_sheet_of_file(excel_file: str, sheet: str | None = None) -> ExcelItem: +def get_sheet_of_file(excel_file, sheet=None): """returns a sheet from an excel FileCache if name is set to None, the function returns the first sheet @@ -33,21 +30,21 @@ def get_sheet_of_file(excel_file: str, sheet: str | None = None) -> ExcelItem: return workbook[sheet] -def is_empty_excel_value(value: ExcelItem) -> bool: +def is_empty_excel_value(value): """is the cell value considered empty""" if value is None: return True return isinstance(value, str) and value.strip() == "" -def strip_excel_value(value: ExcelItem) -> str | ExcelItem: +def strip_excel_value(value): """remove whitespace from an excel value if it is a string""" if isinstance(value, str): return value.strip() return value -def is_budget_file_name(path_or_name: str | Path) -> bool: +def is_budget_file_name(path_or_name): """checks if a filename has the format "budget[...]-.xlsx""" path = Path(path_or_name) if path.suffix.lower() != ".xlsx": @@ -61,14 +58,14 @@ def is_budget_file_name(path_or_name: str | Path) -> bool: return False -def list_budget_files(folder: str | Path) -> list[Path]: +def list_budget_files(folder): """lists all files with the name "budget[...]-.xlsx""" files = (i for i in Path(folder).iterdir() if i.is_file()) visible = (i for i in files if not i.name.startswith(".")) return [i for i in visible if is_budget_file_name(i)] -def find_budget_file(folder: str | Path, year: str | int) -> Path | None: +def find_budget_file(folder, year): """searches for a file with the name "budget[...]-.xlsx""" for path in list_budget_files(folder): if path.stem.endswith(f"-{year}"): @@ -76,9 +73,7 @@ def find_budget_file(folder: str | Path, year: str | int) -> Path | None: return None -def find_recipients( - folder: str | Path, filename: str = "recipients.txt" -) -> list[str]: +def find_recipients(folder, filename="recipients.txt"): """finds the recipients of the budget list""" file_path = folder / filename if file_path.is_file():