KEMBAR78
Cannot infer return type if using Union[Tuple[Literal[]]...] · Issue #7399 · python/mypy · GitHub
Skip to content

Cannot infer return type if using Union[Tuple[Literal[]]...] #7399

@Naddiseo

Description

@Naddiseo
  • Are you reporting a bug, or opening a feature request? Bug
  • Please insert below the code you are checking with mypy,
    or a mock-up repro if the source is private. We would appreciate
    if you try to simplify your case to a minimal repro.
from __future__ import annotations

from typing import Union,Tuple
from typing_extensions import Literal

def does_not_work(arg: int) -> Union[Tuple[str], Tuple[Literal[1]]]:
    if arg > 5:
        return ("a",)
    else:
        return (1,) # Incompatible return value type (got "Tuple[int]", expected "Union[Tuple[str], Tuple[Literal[1]]]")
  • What is the actual behavior/output?
    It fails to recognize that (1,) is a Tuple[Literal[1]]

  • What is the behavior/output you expect?

  • What are the versions of mypy and Python you are using?
    Do you see the same issue after installing mypy from Git master? yes

  • What are the mypy flags you are using? (For example --strict-optional)

    • strict-optional, python-version = 3.7, warn_return_any, --strict

I'm not sure if this is expected behaviour, or a limitation, but I thought I should point it out since I couldn't find any existing bugs for this.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions