1. May 23, 2022
  2. May 22, 2022
    • Jeremy Furtek's avatar
      [mlir][tblgen][ods][python] Use keyword-only arguments for optional builder... · 9b79f50b
      Jeremy Furtek authored
      [mlir][tblgen][ods][python] Use keyword-only arguments for optional builder arguments in generated Python bindings
      
      This diff modifies `mlir-tblgen` to generate Python Operation class `__init__()`
      functions that use Python keyword-only arguments.
      
      Previously, all `__init__()` function arguments were positional. Python code to
      create MLIR Operations was required to provide values for ALL builder arguments,
      including optional arguments (attributes and operands). Callers that did not
      provide, for example, an optional attribute would be forced to provide `None`
      as an argument for EACH optional attribute. Proposed changes in this diff use
      `tblgen` record information (as provided by ODS) to generate keyword arguments
      for:
      - optional operands
      - optional attributes (which includes unit attributes)
      - default-valued attributes
      
      These `__init__()` function keyword arguments have default `None` values (i.e.
      the argument form is `optionalAttr=None`), allowing callers to create Operations
      more easily.
      
      Note that since optional arguments become keyword-only arguments (since they are
      placed after the bare `*` argument), this diff will require ALL optional
      operands and attributes to be provided using explicit keyword syntax. This may,
      in the short term, break any out-of-tree Python code that provided values via
      positional arguments. However, in the long term, it seems that requiring
      keywords for optional arguments will be more robust to operation changes that
      add arguments.
      
      Tests were modified to reflect the updated Operation builder calling convention.
      
      This diff partially addresses the requests made in the github issue below.
      
      https://github.com/llvm/llvm-project/issues/54932
      
      Reviewed By: stellaraccident, mikeurbach
      
      Differential Revision: https://reviews.llvm.org/D124717
      9b79f50b
  3. May 23, 2022
  4. May 22, 2022