from typing import Literal, Union


def func1(arg1: Literal[None]): ...


def func2(arg1: Literal[None] | int): ...


def func3() -> Literal[None]: ...


def func4(arg1: Literal[int, None, float]): ...


def func5(arg1: Literal[None, None]): ...


def func6(arg1: Literal[
    "hello",
    None  # Comment 1
    , "world"
]): ...


def func7(arg1: Literal[
    None  # Comment 1
]): ...


def func8(arg1: Literal[None] | None):...


def func9(arg1: Union[Literal[None], None]): ...


# OK
def good_func(arg1: Literal[int] | None): ...


# From flake8-pyi
Literal[None]  # PYI061 None inside "Literal[]" expression. Replace with "None"
Literal[True, None]  # PYI061 None inside "Literal[]" expression. Replace with "Literal[True] | None"


# Regression tests for https://github.com/astral-sh/ruff/issues/14567
x: Literal[None] | None
y: None | Literal[None]
z: Union[Literal[None], None]

a: int | Literal[None] | None
b: None | Literal[None] | None
c: (None | Literal[None]) | None
d: None | (Literal[None] | None)
e: None | ((None | Literal[None]) | None) | None
f: Literal[None] | Literal[None]
