Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.1k
gh-104415: Fix refleak tests fortyping.ByteString
deprecation#104416
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
bedevere-bot commentedMay 12, 2023
AlexWaygood left a comment• edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Looks good; I can reproduce the refleak locally, and confirmed this fixes it. So I'm happy to merge this to get the buildbots green again. Thanks!
I'm slightly confused about why this is necessary, though: I thought the warnings registry was cleared in theclear_caches
function here:
cpython/Lib/test/libregrtest/utils.py
Lines 116 to 120 inb2c1b4d
defclear_caches(): | |
# Clear the warnings registry, so they can be displayed again | |
formodinsys.modules.values(): | |
ifhasattr(mod,'__warningregistry__'): | |
delmod.__warningregistry__ |
And thatclear_caches
was called after each run when using the-R
option:
cpython/Lib/test/libregrtest/refleak.py
Lines 189 to 190 inb2c1b4d
# Clear caches | |
clear_caches() |
AlexWaygood left a comment• edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
The root cause is that we cacheByteString
inglobals()
here:
Lines 3584 to 3586 inb2c1b4d
ByteString=globals()["ByteString"]=_DeprecatedGenericAlias( | |
collections.abc.ByteString,0,removal_version=(3,14) | |
) |
Butlibregrtest.utils.clear_caches
doesn't know about that cache. It only knows to perform the cleanup functions we have intyping._cleanups
:
cpython/Lib/test/libregrtest/utils.py
Lines 198 to 204 inb2c1b4d
try: | |
typing=sys.modules['typing'] | |
exceptKeyError: | |
pass | |
else: | |
forfintyping._cleanups: | |
f() |
A better fix would be to do this instead:
diff --git a/Lib/typing.py b/Lib/typing.pyindex bf7bd24197..cc38ef9b46 100644--- a/Lib/typing.py+++ b/Lib/typing.py@@ -3586,3 +3586,13 @@ def __getattr__(attr): ) return ByteString raise AttributeError(f"module 'typing' has no attribute {attr!r}")+++def _remove_ByteString_from_globals():+ try:+ del globals()["ByteString"]+ except KeyError:+ pass+++_cleanups.append(_remove_ByteString_from_globals)
And not touch anything intest_typing.py
.
bedevere-bot commentedMay 12, 2023
A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated. Once you have made the requested changes, please leave a comment on this pull request containing the phrase |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Thanks!
I'll run the refleak buildbots again, just to double check this fixes things (it does on my machine) |
bedevere-bot commentedMay 12, 2023
🤖 New build scheduled with the buildbot fleet by@AlexWaygood for commit023a615 🤖 If you want to schedule another build, you need to add the🔨 test-with-refleak-buildbots label again. |
* main:pythongh-91896: Fixup some docs issues following ByteString deprecation (python#104422)pythonGH-104371: check return value of calling `mv.release` (python#104417)pythongh-104415: Fix refleak tests for `typing.ByteString` deprecation (python#104416)pythonGH-86275: Implementation of hypothesis stubs for property-based tests, with zoneinfo tests (python#22863)pythonGH-103082: Filter LINE events in VM, to simplify tool implementation. (pythonGH-104387)pythongh-93649: Split gc- and allocation tests from _testcapimodule.c (pythonGH-104403)pythongh-104389: Add 'unused' keyword to Argument Clinic C converters (python#104390)pythongh-101819: Prepare _io._IOBase for module state (python#104386)pythongh-104413: Fix refleak when super attribute throws AttributeError (python#104414) Fix refleak in `super_descr_get` (python#104408)pythongh-87526: Remove dead initialization from _zoneinfo parse_abbr() (python#24700)pythongh-91896: Improve visibility of `ByteString` deprecation warnings (python#104294)pythongh-104371: Fix calls to `__release_buffer__` while an exception is active (python#104378)pythongh-104377: fix cell in comprehension that is free in outer scope (python#104394)pythongh-104392: Remove _paramspec_tvars from typing (python#104393)pythongh-104396: uuid.py to skip platform check for emscripten and wasi (pythongh-104397)pythongh-99108: Refresh HACL* from upstream (python#104401)pythongh-104301: Allow leading whitespace in disambiguated pdb statements (python#104342)
Uh oh!
There was an error while loading.Please reload this page.
It passes now! 🎉
test_typing
fails refleak tests #104415