py3: fix documentation generation on python 3.6+ (try 2) #675
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.
Second attempt at fixing the documentation generation issue, tested both with python 3.6.x on Ubuntu 18.04 and 3.7.x on Fedora 31.
This time, the
__mro_entries__
issue is addressed by raising theAttributeError
.However, this still leaves the
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
error, which is caused by the mockedGObject.GObject
being involved in multiple inheritance inxl.common.ProgressThread
. For this to work, we need ourMock
object for theGObject
module return a type instead of an instance forGObject
(class).Due to the name repetition (
gi.repository.GObject.GObject
, withGObject
referring both to the module and the class) and__getattr__
being a class method, distinction between the two is handled by introduction of a newMockGiModule
class, which now also collects all mock functionality of GI (sub)modules.