Skip to content

Py

PyAttr dataclass

PyAttr(data: T, pytype: TypeAttribute | None = None)

Bases: Data[T]


              flowchart TD
              kirin.ir.attrs.py.PyAttr[PyAttr]
              kirin.ir.attrs.data.Data[Data]
              kirin.ir.attrs.abc.Attribute[Attribute]
              kirin.print.printable.Printable[Printable]

                              kirin.ir.attrs.data.Data --> kirin.ir.attrs.py.PyAttr
                                kirin.ir.attrs.abc.Attribute --> kirin.ir.attrs.data.Data
                                kirin.print.printable.Printable --> kirin.ir.attrs.abc.Attribute
                




              click kirin.ir.attrs.py.PyAttr href "" "kirin.ir.attrs.py.PyAttr"
              click kirin.ir.attrs.data.Data href "" "kirin.ir.attrs.data.Data"
              click kirin.ir.attrs.abc.Attribute href "" "kirin.ir.attrs.abc.Attribute"
              click kirin.print.printable.Printable href "" "kirin.print.printable.Printable"
            

Python attribute for compile-time values. This is a generic attribute that holds a Python value.

The constructor takes a Python value and an optional type attribute. If the type attribute is not provided, the type of the value is inferred as PyClass(type(value)).

Pretty Printing

This object is pretty printable via .print() method.

Source code in src/kirin/ir/attrs/py.py
39
40
41
42
43
44
45
def __init__(self, data: T, pytype: TypeAttribute | None = None):
    self.data = data

    if pytype is None:
        self.type = PyClass(type(data))
    else:
        self.type = pytype

name class-attribute instance-attribute

name = 'PyAttr'

Name of the attribute in printing and other text format.

unwrap

unwrap() -> T

Returns the underlying data value.

Source code in src/kirin/ir/attrs/py.py
62
63
def unwrap(self) -> T:
    return self.data