[Python] Add [<ClassAttributes>] to control Python class generation #4199
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.
Overview
Introduce a new
[<ClassAttributes>]
attribute that provides Python-specific control over how F# types are transpiled to Python classes. This attribute implies member attachment (similar toAttachMembers
) while offering Python-specific parameters for better integration with Python frameworks like Pydantic, dataclasses, and SQLAlchemy.Current AttachMembers Behavior (For Context)
Without AttachMembers (Default)
Generates:
With AttachMembers (Current)
Generates:
New ClassAttributes Attribute
Basic Syntax
Style: "attributes" (New Feature)
F# Input
Generated Output
Parameter Reference
style
"properties"
"properties"
(current behavior) or"attributes"
init
true
__init__
methodParameter Examples
Suppress init Generation