Keep reference to original module in LazyLoadModule #439
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 is so all values in __dict__ of original module are not set to None by the module destructor when sys.modules[name] is the last reference to the original module, and is replaced during LazyLoadModule.__init__. This prevents any problems where another reference to the original module exists (such as in a PEP-302 loader).
This is a somewhat obscure problem, but I did encounter it as I am using a PEP-302 loader in Maya, and it took a couple of days to figure out. I have updated the loader to ensure no reference to the module is kept during module execution, but this also seems like a useful update to pymel.