-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Open
Labels
Description
Initial Checks
- I confirm that I'm using Pydantic V2
Description
The following code no longer works in 2.12.0a1
For real world use case see microsoft/autogen#6889 (comment)
Example Code
from pydantic import BaseModel
from abc import ABC, abstractmethod
class ABC_1(BaseModel, ABC):
@abstractmethod
def do_something(self):
pass
class ABC_2(BaseModel, ABC):
@abstractmethod
def do_something_else(self):
pass
class A1(ABC_1):
def do_something(self):
print("Doing something in A1")
class A2(ABC_2):
def do_something_else(self):
print("Doing something else in A2")
class X(BaseModel):
x: ABC_1 | ABC_2
a1 = A1()
a2 = A2()
x1 = X(x=a1)
x2 = X(x=a2)
Python, Pydantic & OS Version
pydantic version: 2.12.0a1
pydantic-core version: 2.37.2
pydantic-core build: profile=release pgo=false
python version: 3.13.5 (main, Jun 21 2025, 09:35:00) [GCC 15.1.1 20250425]
platform: Linux-6.15.7-arch1-1-x86_64-with-glibc2.41
related packages: typing_extensions-4.14.1 pydantic-extra-types-2.10.5 pydantic-extra-types-2.10.4 pydantic-settings-2.10.1 typing_extensions-4.14.1 fastapi-0.116.1
commit: unknown