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-101277: Isolate itertools, part 3/4 by erlend-aasland · Pull Request #101304 · python/cpython

Conversation

@erlend-aasland

@erlend-aasland erlend-aasland commented Jan 24, 2023 •
edited by bedevere-bot
Loading

Uh oh!

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

Copy link
Copy Markdown
Contributor

Add accumulate, compress, filterfalse, count, pairwise, zip_longest, and product types to module state

  • Issue: Isolate the itertools extension module #101277

Sorry, something went wrong.

Uh oh!

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

All reactions
@erlend-aasland
erlend-aasland requested a review from kumaraditya303 January 24, 2023 23:41
@bedevere-bot bedevere-bot added the awaiting core review label Jan 24, 2023
@bedevere-bot bedevere-bot mentioned this pull request Jan 24, 2023
Isolate the itertools extension module #101277
Closed
@erlend-aasland erlend-aasland added the skip news label Jan 24, 2023
@erlend-aasland
erlend-aasland force-pushed the isolate-itertools/batch-3 branch from 1c3828d to 7c3c956 Compare January 25, 2023 08:57
@erlend-aasland
erlend-aasland force-pushed the isolate-itertools/batch-3 branch from 7c3c956 to cfa334f Compare February 1, 2023 14:19
erlend-aasland added 8 commits February 3, 2023 16:14
@erlend-aasland
pythongh-101277: Add accumulate type to module state
6d5d4d2
@erlend-aasland
pythongh-101277: Add compress type to module state
e42e834
@erlend-aasland
101277: Add filterfalse type to module state
daea7f8
@erlend-aasland
pythongh-101277: Add count type to module state
ecb447f
@erlend-aasland
pythongh-101277: Add pairwise type to module state
fb0e18d
@erlend-aasland
pythongh-101277: Add ziplongest type to module state
5a27550
@erlend-aasland
pythongh-101277: Add product type to module state
8baf0e1
@erlend-aasland
Move clinic_state down to where it belongs; left-overs from first PR
a02e90a
@erlend-aasland
erlend-aasland force-pushed the isolate-itertools/batch-3 branch from cfa334f to a02e90a Compare February 3, 2023 15:14
@erlend-aasland
erlend-aasland marked this pull request as ready for review February 3, 2023 15:15
@erlend-aasland
erlend-aasland requested a review from rhettinger as a code owner February 3, 2023 15:15
@erlend-aasland erlend-aasland added the 🔨 test-with-refleak-buildbots Test PR w/ refleak buildbots; report in status section label Feb 3, 2023
@bedevere-bot

bedevere-bot commented Feb 3, 2023

Copy link
Copy Markdown

🤖 New build scheduled with the buildbot fleet by @erlend-aasland for commit a02e90a 🤖

If you want to schedule another build, you need to add the :hammer: 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 Feb 3, 2023
@erlend-aasland
erlend-aasland requested a review from corona10 February 3, 2023 15:15
erlend-aasland
erlend-aasland commented Feb 3, 2023
View reviewed changes
Comment thread Modules/clinic/itertoolsmodule.c.h Resolved

Uh oh!

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

@erlend-aasland
erlend-aasland marked this pull request as draft February 3, 2023 15:49
@erlend-aasland

erlend-aasland commented Feb 7, 2023

Copy link
Copy Markdown
Contributor Author

@kumaraditya303: we're failing test_finalize_structseq of test_embed. the type version contract is invalidated1 and the Py_TPFLAGS_VALID_VERSION_TAG assert in _PyType_Lookup is triggered here:

cpython/Objects/typeobject.c

Lines 4172 to 4178 in c4de6b1

if (entry->version == type->tp_version_tag &&
entry->name == name) {
assert(_PyType_HasFeature(type, Py_TPFLAGS_VALID_VERSION_TAG));
OBJECT_STAT_INC_COND(type_cache_hits, !is_dunder_name(name));
OBJECT_STAT_INC_COND(type_cache_dunder_hits, is_dunder_name(name));
return entry->value;
}

AFAICS, the contract between tp_version_tag and Py_TPFLAGS_VALID_VERSION_TAG seems to hold all across the APIs2 implemented typeobject.c, and from what I can see, the runtime uses only these APIs to mess with the type version.

Any ideas?

Footnotes

  1. tp_version_tag is set, but tp_flags & Py_TPFLAGS_VALID_VERSION_TAG is false ↩

  2. PyType_Modified, assign_version_tag, etc. ↩

All reactions

Sorry, something went wrong.

Uh oh!

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

@kumaraditya303
Merge branch 'main' into isolate-itertools/batch-3
4b6cc35
@kumaraditya303

kumaraditya303 commented Feb 7, 2023 •
edited
Loading

Uh oh!

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

Copy link
Copy Markdown
Contributor

Hmm, debugging shows that it is sys.int_info for which it is failing, this PR has nothing to with that so I guess it is a runtime bug somewhere.

Note for self:

Loop #2 ---\nobject address  : 0x5633734aa7e0\nobject refcount : 30\nobject type     : 0x563373352ce0\nobject type name: type\nobject repr     : <class 'sys.int_info'>\n_testembed: Objects/typeobject.c:4176: _PyType_Lookup: Assertion `_PyType_HasFeature(type, Py_TPFLAGS_VALID_VERSION_TAG)'
All reactions

Sorry, something went wrong.

Uh oh!

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

@erlend-aasland

erlend-aasland commented Feb 7, 2023

Copy link
Copy Markdown
Contributor Author

Hmm, debugging shows that it is sys.int_info for which it is failing, this PR has nothing to with that so I guess it is a runtime bug somewhere.

Hm, but it does not fail on main; it only fails with this patch applied. I've tried (locally) to pull in latest main, just to be sure.

All reactions

Sorry, something went wrong.

Uh oh!

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

@erlend-aasland

This comment was marked as outdated.

Sign in to view
@erlend-aasland

This comment was marked as outdated.

Sign in to view
@erlend-aasland

erlend-aasland commented Feb 8, 2023

Copy link
Copy Markdown
Contributor Author

FTR, Kumar found the culprit. See #101696.

All reactions

Sorry, something went wrong.

Uh oh!

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

@kumaraditya303
Merge branch 'main' into isolate-itertools/batch-3
1784785
kumaraditya303
kumaraditya303 approved these changes Feb 8, 2023
View reviewed changes
@bedevere-bot bedevere-bot added awaiting merge and removed awaiting core review labels Feb 8, 2023
@erlend-aasland
erlend-aasland marked this pull request as ready for review February 8, 2023 20:21
@erlend-aasland

erlend-aasland commented Feb 8, 2023

Copy link
Copy Markdown
Contributor Author

Thanks, Kumar! Let's land.

All reactions

Sorry, something went wrong.

Uh oh!

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

@erlend-aasland
erlend-aasland merged commit de3669e into python:main Feb 8, 2023
@bedevere-bot bedevere-bot removed the awaiting merge label Feb 8, 2023
@erlend-aasland
erlend-aasland deleted the isolate-itertools/batch-3 branch February 8, 2023 20:25
carljm added a commit to carljm/cpython that referenced this pull request Feb 9, 2023
@carljm
Merge branch 'main' into inlinecomp2
be3becc
* main: (82 commits)
  pythongh-101670: typo fix in PyImport_ExtendInittab() (python#101723)
  pythonGH-99293: Document that `Py_TPFLAGS_VALID_VERSION_TAG` shouldn't be used. (#pythonGH-101736)
  no-issue: Add Dong-hee Na as the cjkcodecs codeowner (pythongh-101731)
  pythongh-101678: Merge math_1_to_whatever() and math_1() (python#101730)
  pythongh-101678: refactor the math module to use special functions from c11 (pythonGH-101679)
  pythongh-85984: Remove legacy Lib/pty.py code. (python#92365)
  pythongh-98831: Use opcode metadata for stack_effect() (python#101704)
  pythongh-101283: Version was just released, so should be changed in 3.11.3 (pythonGH-101719)
  pythongh-101283: Fix use of unbound variable (pythonGH-101712)
  pythongh-101283: Improved fallback logic for subprocess with shell=True on Windows (pythonGH-101286)
  pythongh-101277: Port more itertools static types to heap types (python#101304)
  pythongh-98831: Modernize CALL and family (python#101508)
  pythonGH-101696: invalidate type version tag in `_PyStaticType_Dealloc` (python#101697)
  pythongh-100221: Fix creating dirs in `make sharedinstall` (pythonGH-100329)
  pythongh-101670: typo fix in PyImport_AppendInittab() (pythonGH-101672)
  pythongh-101196: Make isdir/isfile/exists faster on Windows (pythonGH-101324)
  pythongh-101614: Don't treat python3_d.dll as a Python DLL when checking extension modules for incompatibility (pythonGH-101615)
  pythongh-100933: Improve `check_element` helper in `test_xml_etree` (python#100934)
  pythonGH-101578: Normalize the current exception (pythonGH-101607)
  pythongh-47937: Note that Popen attributes are read-only (python#93070)
  ...
@erlend-aasland erlend-aasland mentioned this pull request Feb 9, 2023
gh-101696: Make sure immutable types have a valid version tag #101742
Closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@kumaraditya303 kumaraditya303 kumaraditya303 approved these changes
@rhettinger rhettinger Awaiting requested review from rhettinger rhettinger is a code owner
@corona10 corona10 Awaiting requested review from corona10

Uh oh!

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

Assignees

No one assigned

Labels

skip news

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.

3 participants

@erlend-aasland @bedevere-bot @kumaraditya303
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.