SIGN IN SIGN UP

Fix some decoding of subsubtypes in general and std::Object in particular (#938)

I ran into a few things here:
 - The object.pyx code to handle decoding to subclasses only looks
   at `__subclasses__`, and so misses grandchildren types. I clearly
   remember thinking about this and testing the grandchild case,
   but apparently I missed something there.
 - Descendants of std::Object in particular get immediately screwy,
   because user-facing types don't inherit from std::Object directly,
   but instead their `__shapes__` do.
 - The new "`tname__` in `__shapes__`" mechanism (#926) was putting
   wrong stuff in the map in some cases.

My approach is to explicitly indicate which classes should be
considered the canonical decoding classes with a `__gel_is_canonical__
= True` field on the class. And for now, I'm populating it explicitly,
though we can probably write a bunch of nasty logic to figure it out
too.
M
Michael J. Sullivan committed
8a4d5aa0b62858a1bf1bee8a4a21553e798e319e
Parent: 06d8a21
Committed by GitHub <noreply@github.com> on 9/30/2025, 1:46:16 AM