From 841b5a3391d5a02bfb2d194bdcc7afc8ac011a05 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sat, 1 Mar 2025 07:58:19 +0100 Subject: [PATCH] Fix errors reported by mypy Signed-off-by: Jan Lindemann --- .../jwutils/db/schema/CompositeForeignKey.py | 12 +++++----- tools/python/jwutils/db/schema/Table.py | 22 ++++++++++++++----- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/tools/python/jwutils/db/schema/CompositeForeignKey.py b/tools/python/jwutils/db/schema/CompositeForeignKey.py index 4e80ff0..f9f059b 100644 --- a/tools/python/jwutils/db/schema/CompositeForeignKey.py +++ b/tools/python/jwutils/db/schema/CompositeForeignKey.py @@ -29,8 +29,8 @@ class CompositeForeignKey: # export assert(len(self.__child_col_set) == len(self.__parent_col_set)) self.__len = len(self.__child_col_set) self.__column_relations: Optional[list[SingleForeignKey]] = None - self.__parent_columns_by_child_column: Optional[dict[str, Column]] = None - self.__child_columns_by_parent_column: Optional[dict[str, Column]] = None + self.__parent_columns_by_child_column: Optional[dict[str, Any]] = None + self.__child_columns_by_parent_column: Optional[dict[str, Any]] = None def __table_rel_str(self): return f'{self.__child_table.name} => {self.__parent_table.name}' @@ -72,21 +72,21 @@ class CompositeForeignKey: # export def parent_columns(self) -> ColumnSet: return self.__parent_col_set - def parent_column(self, child_column): + def parent_column(self, child_column) -> Any: child_column_name = child_column if isinstance(child_column, str) else child_column.name if self.__parent_columns_by_child_column is None: - d: dict[str, Column] = {} + d: dict[str, Any] = {} assert(len(self.__child_col_set) == len(self.__parent_col_set)) for i in range(0, len(self.__child_col_set)): d[self.__child_col_set[i].name] = self.__parent_col_set[i] self.__parent_columns_by_child_column = d return self.__parent_columns_by_child_column[child_column] - def child_column(self, parent_column): + def child_column(self, parent_column) -> Any: slog(WARNING, f'{self}: Looking for child column belonging to parent column "{parent_column}"') parent_column_name = parent_column if isinstance(parent_column, str) else parent_column.name if self.__child_columns_by_parent_column is None: - d: dict[str, Column] = {} + d: dict[str, Any] = {} assert(len(self.__parent_col_set) == len(self.__child_col_set)) for i in range(0, len(self.__parent_col_set)): d[self.__parent_col_set[i].name] = self.__child_col_set[i] diff --git a/tools/python/jwutils/db/schema/Table.py b/tools/python/jwutils/db/schema/Table.py index 6aa0426..0f2fb3d 100644 --- a/tools/python/jwutils/db/schema/Table.py +++ b/tools/python/jwutils/db/schema/Table.py @@ -78,8 +78,10 @@ class Table(abc.ABC): # export if self.___add_child_row_location_rules is None: ret: dict[str, str] = {} for foreign_table_name, foreign_table in self.__relationship_by_foreign_table.items(): - if len(self.foreign_keys_to_parent_table(foreign_table)): + if len([self.foreign_keys_to_parent_table(foreign_table)]): rule = self._add_child_row_location_rule(foreign_table_name) + if rule is None: + continue ret[foreign_table_name] = rule self.___add_child_row_location_rules = ret return self.___add_child_row_location_rules @@ -133,12 +135,12 @@ class Table(abc.ABC): # export return self._log_columns() @abc.abstractmethod - def _display_columns(self) -> Iterable[str]: + def _display_columns(self) -> Optional[Iterable[str]]: return None #return self._primary_keys() @abc.abstractmethod - def _default_sort_columns(self) -> Iterable[str]: + def _default_sort_columns(self) -> Optional[Iterable[str]]: return None @abc.abstractmethod @@ -200,11 +202,16 @@ class Table(abc.ABC): # export return ret def _add_row_location_rule(self) -> Optional[str]: - return self._location_rule() + '/new' + rule = self._location_rule() + if rule is None: + return None + return rule + '/new' def _add_child_row_location_rule(self, parent_table_name: str) -> Optional[str]: parent_table = self.schema[parent_table_name] ret = self._add_row_location_rule() + if ret is None: + return None for cfk in self.foreign_keys_to_parent_table(parent_table): for fk in cfk: token = f'/<{fk.child_column.name}>' @@ -249,7 +256,10 @@ class Table(abc.ABC): # export @property def model_class(self) -> Any: if self.__model_class is None: - pattern = r'^' + self.model_name + '$' + model_name = self.model_name + if model_name is None: + return None + pattern = r'^' + model_name + '$' for module_path, base_class in self._model_module_search_paths(): ret = load_class(module_path, base_class, class_name_filter=pattern) if ret is not None: @@ -453,7 +463,7 @@ class Table(abc.ABC): # export self.__relationships = ret return self.__relationships - def relationship(self, table: Union[Self, str]) -> bool: + def relationship(self, table: Union[Self, str]) -> Optional[Self]: if isinstance(table, Table): table = table.name return self.__relationship_by_foreign_table.get(table)