support IPython DummyMod as __main__ module for pytest fixtures #12965
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.
This PR fixes a corner case when using ipytest with certain IPython environments. Some environments, such as Databricks, use an IPython feature where the user_ns of the interactive shell is specified ahead of time. Because this user_ns doubles as the main module's
__dict__
, the official module type cannot be used, since__dict__
is a read-only attribute. To work around this, IPython uses a fake module type calledDummyMod
to handle this case. However, instances ofDummyMod
do not pass the isinstance check added in c6a5290. To fix, check if we've imported the module that containsDummyMod
, and if so, addDummyMod
to the isinstance check.Test plan: verified manually.