Experimental: Guard against Python multiple inheritance divergence#4928
Closed
rwgk wants to merge 2 commits intopybind:masterfrom
Closed
Experimental: Guard against Python multiple inheritance divergence#4928rwgk wants to merge 2 commits intopybind:masterfrom
rwgk wants to merge 2 commits intopybind:masterfrom
Conversation
This was referenced Nov 8, 2023
Collaborator
Author
|
Closing because it is very uncertain when and if work on this will be prioritized. — IMO: Ideally the handling of multiple inheritance in pybind11 is revamped, by porting the Boost.Python approach: https://github.com/boostorg/python/blob/99a5352b5cf790c559a7b976c1ba99520431d9d1/src/object/inheritance.cpp |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
WIP: Follow-on to PR #4762.
Companion branch: google/pybind11clif#30079
Major things to do:
Catch all divergence issues in
all_type_info_populate()(fix: a long-standing bug in the handling of Python multiple inheritance #4762 (comment)).Avoid killing process when divergence is detected:
class CppDrvd1Plus2 : CppDrvd, CppDrvd2 { ... };), wrap withclass_<CppDrvd1Plus2>, in Python inherit fromCppDrvd1Plus2instead ofCppDrvd,CppDrvd2separately.Suggested changelog entry: