Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign upbpo-39336: Allow packages to not let their child modules be set on them #18006
+392
−341
Conversation
feb58e2
to
6e45545
6e45545
to
862b536
try: | ||
setattr(parent_module, child, module) | ||
except AttributeError: | ||
msg = (f"Can't set child package '{child}' on " |
This comment has been minimized.
This comment has been minimized.
brettcannon
Jan 15, 2020
Member
Suggested change
msg = (f"Can't set child package '{child}' on " | |
msg = (f"Cannot set an attribute on {parent!r} for child module {child!r}" |
@@ -1339,6 +1342,39 @@ def test_circular_from_import(self): | |||
str(cm.exception), | |||
) | |||
|
|||
def test_unwritable_module(self): | |||
package = inspect.cleandoc(''' |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
bedevere-bot
commented
Jan 15, 2020
When you're done making the requested changes, leave the comment: |
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.
DinoV commentedJan 14, 2020
•
edited by bedevere-bot
This allows an import to proceed if a module raises AttributeError when attempting to set a child module on the parent package. This can occur if a loader wants to make its modules immutable, in which case the module cannot be set. In this case an ImportWarning is still logged in case this behavior is unexpected.
https://bugs.python.org/issue39336