[Mlir-commits] [mlir] [mlir:python] Add manual typing annotations to `mlir.register_*` functions. (PR #170627)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu Dec 4 00:57:08 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir
Author: Ingo Müller (ingomueller-net)
<details>
<summary>Changes</summary>
This PR adds a manual typing annotations to the `register_operation` and `register_(type|value)_caster` functions in the main `mlir` module. Since those functions return the result `nb::cpp_function`, which is of type `nb::object`, the automatic typing annocations are of the form `def f() -> object`. This isn't particularly precise and leads to type checking errors when the functions are used. Manually defining the annotation with `nb::sig` solves the problem.
---
Full diff: https://github.com/llvm/llvm-project/pull/170627.diff
1 Files Affected:
- (modified) mlir/lib/Bindings/Python/MainModule.cpp (+8)
``````````diff
diff --git a/mlir/lib/Bindings/Python/MainModule.cpp b/mlir/lib/Bindings/Python/MainModule.cpp
index a14f09f77d2c3..38259c9d962e5 100644
--- a/mlir/lib/Bindings/Python/MainModule.cpp
+++ b/mlir/lib/Bindings/Python/MainModule.cpp
@@ -102,6 +102,8 @@ NB_MODULE(_mlir, m) {
return opClass;
});
},
+ nb::sig("def register_operation(dialect_class: type, *, "
+ "replace: bool = False) -> typing.Callable[..., type]"),
"dialect_class"_a, nb::kw_only(), "replace"_a = false,
"Produce a class decorator for registering an Operation class as part of "
"a dialect");
@@ -114,6 +116,9 @@ NB_MODULE(_mlir, m) {
return typeCaster;
});
},
+ nb::sig(
+ "def register_type_caster(typeid: mlir.ir.TypeID, *, "
+ "replace: bool = False) -> typing.Callable[..., mlir.ir.TypeID]"),
"typeid"_a, nb::kw_only(), "replace"_a = false,
"Register a type caster for casting MLIR types to custom user types.");
m.def(
@@ -126,6 +131,9 @@ NB_MODULE(_mlir, m) {
return valueCaster;
});
},
+ nb::sig(
+ "def register_value_caster(typeid: mlir.ir.TypeID, *, "
+ "replace: bool = False) -> typing.Callable[..., mlir.ir.TypeID]"),
"typeid"_a, nb::kw_only(), "replace"_a = false,
"Register a value caster for casting MLIR values to custom user values.");
``````````
</details>
https://github.com/llvm/llvm-project/pull/170627
More information about the Mlir-commits
mailing list