← 返回首页
`dataclasses.make_dataclass` should accept Any, not type · Issue #11653 · python/typeshed · GitHub
Skip to content

Navigation Menu

Toggle navigation
Sign in
Appearance settings
Search or jump to...

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Resetting focus

dataclasses.make_dataclass should accept Any, not type #11653

New issue
New issue

Description

It has been reported before about UnionType vs type. The original bug mentioned something like:

def f1(a: type) -> None: ... f1(int | None)

Resulting in:

Argument 1 to "f1" has incompatible type "UnionType"; expected "type"

The issue has been dismissed saying that UnionType was not a type. But sometimes strange things happen (from a developer's perspective).

Defining a data class in a declarative style works fine:

@dataclass class D1: a: int | None

But doing the same thing programatically fails:

D2 = make_dataclass("D2", [("a", int | None)])

Results in:

List item 0 has incompatible type "tuple[str, UnionType]"; expected "str | tuple[str, type] | tuple[str, type, Any]"

Because UnionType is a class, mypy is technically correct, but isn't the situation ridiculous? D1.a is a UnionType and that wasn't a problem before, but with D2 it is.

Defining named tuples works fine either way:

class NT1(NamedTuple): a: int | None NT2 = NamedTuple("NT2", [("a", int | None)])

Fine, if UnionType is not a union type, then what is the way to express a union type?

See https://mypy-play.net/?mypy=latest&python=3.12&gist=92e2f18ed8b463b0d7675c50bb73ee99

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedAn actionable problem of low to medium complexity where a PR would be very welcomestubs: false positiveType checkers report false errors

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    • Open in GitHub Copilot app

    Footer

    © 2026 GitHub, Inc.