]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Fix type errors surfaced by mypy 1.16
authorFederico Caselli <cfederico87@gmail.com>
Fri, 30 May 2025 20:53:59 +0000 (22:53 +0200)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 3 Jun 2025 13:58:25 +0000 (09:58 -0400)
Change-Id: I50bbd760577ff7c865c81153041e82bba068e5d8

33 files changed:
lib/sqlalchemy/dialects/mysql/aiomysql.py
lib/sqlalchemy/dialects/mysql/asyncmy.py
lib/sqlalchemy/dialects/mysql/mysqlconnector.py
lib/sqlalchemy/dialects/mysql/mysqldb.py
lib/sqlalchemy/dialects/mysql/pymysql.py
lib/sqlalchemy/dialects/postgresql/array.py
lib/sqlalchemy/dialects/postgresql/ranges.py
lib/sqlalchemy/engine/_processors_cy.py
lib/sqlalchemy/engine/_row_cy.py
lib/sqlalchemy/engine/_util_cy.py
lib/sqlalchemy/engine/cursor.py
lib/sqlalchemy/engine/default.py
lib/sqlalchemy/ext/mutable.py
lib/sqlalchemy/orm/attributes.py
lib/sqlalchemy/orm/decl_base.py
lib/sqlalchemy/orm/mapper.py
lib/sqlalchemy/orm/properties.py
lib/sqlalchemy/orm/relationships.py
lib/sqlalchemy/orm/util.py
lib/sqlalchemy/orm/writeonly.py
lib/sqlalchemy/pool/impl.py
lib/sqlalchemy/sql/_util_cy.py
lib/sqlalchemy/sql/coercions.py
lib/sqlalchemy/sql/compiler.py
lib/sqlalchemy/sql/ddl.py
lib/sqlalchemy/sql/elements.py
lib/sqlalchemy/sql/lambdas.py
lib/sqlalchemy/sql/schema.py
lib/sqlalchemy/sql/sqltypes.py
lib/sqlalchemy/util/_collections_cy.py
lib/sqlalchemy/util/_immutabledict_cy.py
test/typing/plain_files/orm/mapped_covariant.py
tools/cython_imports.py

index d9828d0a27df5d7086ed9b258e7cdb77aa9ec5a7..26b1424db29fd490393f653db25b913da4cd956c 100644 (file)
@@ -166,7 +166,7 @@ class MySQLDialect_aiomysql(MySQLDialect_pymysql):
     driver = "aiomysql"
     supports_statement_cache = True
 
-    supports_server_side_cursors = True  # type: ignore[assignment]
+    supports_server_side_cursors = True
     _sscursor = AsyncAdapt_aiomysql_ss_cursor
 
     is_async = True
index a2e1fffec696f38793f9d5c2e92682ed0e5745de..061f48da7304d1f9d6450e70a6156db6a5285716 100644 (file)
@@ -153,7 +153,7 @@ class MySQLDialect_asyncmy(MySQLDialect_pymysql):
     driver = "asyncmy"
     supports_statement_cache = True
 
-    supports_server_side_cursors = True  # type: ignore[assignment]
+    supports_server_side_cursors = True
     _sscursor = AsyncAdapt_asyncmy_ss_cursor
 
     is_async = True
index d36c8924ec7c3b59dd40342c5f355b89cd23e336..02a961f548ac1c2b2b15aca15ec560cffb9d7feb 100644 (file)
@@ -117,13 +117,13 @@ class IdentifierPreparerCommon_mysqlconnector:
         return value
 
 
-class MySQLIdentifierPreparer_mysqlconnector(  # type:ignore[misc]
+class MySQLIdentifierPreparer_mysqlconnector(
     IdentifierPreparerCommon_mysqlconnector, MySQLIdentifierPreparer
 ):
     pass
 
 
-class MariaDBIdentifierPreparer_mysqlconnector(  # type:ignore[misc]
+class MariaDBIdentifierPreparer_mysqlconnector(
     IdentifierPreparerCommon_mysqlconnector, MariaDBIdentifierPreparer
 ):
     pass
index 14a4c00e4c0e03219e33f58bd312eb409814264b..8621158823f398135d9ec6ceae2cf9a28cf38c64 100644 (file)
@@ -152,7 +152,7 @@ class MySQLDialect_mysqldb(MySQLDialect):
             return (0, 0, 0)
 
     @util.langhelpers.memoized_property
-    def supports_server_side_cursors(self) -> bool:  # type: ignore[override]
+    def supports_server_side_cursors(self) -> bool:
         try:
             cursors = __import__("MySQLdb.cursors").cursors
             self._sscursor = cursors.SSCursor
index e754bb6fcfca59a5baa4f174926898640467be83..badb431238caba1020140d716167d1c85f76e297 100644 (file)
@@ -75,7 +75,7 @@ class MySQLDialect_pymysql(MySQLDialect_mysqldb):
     description_encoding = None
 
     @langhelpers.memoized_property
-    def supports_server_side_cursors(self) -> bool:  # type: ignore[override]
+    def supports_server_side_cursors(self) -> bool:
         try:
             cursors = __import__("pymysql.cursors").cursors
             self._sscursor = cursors.SSCursor
@@ -115,7 +115,7 @@ class MySQLDialect_pymysql(MySQLDialect_mysqldb):
                     not insp.defaults or insp.defaults[0] is not False
                 )
 
-    def do_ping(self, dbapi_connection: DBAPIConnection) -> Literal[True]:  # type: ignore # noqa: E501
+    def do_ping(self, dbapi_connection: DBAPIConnection) -> Literal[True]:
         if self._send_false_to_ping:
             dbapi_connection.ping(False)
         else:
index cc06d2544779700f1c60384979abc13ee8a70dab..62042c6695295af23d7819705a63a1ed57a0165e 100644 (file)
@@ -396,7 +396,7 @@ class ARRAY(sqltypes.ARRAY[_T]):
     def _against_native_enum(self) -> bool:
         return (
             isinstance(self.item_type, sqltypes.Enum)
-            and self.item_type.native_enum  # type: ignore[attr-defined]
+            and self.item_type.native_enum
         )
 
     def literal_processor(
index 93253570c1bad57c1d93cd8f21f8606421ddee45..0ce4ea29137ed2b93f21008428e08dde035b2f7f 100644 (file)
@@ -271,9 +271,9 @@ class Range(Generic[_T]):
                     value2 += step
                     value2_inc = False
 
-        if value1 < value2:  # type: ignore
+        if value1 < value2:
             return -1
-        elif value1 > value2:  # type: ignore
+        elif value1 > value2:
             return 1
         elif only_values:
             return 0
index 16a44841accd05262cd7f3c6348ad617117e6021..2d9cbab0bc5d7d7419e9024195f5e3df88837574 100644 (file)
@@ -26,7 +26,7 @@ except ModuleNotFoundError:
 
 def _is_compiled() -> bool:
     """Utility function to indicate if this module is compiled or not."""
-    return cython.compiled  # type: ignore[no-any-return]
+    return cython.compiled  # type: ignore[no-any-return,unused-ignore]
 
 
 # END GENERATED CYTHON IMPORT
index 76659e193310a7776f6f238f970963517fccab6c..87cf5bfa39ce94a139f2478c4d6076a5939b111b 100644 (file)
@@ -35,7 +35,7 @@ except ModuleNotFoundError:
 
 def _is_compiled() -> bool:
     """Utility function to indicate if this module is compiled or not."""
-    return cython.compiled  # type: ignore[no-any-return]
+    return cython.compiled  # type: ignore[no-any-return,unused-ignore]
 
 
 # END GENERATED CYTHON IMPORT
index 218fcd2b7b809f561b9241a51a1f18b0bbbe7e46..6c45b22ef67e176755f62c0970d12f9e3d765940 100644 (file)
@@ -37,7 +37,7 @@ except ModuleNotFoundError:
 
 def _is_compiled() -> bool:
     """Utility function to indicate if this module is compiled or not."""
-    return cython.compiled  # type: ignore[no-any-return]
+    return cython.compiled  # type: ignore[no-any-return,unused-ignore]
 
 
 # END GENERATED CYTHON IMPORT
index bff473ac5a9ad1d1ff93f510d61db650147bbab8..351ccda4c3b960d93d0d249ebe8475cb08def418 100644 (file)
@@ -1448,15 +1448,15 @@ class _NoResultMetaData(ResultMetaData):
         self._we_dont_return_rows()
 
     @property
-    def _keymap(self):
+    def _keymap(self):  # type: ignore[override]
         self._we_dont_return_rows()
 
     @property
-    def _key_to_index(self):
+    def _key_to_index(self):  # type: ignore[override]
         self._we_dont_return_rows()
 
     @property
-    def _processors(self):
+    def _processors(self):  # type: ignore[override]
         self._we_dont_return_rows()
 
     @property
index af087a9eb86909254f63dce89b4aa9310786e3a0..4eb45c1d59f5262c83a4c14c4ee99f5f9c40b320 100644 (file)
@@ -481,7 +481,7 @@ class DefaultDialect(Dialect):
         return weakref.WeakKeyDictionary()
 
     @property
-    def dialect_description(self):
+    def dialect_description(self):  # type: ignore[override]
         return self.name + "+" + self.driver
 
     @property
@@ -1632,7 +1632,7 @@ class DefaultExecutionContext(ExecutionContext):
             return "unknown"
 
     @property
-    def executemany(self):
+    def executemany(self):  # type: ignore[override]
         return self.execute_style in (
             ExecuteStyle.EXECUTEMANY,
             ExecuteStyle.INSERTMANYVALUES,
@@ -1846,6 +1846,7 @@ class DefaultExecutionContext(ExecutionContext):
         if self._rowcount is None and exec_opt.get("preserve_rowcount", False):
             self._rowcount = self.cursor.rowcount
 
+        yp: Optional[Union[int, bool]]
         if self.is_crud or self.is_text:
             result = self._setup_dml_or_text_result()
             yp = False
index 4e69a548d70efd5b2ac5170131727bcea9d827b5..7ba1c0bf1af5bc38056ed102c4e8d07c607d8bb5 100644 (file)
@@ -524,6 +524,7 @@ class MutableBase:
             if val is not None:
                 if coerce:
                     val = cls.coerce(key, val)
+                    assert val is not None
                     state.dict[key] = val
                 val._parents[state] = key
 
index 952140575df697eea098125aad24b4a1653ffa6c..e8886a11818b36ef502cd5c887b9cdc38b013d8d 100644 (file)
@@ -631,11 +631,11 @@ def _create_proxied_attribute(
             self._doc = self.__doc__ = doc
 
         @property
-        def _parententity(self):
+        def _parententity(self):  # type: ignore[override]
             return inspection.inspect(self.class_, raiseerr=False)
 
         @property
-        def parent(self):
+        def parent(self):  # type: ignore[override]
             return inspection.inspect(self.class_, raiseerr=False)
 
         _is_internal_proxy = True
index d1b6e74b03c854c61e39b29d453e25a158d4bbc0..ea01312d3c4c84bc88d751f2b25626ce7c46bb19 100644 (file)
@@ -1998,8 +1998,7 @@ class _DeferredMapperConfig(_ClassScanMapperConfig):
     def _early_mapping(self, mapper_kw: _MapperKwArgs) -> None:
         pass
 
-    # mypy disallows plain property override of variable
-    @property  # type: ignore
+    @property
     def cls(self) -> Type[Any]:
         return self._cls()  # type: ignore
 
index 64368af7c910e805de53c4bc2b43dadfd5bcc4a5..2f8bebee51e99570fbd274f4d6edd331090e3e52 100644 (file)
@@ -1032,7 +1032,7 @@ class Mapper(
 
     """
 
-    primary_key: Tuple[Column[Any], ...]
+    primary_key: Tuple[ColumnElement[Any], ...]
     """An iterable containing the collection of :class:`_schema.Column`
     objects
     which comprise the 'primary key' of the mapped table, from the
@@ -2487,7 +2487,7 @@ class Mapper(
         if spec == "*":
             mappers = list(self.self_and_descendants)
         elif spec:
-            mapper_set = set()
+            mapper_set: Set[Mapper[Any]] = set()
             for m in util.to_list(spec):
                 m = _class_to_mapper(m)
                 if not m.isa(self):
@@ -3371,9 +3371,11 @@ class Mapper(
         return self.class_manager.mapper.base_mapper
 
     def _result_has_identity_key(self, result, adapter=None):
-        pk_cols: Sequence[ColumnClause[Any]] = self.primary_key
-        if adapter:
-            pk_cols = [adapter.columns[c] for c in pk_cols]
+        pk_cols: Sequence[ColumnElement[Any]]
+        if adapter is not None:
+            pk_cols = [adapter.columns[c] for c in self.primary_key]
+        else:
+            pk_cols = self.primary_key
         rk = result.keys()
         for col in pk_cols:
             if col not in rk:
@@ -3398,9 +3400,11 @@ class Mapper(
             for the "row" argument
 
         """
-        pk_cols: Sequence[ColumnClause[Any]] = self.primary_key
-        if adapter:
-            pk_cols = [adapter.columns[c] for c in pk_cols]
+        pk_cols: Sequence[ColumnElement[Any]]
+        if adapter is not None:
+            pk_cols = [adapter.columns[c] for c in self.primary_key]
+        else:
+            pk_cols = self.primary_key
 
         mapping: RowMapping
         if hasattr(row, "_mapping"):
index 81d6d8fd12345c17aba01899039f522ca09e6120..3afb6e140a0d5477c2f6c831aaabf56f828e238d 100644 (file)
@@ -239,7 +239,7 @@ class ColumnProperty(
             return self.strategy._have_default_expression  # type: ignore
 
         return ("deferred", True) not in self.strategy_key or (
-            self not in self.parent._readonly_props  # type: ignore
+            self not in self.parent._readonly_props
         )
 
     @util.preload_module("sqlalchemy.orm.state", "sqlalchemy.orm.strategies")
index b6c4cc57727cf3e37d6985a3fc08e9b0fb7f4060..481af4f360822a785b322c5537a7225cf6a5078d 100644 (file)
@@ -533,8 +533,7 @@ class RelationshipProperty(
         else:
             self._overlaps = ()
 
-        # mypy ignoring the @property setter
-        self.cascade = cascade  # type: ignore
+        self.cascade = cascade
 
         if back_populates:
             if backref:
index cf3d8772ccbecf0c6bf44789bb5dd9cd790135c6..eb8472993addd71c26e65e62fe077dca4d9b3b88 100644 (file)
@@ -1561,7 +1561,7 @@ class Bundle(
 
     _propagate_attrs: _PropagateAttrsType = util.immutabledict()
 
-    proxy_set = util.EMPTY_SET  # type: ignore
+    proxy_set = util.EMPTY_SET
 
     exprs: List[_ColumnsClauseElement]
 
index 9a0193e9fa44eae3f8391309f213c859c03ab0ff..347d0d92da9f6dbcaeefc0d701694c0086a4ef9d 100644 (file)
@@ -237,15 +237,11 @@ class _WriteOnlyAttributeImpl(
         return _DynamicCollectionAdapter(data)  # type: ignore[return-value]
 
     @util.memoized_property
-    def _append_token(  # type:ignore[override]
-        self,
-    ) -> attributes.AttributeEventToken:
+    def _append_token(self) -> attributes.AttributeEventToken:
         return attributes.AttributeEventToken(self, attributes.OP_APPEND)
 
     @util.memoized_property
-    def _remove_token(  # type:ignore[override]
-        self,
-    ) -> attributes.AttributeEventToken:
+    def _remove_token(self) -> attributes.AttributeEventToken:
         return attributes.AttributeEventToken(self, attributes.OP_REMOVE)
 
     def fire_append_event(
index 0bfcb6e7d3cbdcebc629268243a843baa948b5c4..d57a2dee46738683f5c07047fa0b4addbe998aaa 100644 (file)
@@ -60,7 +60,7 @@ class QueuePool(Pool):
 
     """
 
-    _is_asyncio = False  # type: ignore[assignment]
+    _is_asyncio = False
 
     _queue_class: Type[sqla_queue.QueueCommon[ConnectionPoolEntry]] = (
         sqla_queue.Queue
@@ -267,7 +267,7 @@ class AsyncAdaptedQueuePool(QueuePool):
 
     """
 
-    _is_asyncio = True  # type: ignore[assignment]
+    _is_asyncio = True
     _queue_class: Type[sqla_queue.QueueCommon[ConnectionPoolEntry]] = (
         sqla_queue.AsyncAdaptedQueue
     )
@@ -350,7 +350,7 @@ class SingletonThreadPool(Pool):
 
     """
 
-    _is_asyncio = False  # type: ignore[assignment]
+    _is_asyncio = False
 
     def __init__(
         self,
index 101d1d102ed942d4aa94d05aa4a91bc680c5367c..c8d303d3591a75afb10ce00ac924bdbc4f3a5eb1 100644 (file)
@@ -30,7 +30,7 @@ except ModuleNotFoundError:
 
 def _is_compiled() -> bool:
     """Utility function to indicate if this module is compiled or not."""
-    return cython.compiled  # type: ignore[no-any-return]
+    return cython.compiled  # type: ignore[no-any-return,unused-ignore]
 
 
 # END GENERATED CYTHON IMPORT
index 057d7a0a2df3613df6aa4aa6e0120d398934af1d..5cb74948bd4155d8f8de6ff9e59a872eecbf1b7a 100644 (file)
@@ -852,7 +852,7 @@ class InElementImpl(RoleImpl):
         )
 
     @util.preload_module("sqlalchemy.sql.elements")
-    def _literal_coercion(self, element, *, expr, operator, **kw):
+    def _literal_coercion(self, element, *, expr, operator, **kw):  # type: ignore[override] # noqa: E501
         if util.is_non_string_iterable(element):
             non_literal_expressions: Dict[
                 Optional[_ColumnExpressionArgument[Any]],
index 1961623ab55144b63a9b53a03bf4c87ce2af5d57..c0de5f43003d465e4dfbbd444f489d082bd80ee8 100644 (file)
@@ -4205,7 +4205,7 @@ class SQLCompiler(Compiled):
                 if self.preparer._requires_quotes(cte_name):
                     cte_name = self.preparer.quote(cte_name)
                 text += self.get_render_as_alias_suffix(cte_name)
-                return text
+                return text  # type: ignore[no-any-return]
             else:
                 return self.preparer.format_alias(cte, cte_name)
 
@@ -6363,7 +6363,7 @@ class SQLCompiler(Compiled):
 
         self.stack.pop(-1)
 
-        return text
+        return text  # type: ignore[no-any-return]
 
     def delete_extra_from_clause(
         self, delete_stmt, from_table, extra_froms, from_hints, **kw
index 5487a170eae33888de23009679b2974eb05f208c..d6bd57d1b72efd87c3a9b47ef74b028c3a77a9f5 100644 (file)
@@ -439,7 +439,7 @@ class _CreateDropBase(ExecutableDDLElement, Generic[_SI]):
         self._ddl_if = getattr(element, "_ddl_if", None)
 
     @property
-    def stringify_dialect(self):
+    def stringify_dialect(self):  # type: ignore[override]
         assert not isinstance(self.element, str)
         return self.element.create_drop_stringify_dialect
 
index 50afac284b084a2cc1df10f02883f7064fd2f42c..4c75936b5804a1181229480f992b38b8fe2dbad5 100644 (file)
@@ -463,7 +463,7 @@ class ClauseElement(
         return self
 
     @property
-    def _constructor(self):
+    def _constructor(self):  # type: ignore[override]
         """return the 'constructor' for this ClauseElement.
 
         This is for the purposes for creating a new object of
@@ -698,6 +698,7 @@ class ClauseElement(
         else:
             elem_cache_key = None
 
+        extracted_params: Optional[Sequence[BindParameter[Any]]]
         if elem_cache_key is not None:
             if TYPE_CHECKING:
                 assert compiled_cache is not None
@@ -2327,7 +2328,7 @@ class TextClause(
     _allow_label_resolve = False
 
     @property
-    def _is_star(self):
+    def _is_star(self):  # type: ignore[override]
         return self.text == "*"
 
     def __init__(self, text: str):
@@ -4867,11 +4868,11 @@ class Label(roles.LabeledColumnExprRole[_T], NamedColumn[_T]):
             return self
 
     @property
-    def primary_key(self):
+    def primary_key(self):  # type: ignore[override]
         return self.element.primary_key
 
     @property
-    def foreign_keys(self):
+    def foreign_keys(self):  # type: ignore[override]
         return self.element.foreign_keys
 
     def _copy_internals(
@@ -5004,7 +5005,7 @@ class ColumnClause(
     _is_multiparam_column = False
 
     @property
-    def _is_star(self):
+    def _is_star(self):  # type: ignore[override]
         return self.is_literal and self.name == "*"
 
     def __init__(
index ce755c1f8327678a84e8554226a1b151d63f16d3..21c69fed5af1743141eee921513eff253081f4ba 100644 (file)
@@ -300,7 +300,9 @@ class LambdaElement(elements.ClauseElement):
             while lambda_element is not None:
                 rec = lambda_element._rec
                 if rec.bindparam_trackers:
-                    tracker_instrumented_fn = rec.tracker_instrumented_fn
+                    tracker_instrumented_fn = (
+                        rec.tracker_instrumented_fn  # type:ignore [union-attr] # noqa: E501
+                    )
                     for tracker in rec.bindparam_trackers:
                         tracker(
                             lambda_element.fn,
@@ -602,7 +604,7 @@ class StatementLambdaElement(
         return self._rec_expected_expr
 
     @property
-    def _with_options(self):
+    def _with_options(self):  # type: ignore[override]
         return self._proxied._with_options
 
     @property
@@ -610,7 +612,7 @@ class StatementLambdaElement(
         return self._proxied._effective_plugin_target
 
     @property
-    def _execution_options(self):
+    def _execution_options(self):  # type: ignore[override]
         return self._proxied._execution_options
 
     @property
@@ -618,27 +620,27 @@ class StatementLambdaElement(
         return self._proxied._all_selected_columns
 
     @property
-    def is_select(self):
+    def is_select(self):  # type: ignore[override]
         return self._proxied.is_select
 
     @property
-    def is_update(self):
+    def is_update(self):  # type: ignore[override]
         return self._proxied.is_update
 
     @property
-    def is_insert(self):
+    def is_insert(self):  # type: ignore[override]
         return self._proxied.is_insert
 
     @property
-    def is_text(self):
+    def is_text(self):  # type: ignore[override]
         return self._proxied.is_text
 
     @property
-    def is_delete(self):
+    def is_delete(self):  # type: ignore[override]
         return self._proxied.is_delete
 
     @property
-    def is_dml(self):
+    def is_dml(self):  # type: ignore[override]
         return self._proxied.is_dml
 
     def spoil(self) -> NullLambdaStatement:
index 7f5f5e346ec4eec3668c370b1e6b37f62e9fe51f..079fac98cc161608a46a933b164c05f57ea2ddc6 100644 (file)
@@ -477,7 +477,7 @@ class Table(
             table.dispatch.before_parent_attach(table, metadata)
             metadata._add_table(name, schema, table)
             try:
-                table.__init__(name, metadata, *args, _no_init=False, **kw)
+                table.__init__(name, metadata, *args, _no_init=False, **kw)  # type: ignore[misc] # noqa: E501
                 table.dispatch.after_parent_attach(table, metadata)
                 return table
             except Exception:
@@ -2239,7 +2239,7 @@ class Column(DialectKWArgs, SchemaItem, ColumnClause[_T]):
         return _DefaultDescriptionTuple._from_column_default(self.onupdate)
 
     @util.memoized_property
-    def _gen_static_annotations_cache_key(self) -> bool:  # type: ignore
+    def _gen_static_annotations_cache_key(self) -> bool:
         """special attribute used by cache key gen, if true, we will
         use a static cache key for the annotations dictionary, else we
         will generate a new cache key for annotations each time.
index 7582df72f9c936414a56d80a4e925dec06e807b5..37b124dae7d93738b31f900204322902d9fbba98 100644 (file)
@@ -1678,14 +1678,14 @@ class Enum(String, SchemaType, Emulated, TypeEngine[Union[str, enum.Enum]]):
         )
 
     @property
-    def sort_key_function(self):
+    def sort_key_function(self):  # type: ignore[override]
         if self._sort_key_function is NO_ARG:
             return self._db_value_for_elem
         else:
             return self._sort_key_function
 
     @property
-    def native(self):
+    def native(self):  # type: ignore[override]
         return self.native_enum
 
     def _db_value_for_elem(self, elem):
@@ -2762,7 +2762,7 @@ class JSON(Indexable, TypeEngine[Any]):
 
     comparator_factory = Comparator
 
-    @property  # type: ignore  # mypy property bug
+    @property
     def should_evaluate_none(self):
         """Alias of :attr:`_types.JSON.none_as_null`"""
         return not self.none_as_null
@@ -3709,7 +3709,7 @@ class Uuid(Emulated, TypeEngine[_UUID_RETURN]):
         return _python_UUID if self.as_uuid else str
 
     @property
-    def native(self):
+    def native(self):  # type: ignore[override]
         return self.native_uuid
 
     def coerce_compared_value(self, op, value):
index 9708402d39f79b663992a751a6fe945c962a2d00..77cea0bb3bf2a12e6bc0a9f6d715092b583a0da5 100644 (file)
@@ -37,7 +37,7 @@ except ModuleNotFoundError:
 
 def _is_compiled() -> bool:
     """Utility function to indicate if this module is compiled or not."""
-    return cython.compiled  # type: ignore[no-any-return]
+    return cython.compiled  # type: ignore[no-any-return,unused-ignore]
 
 
 # END GENERATED CYTHON IMPORT
index efc477b321d2391d1ebe8731d3ceceadd6016760..5eb018fbdbb488577d88196758ddeb3f8cc0915d 100644 (file)
@@ -30,7 +30,7 @@ except ModuleNotFoundError:
 
 def _is_compiled() -> bool:
     """Utility function to indicate if this module is compiled or not."""
-    return cython.compiled  # type: ignore[no-any-return]
+    return cython.compiled  # type: ignore[no-any-return,unused-ignore]
 
 
 # END GENERATED CYTHON IMPORT
index 0b65073fde6eda09695cb6f883f25a8aa4dbf4ec..9eca6e9593f8396c453329f9df12c332a5ece8d3 100644 (file)
@@ -21,7 +21,10 @@ from sqlalchemy.sql.elements import SQLCoreOperations
 \r
 \r
 class ParentProtocol(Protocol):\r
-    name: Mapped[str]\r
+    # Read-only for simplicity, mutable protocol members are complicated,\r
+    # see https://mypy.readthedocs.io/en/latest/common_issues.html#covariant-subtyping-of-mutable-protocol-members-is-rejected\r
+    @property\r
+    def name(self) -> Mapped[str]: ...\r
 \r
 \r
 class ChildProtocol(Protocol):\r
index c1b1a8c9c168665191f7c65b5a9f8378d2c73e02..81778d6b5ad67a7b85004130db6e5228d7933f3f 100644 (file)
@@ -27,7 +27,7 @@ except ModuleNotFoundError:
 
 def _is_compiled() -> bool:
     """Utility function to indicate if this module is compiled or not."""
-    return cython.compiled  # type: ignore[no-any-return]
+    return cython.compiled  # type: ignore[no-any-return,unused-ignore]
 
 
 # END GENERATED CYTHON IMPORT\