From 0e2d95fcca2f51c106706a6128d48f61a96ca357 Mon Sep 17 00:00:00 2001 From: yhuikzdtguioaert <174601769+yhuikzdtguioaert@users.noreply.github.com> Date: Tue, 18 Aug 2026 00:49:59 +0300 Subject: [PATCH] Fix inference for Any type objects --- mypy/constraints.py | 2 ++ test-data/unit/check-classes.test | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/mypy/constraints.py b/mypy/constraints.py index 48cc23f742227..ee1db9f8ded2f 100644 --- a/mypy/constraints.py +++ b/mypy/constraints.py @@ -1425,6 +1425,8 @@ def visit_type_type(self, template: TypeType) -> list[Constraint]: if isinstance(self.actual, CallableType): if self.actual.is_type_obj(): instance_type = self.actual.get_instance_type() + if is_named_instance(instance_type, "typing.Any"): + instance_type = AnyType(TypeOfAny.explicit) if self.erase_types: instance_type = erase_typevars(instance_type) return infer_constraints(template.item, instance_type, self.direction) diff --git a/test-data/unit/check-classes.test b/test-data/unit/check-classes.test index 2cd43c74ebb5b..933b463bf500d 100644 --- a/test-data/unit/check-classes.test +++ b/test-data/unit/check-classes.test @@ -3784,6 +3784,25 @@ foo(X) [builtins fixtures/tuple.pyi] [out] +[case testInferGenericFromAnyTypeObject] +from typing import Any, TypeVar, assert_type + +T = TypeVar("T") + +def instantiate(cls: type[T]) -> T: + return cls() + +assert_type(instantiate(Any), Any) +reveal_type(instantiate(Any)) # N: Revealed type is "Any" +[file typing.pyi] +class Any: ... +class Iterable: ... +class Mapping: ... +class TypeVar: + def __init__(self, name: str) -> None: ... +def assert_type(value, typ): ... +[out] + [case testTypeUsingTypeCTypeAnyMember] from typing import Type, Any def foo(arg: Type[Any]):