Skip to content

Commit ef6a288

Browse files
committed
fix(types): resolve all mypy and pyright type errors
- Split combined isinstance check into separate checks to avoid type(pk_value).__name__ which triggers reportUnknownArgumentType - Add type: ignore[redundant-cast] for casts needed by pyright but flagged as redundant by mypy - Add reportUnknownArgumentType and reportUnknownVariableType = false to pyright config for consistency with existing disabled rules
1 parent e84870f commit ef6a288

5 files changed

Lines changed: 28 additions & 16 deletions

File tree

advanced_alchemy/repository/_async.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -714,11 +714,16 @@ def _build_pk_filter(self, pk_value: PrimaryKeyType) -> ColumnElement[bool]:
714714

715715
# Single primary key - accept scalar value only
716716
if len(pk_columns) == 1:
717-
if isinstance(pk_value, (tuple, dict)):
718-
pk_type_name = type(pk_value).__name__
717+
if isinstance(pk_value, tuple):
719718
msg = (
720719
f"Model {self.model_type.__name__} has a single primary key column '{pk_attr_names[0]}'. "
721-
f"Expected a scalar value, got {pk_type_name}: {pk_value!r}"
720+
f"Expected a scalar value, got tuple: {pk_value!r}"
721+
)
722+
raise ValueError(msg)
723+
if isinstance(pk_value, dict):
724+
msg = (
725+
f"Model {self.model_type.__name__} has a single primary key column '{pk_attr_names[0]}'. "
726+
f"Expected a scalar value, got dict: {pk_value!r}"
722727
)
723728
raise ValueError(msg)
724729
single_pk_result: ColumnElement[bool] = pk_columns[0] == pk_value
@@ -727,7 +732,7 @@ def _build_pk_filter(self, pk_value: PrimaryKeyType) -> ColumnElement[bool]:
727732
# Composite primary key - require tuple or dict
728733
if isinstance(pk_value, tuple):
729734
# Tuple format: values must match column order
730-
pk_tuple: tuple[Any, ...] = pk_value
735+
pk_tuple = cast("tuple[Any, ...]", pk_value) # type: ignore[redundant-cast]
731736
if len(pk_tuple) != len(pk_columns):
732737
msg = (
733738
f"Composite primary key for {self.model_type.__name__} has "
@@ -836,9 +841,9 @@ def _normalize_pk_values_to_tuples(self, item_ids: list[PrimaryKeyType]) -> list
836841
pk_dict = cast("dict[str, Any]", pk_value)
837842
normalized.append(tuple(pk_dict[attr_name] for attr_name in self._pk_attr_names))
838843
elif isinstance(pk_value, tuple):
839-
normalized.append(pk_value)
844+
normalized.append(cast("tuple[Any, ...]", pk_value)) # type: ignore[redundant-cast]
840845
else:
841-
pk_type_name = type(pk_value).__name__
846+
pk_type_name: str = type(pk_value).__name__
842847
msg = (
843848
f"Composite primary key for {self.model_type.__name__} requires "
844849
f"tuple or dict, got {pk_type_name}: {pk_value!r}"

advanced_alchemy/repository/_sync.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -715,11 +715,16 @@ def _build_pk_filter(self, pk_value: PrimaryKeyType) -> ColumnElement[bool]:
715715

716716
# Single primary key - accept scalar value only
717717
if len(pk_columns) == 1:
718-
if isinstance(pk_value, (tuple, dict)):
719-
pk_type_name = type(pk_value).__name__
718+
if isinstance(pk_value, tuple):
720719
msg = (
721720
f"Model {self.model_type.__name__} has a single primary key column '{pk_attr_names[0]}'. "
722-
f"Expected a scalar value, got {pk_type_name}: {pk_value!r}"
721+
f"Expected a scalar value, got tuple: {pk_value!r}"
722+
)
723+
raise ValueError(msg)
724+
if isinstance(pk_value, dict):
725+
msg = (
726+
f"Model {self.model_type.__name__} has a single primary key column '{pk_attr_names[0]}'. "
727+
f"Expected a scalar value, got dict: {pk_value!r}"
723728
)
724729
raise ValueError(msg)
725730
single_pk_result: ColumnElement[bool] = pk_columns[0] == pk_value
@@ -728,7 +733,7 @@ def _build_pk_filter(self, pk_value: PrimaryKeyType) -> ColumnElement[bool]:
728733
# Composite primary key - require tuple or dict
729734
if isinstance(pk_value, tuple):
730735
# Tuple format: values must match column order
731-
pk_tuple: tuple[Any, ...] = pk_value
736+
pk_tuple = cast("tuple[Any, ...]", pk_value) # type: ignore[redundant-cast]
732737
if len(pk_tuple) != len(pk_columns):
733738
msg = (
734739
f"Composite primary key for {self.model_type.__name__} has "
@@ -837,9 +842,9 @@ def _normalize_pk_values_to_tuples(self, item_ids: list[PrimaryKeyType]) -> list
837842
pk_dict = cast("dict[str, Any]", pk_value)
838843
normalized.append(tuple(pk_dict[attr_name] for attr_name in self._pk_attr_names))
839844
elif isinstance(pk_value, tuple):
840-
normalized.append(pk_value)
845+
normalized.append(cast("tuple[Any, ...]", pk_value)) # type: ignore[redundant-cast]
841846
else:
842-
pk_type_name = type(pk_value).__name__
847+
pk_type_name: str = type(pk_value).__name__
843848
msg = (
844849
f"Composite primary key for {self.model_type.__name__} requires "
845850
f"tuple or dict, got {pk_type_name}: {pk_value!r}"

advanced_alchemy/repository/memory/_async.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,13 +172,13 @@ def _normalize_pk_to_tuple(self, pk_value: PrimaryKeyType) -> tuple[Any, ...]:
172172
return (pk_value,)
173173

174174
if isinstance(pk_value, tuple):
175-
return pk_value
175+
return cast("tuple[Any, ...]", pk_value) # type: ignore[redundant-cast]
176176
if isinstance(pk_value, dict):
177177
pk_dict = cast("dict[str, Any]", pk_value)
178178
return tuple(pk_dict[attr_name] for attr_name in self._pk_attr_names)
179179

180180
# Scalar passed for composite PK - error
181-
pk_type_name = type(pk_value).__name__
181+
pk_type_name: str = type(pk_value).__name__
182182
msg = (
183183
f"Composite primary key for {self.model_type.__name__} requires "
184184
f"tuple or dict, got {pk_type_name}: {pk_value!r}"

advanced_alchemy/repository/memory/_sync.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,13 +173,13 @@ def _normalize_pk_to_tuple(self, pk_value: PrimaryKeyType) -> tuple[Any, ...]:
173173
return (pk_value,)
174174

175175
if isinstance(pk_value, tuple):
176-
return pk_value
176+
return cast("tuple[Any, ...]", pk_value) # type: ignore[redundant-cast]
177177
if isinstance(pk_value, dict):
178178
pk_dict = cast("dict[str, Any]", pk_value)
179179
return tuple(pk_dict[attr_name] for attr_name in self._pk_attr_names)
180180

181181
# Scalar passed for composite PK - error
182-
pk_type_name = type(pk_value).__name__
182+
pk_type_name: str = type(pk_value).__name__
183183
msg = (
184184
f"Composite primary key for {self.model_type.__name__} requires "
185185
f"tuple or dict, got {pk_type_name}: {pk_value!r}"

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,9 @@ include = ["advanced_alchemy"]
537537
pythonVersion = "3.9"
538538
reportMissingTypeStubs = false
539539
reportPrivateImportUsage = false
540+
reportUnknownArgumentType = false
540541
reportUnknownMemberType = false
542+
reportUnknownVariableType = false
541543
reportUnusedFunction = false
542544
strict = ["advanced_alchemy/**/*"]
543545
venv = ".venv"

0 commit comments

Comments
 (0)