Fix errors reported by mypy

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2025-03-01 07:58:19 +01:00
commit 841b5a3391
2 changed files with 22 additions and 12 deletions

View file

@ -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]

View file

@ -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)