Skip to content

Commit 67f43c6

Browse files
authored
[MLIR][Python] add type hints for accessors (#158455)
This PR adds type hints for accessors in the generated builders.
1 parent e5114a2 commit 67f43c6

File tree

5 files changed

+471
-89
lines changed

5 files changed

+471
-89
lines changed

mlir/lib/Bindings/Python/IRAttributes.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1742,9 +1742,9 @@ nb::object integerOrBoolAttributeCaster(PyAttribute &pyAttribute) {
17421742
return nb::cast(PyBoolAttribute(pyAttribute));
17431743
if (PyIntegerAttribute::isaFunction(pyAttribute))
17441744
return nb::cast(PyIntegerAttribute(pyAttribute));
1745-
std::string msg =
1746-
std::string("Can't cast unknown element type DenseArrayAttr (") +
1747-
nb::cast<std::string>(nb::repr(nb::cast(pyAttribute))) + ")";
1745+
std::string msg = std::string("Can't cast unknown attribute type Attr (") +
1746+
nb::cast<std::string>(nb::repr(nb::cast(pyAttribute))) +
1747+
")";
17481748
throw nb::type_error(msg.c_str());
17491749
}
17501750

mlir/test/mlir-tblgen/op-python-bindings.td

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,22 @@ def AttrSizedOperandsOp : TestOp<"attr_sized_operands",
3636
// CHECK: successors=_ods_successors, regions=regions, loc=loc, ip=ip)
3737

3838
// CHECK: @builtins.property
39-
// CHECK: def variadic1(self):
39+
// CHECK: def variadic1(self) -> _ods_ir.OpOperandList:
4040
// CHECK: operand_range = _ods_segmented_accessor(
4141
// CHECK: self.operation.operands,
4242
// CHECK: self.operation.attributes["operandSegmentSizes"], 0)
4343
// CHECK: return operand_range
4444
// CHECK-NOT: if len(operand_range)
4545
//
4646
// CHECK: @builtins.property
47-
// CHECK: def non_variadic(self):
47+
// CHECK: def non_variadic(self) -> _ods_ir.Value:
4848
// CHECK: operand_range = _ods_segmented_accessor(
4949
// CHECK: self.operation.operands,
5050
// CHECK: self.operation.attributes["operandSegmentSizes"], 1)
5151
// CHECK: return operand_range[0]
5252
//
5353
// CHECK: @builtins.property
54-
// CHECK: def variadic2(self):
54+
// CHECK: def variadic2(self) -> _Optional[_ods_ir.Value]:
5555
// CHECK: operand_range = _ods_segmented_accessor(
5656
// CHECK: self.operation.operands,
5757
// CHECK: self.operation.attributes["operandSegmentSizes"], 2)
@@ -84,21 +84,21 @@ def AttrSizedResultsOp : TestOp<"attr_sized_results",
8484
// CHECK: successors=_ods_successors, regions=regions, loc=loc, ip=ip)
8585

8686
// CHECK: @builtins.property
87-
// CHECK: def variadic1(self):
87+
// CHECK: def variadic1(self) -> _Optional[_ods_ir.OpResult]:
8888
// CHECK: result_range = _ods_segmented_accessor(
8989
// CHECK: self.operation.results,
9090
// CHECK: self.operation.attributes["resultSegmentSizes"], 0)
9191
// CHECK: return result_range[0] if len(result_range) > 0 else None
9292
//
9393
// CHECK: @builtins.property
94-
// CHECK: def non_variadic(self):
94+
// CHECK: def non_variadic(self) -> _ods_ir.OpResult:
9595
// CHECK: result_range = _ods_segmented_accessor(
9696
// CHECK: self.operation.results,
9797
// CHECK: self.operation.attributes["resultSegmentSizes"], 1)
9898
// CHECK: return result_range[0]
9999
//
100100
// CHECK: @builtins.property
101-
// CHECK: def variadic2(self):
101+
// CHECK: def variadic2(self) -> _ods_ir.OpResultList:
102102
// CHECK: result_range = _ods_segmented_accessor(
103103
// CHECK: self.operation.results,
104104
// CHECK: self.operation.attributes["resultSegmentSizes"], 2)
@@ -139,21 +139,21 @@ def AttributedOp : TestOp<"attributed_op"> {
139139
// CHECK: successors=_ods_successors, regions=regions, loc=loc, ip=ip)
140140

141141
// CHECK: @builtins.property
142-
// CHECK: def i32attr(self):
142+
// CHECK: def i32attr(self) -> _ods_ir.IntegerAttr:
143143
// CHECK: return self.operation.attributes["i32attr"]
144144

145145
// CHECK: @builtins.property
146-
// CHECK: def optionalF32Attr(self):
146+
// CHECK: def optionalF32Attr(self) -> _Optional[_ods_ir.FloatAttr]:
147147
// CHECK: if "optionalF32Attr" not in self.operation.attributes:
148148
// CHECK: return None
149149
// CHECK: return self.operation.attributes["optionalF32Attr"]
150150

151151
// CHECK: @builtins.property
152-
// CHECK: def unitAttr(self):
152+
// CHECK: def unitAttr(self) -> bool:
153153
// CHECK: return "unitAttr" in self.operation.attributes
154154

155155
// CHECK: @builtins.property
156-
// CHECK: def in_(self):
156+
// CHECK: def in_(self) -> _ods_ir.IntegerAttr:
157157
// CHECK: return self.operation.attributes["in"]
158158

159159
let arguments = (ins I32Attr:$i32attr, OptionalAttr<F32Attr>:$optionalF32Attr,
@@ -186,11 +186,11 @@ def AttributedOpWithOperands : TestOp<"attributed_op_with_operands"> {
186186
// CHECK: successors=_ods_successors, regions=regions, loc=loc, ip=ip)
187187

188188
// CHECK: @builtins.property
189-
// CHECK: def in_(self):
189+
// CHECK: def in_(self) -> bool:
190190
// CHECK: return "in" in self.operation.attributes
191191

192192
// CHECK: @builtins.property
193-
// CHECK: def is_(self):
193+
// CHECK: def is_(self) -> _Optional[_ods_ir.FloatAttr]:
194194
// CHECK: if "is" not in self.operation.attributes:
195195
// CHECK: return None
196196
// CHECK: return self.operation.attributes["is"]
@@ -350,16 +350,16 @@ def MissingNamesOp : TestOp<"missing_names"> {
350350
// CHECK: successors=_ods_successors, regions=regions, loc=loc, ip=ip)
351351

352352
// CHECK: @builtins.property
353-
// CHECK: def f32(self):
353+
// CHECK: def f32(self) -> _ods_ir.Value:
354354
// CHECK: return self.operation.operands[1]
355355
let arguments = (ins I32, F32:$f32, I64);
356356

357357
// CHECK: @builtins.property
358-
// CHECK: def i32(self):
358+
// CHECK: def i32(self) -> _ods_ir.OpResult:
359359
// CHECK: return self.operation.results[0]
360360
//
361361
// CHECK: @builtins.property
362-
// CHECK: def i64(self):
362+
// CHECK: def i64(self) -> _ods_ir.OpResult:
363363
// CHECK: return self.operation.results[2]
364364
let results = (outs I32:$i32, AnyFloat, I64:$i64);
365365
}
@@ -388,11 +388,11 @@ def OneOptionalOperandOp : TestOp<"one_optional_operand"> {
388388
// CHECK: successors=_ods_successors, regions=regions, loc=loc, ip=ip)
389389

390390
// CHECK: @builtins.property
391-
// CHECK: def non_optional(self):
391+
// CHECK: def non_optional(self) -> _ods_ir.Value:
392392
// CHECK: return self.operation.operands[0]
393393

394394
// CHECK: @builtins.property
395-
// CHECK: def optional(self):
395+
// CHECK: def optional(self) -> _Optional[_ods_ir.Value]:
396396
// CHECK: return None if len(self.operation.operands) < 2 else self.operation.operands[1]
397397
}
398398

@@ -419,11 +419,11 @@ def OneVariadicOperandOp : TestOp<"one_variadic_operand"> {
419419
// CHECK: successors=_ods_successors, regions=regions, loc=loc, ip=ip)
420420

421421
// CHECK: @builtins.property
422-
// CHECK: def non_variadic(self):
422+
// CHECK: def non_variadic(self) -> _ods_ir.Value:
423423
// CHECK: return self.operation.operands[0]
424424
//
425425
// CHECK: @builtins.property
426-
// CHECK: def variadic(self):
426+
// CHECK: def variadic(self) -> _ods_ir.OpOperandList:
427427
// CHECK: _ods_variadic_group_length = len(self.operation.operands) - 2 + 1
428428
// CHECK: return self.operation.operands[1:1 + _ods_variadic_group_length]
429429
let arguments = (ins AnyType:$non_variadic, Variadic<AnyType>:$variadic);
@@ -452,12 +452,12 @@ def OneVariadicResultOp : TestOp<"one_variadic_result"> {
452452
// CHECK: successors=_ods_successors, regions=regions, loc=loc, ip=ip)
453453

454454
// CHECK: @builtins.property
455-
// CHECK: def variadic(self):
455+
// CHECK: def variadic(self) -> _ods_ir.OpResultList:
456456
// CHECK: _ods_variadic_group_length = len(self.operation.results) - 2 + 1
457457
// CHECK: return self.operation.results[0:0 + _ods_variadic_group_length]
458458
//
459459
// CHECK: @builtins.property
460-
// CHECK: def non_variadic(self):
460+
// CHECK: def non_variadic(self) -> _ods_ir.OpResult:
461461
// CHECK: _ods_variadic_group_length = len(self.operation.results) - 2 + 1
462462
// CHECK: return self.operation.results[1 + _ods_variadic_group_length - 1]
463463
let results = (outs Variadic<AnyType>:$variadic, AnyType:$non_variadic);
@@ -484,7 +484,7 @@ def PythonKeywordOp : TestOp<"python_keyword"> {
484484
// CHECK: successors=_ods_successors, regions=regions, loc=loc, ip=ip)
485485

486486
// CHECK: @builtins.property
487-
// CHECK: def in_(self):
487+
// CHECK: def in_(self) -> _ods_ir.Value:
488488
// CHECK: return self.operation.operands[0]
489489
let arguments = (ins AnyType:$in);
490490
}
@@ -523,17 +523,17 @@ def SameResultsVariadicOp : TestOp<"same_results_variadic", [SameOperandsAndResu
523523
def SameVariadicOperandSizeOp : TestOp<"same_variadic_operand",
524524
[SameVariadicOperandSize]> {
525525
// CHECK: @builtins.property
526-
// CHECK: def variadic1(self):
526+
// CHECK: def variadic1(self) -> _ods_ir.OpOperandList:
527527
// CHECK: start, elements_per_group = _ods_equally_sized_accessor(self.operation.operands, 1, 2, 0, 0)
528528
// CHECK: return self.operation.operands[start:start + elements_per_group]
529529
//
530530
// CHECK: @builtins.property
531-
// CHECK: def non_variadic(self):
531+
// CHECK: def non_variadic(self) -> _ods_ir.Value:
532532
// CHECK: start, elements_per_group = _ods_equally_sized_accessor(self.operation.operands, 1, 2, 0, 1)
533533
// CHECK: return self.operation.operands[start]
534534
//
535535
// CHECK: @builtins.property
536-
// CHECK: def variadic2(self):
536+
// CHECK: def variadic2(self) -> _ods_ir.OpOperandList:
537537
// CHECK: start, elements_per_group = _ods_equally_sized_accessor(self.operation.operands, 1, 2, 1, 1)
538538
// CHECK: return self.operation.operands[start:start + elements_per_group]
539539
let arguments = (ins Variadic<AnyType>:$variadic1, AnyType:$non_variadic,
@@ -549,17 +549,17 @@ def SameVariadicOperandSizeOp : TestOp<"same_variadic_operand",
549549
def SameVariadicResultSizeOp : TestOp<"same_variadic_result",
550550
[SameVariadicResultSize]> {
551551
// CHECK: @builtins.property
552-
// CHECK: def variadic1(self):
552+
// CHECK: def variadic1(self) -> _ods_ir.OpResultList:
553553
// CHECK: start, elements_per_group = _ods_equally_sized_accessor(self.operation.results, 1, 2, 0, 0)
554554
// CHECK: return self.operation.results[start:start + elements_per_group]
555555
//
556556
// CHECK: @builtins.property
557-
// CHECK: def non_variadic(self):
557+
// CHECK: def non_variadic(self) -> _ods_ir.OpResult:
558558
// CHECK: start, elements_per_group = _ods_equally_sized_accessor(self.operation.results, 1, 2, 0, 1)
559559
// CHECK: return self.operation.results[start]
560560
//
561561
// CHECK: @builtins.property
562-
// CHECK: def variadic2(self):
562+
// CHECK: def variadic2(self) -> _ods_ir.OpResultList:
563563
// CHECK: start, elements_per_group = _ods_equally_sized_accessor(self.operation.results, 1, 2, 1, 1)
564564
// CHECK: return self.operation.results[start:start + elements_per_group]
565565
let results = (outs Variadic<AnyType>:$variadic1, AnyType:$non_variadic,
@@ -590,20 +590,20 @@ def SimpleOp : TestOp<"simple"> {
590590
// CHECK: successors=_ods_successors, regions=regions, loc=loc, ip=ip)
591591

592592
// CHECK: @builtins.property
593-
// CHECK: def i32(self):
593+
// CHECK: def i32(self) -> _ods_ir.Value:
594594
// CHECK: return self.operation.operands[0]
595595
//
596596
// CHECK: @builtins.property
597-
// CHECK: def f32(self):
597+
// CHECK: def f32(self) -> _ods_ir.Value:
598598
// CHECK: return self.operation.operands[1]
599599
let arguments = (ins I32:$i32, F32:$f32);
600600

601601
// CHECK: @builtins.property
602-
// CHECK: def i64(self):
602+
// CHECK: def i64(self) -> _ods_ir.OpResult:
603603
// CHECK: return self.operation.results[0]
604604
//
605605
// CHECK: @builtins.property
606-
// CHECK: def f64(self):
606+
// CHECK: def f64(self) -> _ods_ir.OpResult:
607607
// CHECK: return self.operation.results[1]
608608
let results = (outs I64:$i64, AnyFloat:$f64);
609609
}
@@ -628,11 +628,11 @@ def VariadicAndNormalRegionOp : TestOp<"variadic_and_normal_region"> {
628628
let regions = (region AnyRegion:$region, AnyRegion, VariadicRegion<AnyRegion>:$variadic);
629629

630630
// CHECK: @builtins.property
631-
// CHECK: def region(self):
631+
// CHECK: def region(self) -> _ods_ir.Region:
632632
// CHECK: return self.regions[0]
633633

634634
// CHECK: @builtins.property
635-
// CHECK: def variadic(self):
635+
// CHECK: def variadic(self) -> _ods_ir.RegionSequence:
636636
// CHECK: return self.regions[2:]
637637
}
638638

@@ -656,7 +656,7 @@ def VariadicRegionOp : TestOp<"variadic_region"> {
656656
let regions = (region VariadicRegion<AnyRegion>:$Variadic);
657657

658658
// CHECK: @builtins.property
659-
// CHECK: def Variadic(self):
659+
// CHECK: def Variadic(self) -> _ods_ir.RegionSequence:
660660
// CHECK: return self.regions[0:]
661661
}
662662

0 commit comments

Comments
 (0)