The GitHub Actions job "CI" on tvm-ffi.git/2026-02-27/auto-init-python has 
failed.
Run started by GitHub user junrushao (triggered by junrushao).

Head commit for run:
8ca0552fd6fd87c9e9989d02a6fd15b179d16988 / Junru Shao <[email protected]>
feat(python): wire C++ auto-generated __ffi_init__ to Python __init__

Architecture:
- TypeField dataclass extended with c_init, c_kw_only, c_has_default
  flags decoded from the C++ TVMFFIFieldFlagBitMask bitmask
  (kTVMFFIFieldFlagBitMaskInitOff, kTVMFFIFieldFlagBitMaskKwOnly).
- New _make_init() builds a Python __init__ that translates *args/**kwargs
  into the KWARGS sentinel protocol expected by C++ auto-generated
  __ffi_init__, enabling transparent Pythonic construction of C++ objects.
- New _make_init_signature() walks the parent TypeInfo chain to collect
  inherited fields, respects init/kw_only/has_default traits, and emits a
  valid inspect.Signature with required-before-optional ordering.
- _install_init() replaces the old inline __init__ assignment with a
  three-way dispatch: auto-init (KWARGS-aware), plain __ffi_init__, or a
  guard TypeError for uninitializable types. Moves type_info attachment
  before _add_class_attrs so the info is available during init installation.
- KWARGS sentinel object exposed from C++ via ffi.GetKwargsObject and
  stored as core.KWARGS module-level constant.

Public Interfaces:
- TypeField gains c_init, c_kw_only, c_has_default bool attrs (default
  True, False, False) — purely additive, no breaking change to TypeField.
- core.KWARGS: new module-level Object sentinel.
- _install_init() accepts enabled kwarg; register_object always passes
  enabled=True. @c_class can pass enabled=False for init=False classes.
- Ruff D107 (undocumented-public-init) suppressed project-wide since
  auto-generated __init__ methods carry no docstring.
- tvm_ffi.testing exports 7 new test classes (_TestCxxAutoInit*,
  _TestCxxNoAutoInit).

UI/UX:
- Users can now construct C++ reflected objects with natural Python syntax
  (positional, keyword, mixed) instead of raw __ffi_init__ calls.

Behavioral Changes:
- Objects with auto_init metadata get a kwargs-aware __init__ with proper
  inspect.Signature; previously they received a raw __ffi_init__ wrapper.
- Objects without __ffi_init__ now raise TypeError with actionable guidance
  instead of a generic RuntimeError.
- _add_class_attrs reorder: __tvm_ffi_type_info__ set before method
  installation so _install_init can read it.

Docs:
- TYPE_CHECKING stubs added for all new test classes documenting expected
  constructor signatures.
- No user-facing docs updated; follow-up needed for the c_class/reflection
  usage guide.

Tests:
- Executed: N/A (cherry-pick from tested branch)
- 895-line test_dataclass_init.py covering metadata, signature layout,
  construction (positional/kw/mixed/inherited), error paths, low-level
  KWARGS protocol, copy/deepcopy/replace, reinit, isinstance, isolation,
  and error message field naming after stable_partition reordering.

Untested Edge Cases:
- Thread safety of concurrent __ffi_init__ calls on the same object.
- Objects with >64 fields (bitmask width assumption).

Report URL: https://github.com/apache/tvm-ffi/actions/runs/22510116824

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to