GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — gh-104415: Fix refleak tests for `typing.ByteString` deprecation by sobolevn · Pull Request #104416 · python/cpython

Conversation

@sobolevn

@sobolevn sobolevn commented May 12, 2023 •
edited by bedevere-bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

It passes now! 🎉

  • Issue: test_typing fails refleak tests #104415

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@sobolevn
pythongh-104415: Fix refleak tests for typing.ByteString deprecation
e8f6c3d
@sobolevn
sobolevn requested review from AlexWaygood, Fidget-Spinner, JelleZijlstra and gvanrossum as code owners May 12, 2023 07:02
@bedevere-bot bedevere-bot added the awaiting review label May 12, 2023
@bedevere-bot bedevere-bot mentioned this pull request May 12, 2023
test_typing fails refleak tests #104415
Closed
@bedevere-bot bedevere-bot added the tests Tests in the Lib/test dir label May 12, 2023
@sobolevn sobolevn added skip news 🔨 test-with-refleak-buildbots Test PR w/ refleak buildbots; report in status section labels May 12, 2023
@bedevere-bot

bedevere-bot commented May 12, 2023

Copy link
Copy Markdown

🤖 New build scheduled with the buildbot fleet by @sobolevn for commit e8f6c3d 🤖

If you want to schedule another build, you need to add the 🔨 test-with-refleak-buildbots label again.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot bedevere-bot removed the 🔨 test-with-refleak-buildbots Test PR w/ refleak buildbots; report in status section label May 12, 2023
AlexWaygood
AlexWaygood approved these changes May 12, 2023
View reviewed changes

@AlexWaygood AlexWaygood left a comment •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

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 the clear_caches function here:

cpython/Lib/test/libregrtest/utils.py

Lines 116 to 120 in b2c1b4d

def clear_caches():
# Clear the warnings registry, so they can be displayed again
for mod in sys.modules.values():
if hasattr(mod, '__warningregistry__'):
del mod.__warningregistry__

And that clear_caches was called after each run when using the -R option:

cpython/Lib/test/libregrtest/refleak.py

Lines 189 to 190 in b2c1b4d

# Clear caches
clear_caches()

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@bedevere-bot bedevere-bot added awaiting merge and removed awaiting review labels May 12, 2023
AlexWaygood
AlexWaygood requested changes May 12, 2023
View reviewed changes

@AlexWaygood AlexWaygood left a comment •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

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 cache ByteString in globals() here:

cpython/Lib/typing.py

Lines 3584 to 3586 in b2c1b4d

ByteString = globals()["ByteString"] = _DeprecatedGenericAlias(
collections.abc.ByteString, 0, removal_version=(3, 14)
)

But libregrtest.utils.clear_caches doesn't know about that cache. It only knows to perform the cleanup functions we have in typing._cleanups:

cpython/Lib/test/libregrtest/utils.py

Lines 198 to 204 in b2c1b4d

try:
typing = sys.modules['typing']
except KeyError:
pass
else:
for f in typing._cleanups:
f()

A better fix would be to do this instead:

diff --git a/Lib/typing.py b/Lib/typing.py
index 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 in test_typing.py.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@bedevere-bot bedevere-bot added awaiting changes and removed awaiting merge labels May 12, 2023
@bedevere-bot

bedevere-bot commented May 12, 2023

Copy link
Copy Markdown

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 I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@sobolevn
Address review
023a615
AlexWaygood
AlexWaygood approved these changes May 12, 2023
View reviewed changes

@AlexWaygood AlexWaygood left a comment

Copy link
Copy Markdown
Member

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!

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@bedevere-bot bedevere-bot added awaiting merge and removed awaiting changes labels May 12, 2023
@AlexWaygood

AlexWaygood commented May 12, 2023

Copy link
Copy Markdown
Member

I'll run the refleak buildbots again, just to double check this fixes things (it does on my machine)

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@AlexWaygood AlexWaygood added the 🔨 test-with-refleak-buildbots Test PR w/ refleak buildbots; report in status section label May 12, 2023
@bedevere-bot

bedevere-bot commented May 12, 2023

Copy link
Copy Markdown

🤖 New build scheduled with the buildbot fleet by @AlexWaygood for commit 023a615 🤖

If you want to schedule another build, you need to add the 🔨 test-with-refleak-buildbots label again.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot bedevere-bot removed the 🔨 test-with-refleak-buildbots Test PR w/ refleak buildbots; report in status section label May 12, 2023
@JelleZijlstra
JelleZijlstra merged commit 5b8cd5a into python:main May 12, 2023
@bedevere-bot bedevere-bot removed the awaiting merge label May 12, 2023
@AlexWaygood AlexWaygood mentioned this pull request May 12, 2023
gh-103763: Implement PEP 695 #103764
Merged
@AlexWaygood AlexWaygood mentioned this pull request May 12, 2023
gh-91896: Revert some very noisy DeprecationWarnings for ByteString #104424
Merged
carljm added a commit to carljm/cpython that referenced this pull request May 12, 2023
@carljm
Merge branch 'main' into supermon
8efd7c6
* 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)
@JelleZijlstra JelleZijlstra mentioned this pull request May 22, 2023
PPC64LE RHEL8 3.x buildbot is timing out on test_gdb #104735
Closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@AlexWaygood AlexWaygood AlexWaygood approved these changes
@gvanrossum gvanrossum Awaiting requested review from gvanrossum
@Fidget-Spinner Fidget-Spinner Awaiting requested review from Fidget-Spinner
@JelleZijlstra JelleZijlstra Awaiting requested review from JelleZijlstra JelleZijlstra is a code owner

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

skip news tests Tests in the Lib/test dir

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

4 participants

@sobolevn @bedevere-bot @AlexWaygood @JelleZijlstra
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.