dataclass: __init__ kwargs and Optional[type]

I've created a helper class in my own library that enhances the existing dataclass: a) __init__ accepts keyword-only arguments, b) Optional[...] attribute without a specified default value would default to None in __init__. I think this could be useful in stdlib. I'm thinking a dataclass decorator parameter like "init_kwonly" (default=False to provide backward compatibility) that if True would implement this behavior. Thoughts?

See https://bugs.python.org/issue33129. I've not done much with this issue, because I'm not crazy about the API, and I'd like to do something with positionally-only arguments at the same time. But I think in general it's a good idea. Eric On 1/24/2021 3:07 PM, Paul Bryan via Python-ideas wrote:

Added myself to the nosy list. Seems like the suggested kw_only: str variant—perhaps it should also support Iterable—would allow continued support for positional arguments. Is your idea around positional-only arguments different? Another thought I had was around Optional and default-None semantics: Optional[type] should safely default to None in __init__; I'm thinking the opposite could also be supported (default of None can imply Optional type in annotation). Given various objectives, would it make sense to codify in a PEP to build consensus? On Mon, 2021-01-25 at 11:07 -0500, Eric V. Smith wrote:

See https://bugs.python.org/issue33129. I've not done much with this issue, because I'm not crazy about the API, and I'd like to do something with positionally-only arguments at the same time. But I think in general it's a good idea. Eric On 1/24/2021 3:07 PM, Paul Bryan via Python-ideas wrote:

Added myself to the nosy list. Seems like the suggested kw_only: str variant—perhaps it should also support Iterable—would allow continued support for positional arguments. Is your idea around positional-only arguments different? Another thought I had was around Optional and default-None semantics: Optional[type] should safely default to None in __init__; I'm thinking the opposite could also be supported (default of None can imply Optional type in annotation). Given various objectives, would it make sense to codify in a PEP to build consensus? On Mon, 2021-01-25 at 11:07 -0500, Eric V. Smith wrote:
participants (2)
-
Eric V. Smith
-
Paul Bryan