Conformance suite: fix classes with metaclasses to not fail at runtime#2258
Merged
Conformance suite: fix classes with metaclasses to not fail at runtime#2258
Conversation
carljm
approved these changes
Apr 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The creation of the class
ModelBaseindataclass_transform_meta.pyfails at runtime:This is because the
classstatement in Python desugars to an implicit call to the constructor of the class's metaclass. A metaclass's__init__and__new__methods are expected to receive four parameters:cls,name,bases, andnamespace.ModelMeta.__init__doesn't, so the class creation fails. I have a ty PR that detects these errors, and it causes ty to regress its conformance score because of this invalidly defined class in the conformance suite.The same issue exists with
Concrete3andCMetainprotocol_class_objects.py.The precise signature of the metaclass
__init__methods appears irrelevant in both cases to what the tests are trying to assert. This PR alters the signatures so that the class creation now succeeds at runtime: