There was just a pull request merged into Python 3.12 to change how types.get_original_bases() behaves for generic types whose bases have no type arguments.
The TL;DR is that types.get_original_bases(cls) should only use cls's own __orig_bases__, not an ancestor type's via MRO, and should fall back to cls.__bases__ otherwise.
There was just a pull request merged into Python 3.12 to change how
types.get_original_bases()behaves for generic types whose bases have no type arguments.__orig_bases__are our own inget_original_basescpython#107584The TL;DR is that
types.get_original_bases(cls)should only usecls's own__orig_bases__, not an ancestor type's via MRO, and should fall back tocls.__bases__otherwise.