TypeAdapter is not a class according to inspect.isclass #8267

@jamesbraza

Description

Initial Checks

  • I confirm that I'm using Pydantic V2
  • Description

    Currently, a TypeAdapter from Pydantic v2 does not satisfy inspect.isclass .

    Something in these innards lead to an inability to compose TypeAdapter into pydantic models.

    from typing import TypeVar, Generic, Type
    from pydantic import BaseModel
    T = TypeVar("T", bound=BaseModel)
    class Consumer(BaseModel, Generic[T]):
        pydantic_model: Type[T]  # One cannot set this to be a TypeAdapter 

    Example Code

    import inspect
    from pydantic import BaseModel, TypeAdapter
    class Item(BaseModel):
        attr: int
    Items = TypeAdapter(list[Item])
    assert inspect.isclass(Items), f"Items is not a class."

    Python, Pydantic & OS Version

    pydantic version: 2.4.2
            pydantic-core version: 2.10.1
              pydantic-core build: profile=release pgo=false
                     install path: /Users/user/code/repo/venv/lib/python3.11/site-packages/pydantic
                   python version: 3.11.5 (main, Sep 12 2023, 09:45:47) [Clang 14.0.0 (clang-1400.0.29.202)]
                         platform: macOS-13.5.2-arm64-arm-64bit
                 related packages: typing_extensions-4.8.0 mypy-1.7.1 pydantic-settings-2.1.0 fastapi-0.104.1