Skip to content

Conversation

fatelei
Copy link

@fatelei fatelei commented Oct 14, 2025

gh-140025 queue.SimpleQueue.sizeof() ignores the underlying data structure

@bedevere-app
Copy link

bedevere-app bot commented Oct 14, 2025

Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool.

If this change has little impact on Python users, wait for a maintainer to apply the skip news label instead.

@bedevere-app

This comment was marked as duplicate.

@bedevere-app

This comment was marked as duplicate.

@picnixz picnixz changed the title fix: gh-140025 queue.SimpleQueue.__sizeof__() ignores the underlying … gh-140025: fix queue.SimpleQueue.__sizeof__() computation Oct 14, 2025
Copy link
Member

@ZeroIntensity ZeroIntensity left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Per the bot, please add a news entry. Please also avoid force-pushing; it makes things harder to review and we squash at the end anyway.

Copy link
Member

@picnixz picnixz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall feedback:

  • Implement the tests in PySimpleQueueTest and CSimpleQueueTest. They will be different becauss the impmementation is different.
  • Remove messages when assertions fail and when the condition being tested is self-explanatory.
  • Remove commenta for self-explanatory code.

# C implementation: no change (still within initial ring buffer capacity)
# Python implementation: may change (deque growth, but __sizeof__ may not reflect it)

# Add one more item to potentially trigger growth
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment is not helpful "potentially" means that the test is non-deterministic.

# For C implementation, this includes the ring buffer array
# For Python implementation, this includes the underlying deque

# Add items within initial capacity (if applicable)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove such trivial comments. The code is self-explanatory.

# Test that __sizeof__() accounts for underlying data structure
q = self.q

# Get the size of an empty queue
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this comment.

self.assertIsNone(wr())

def test_sizeof(self):
# Test that __sizeof__() accounts for underlying data structure
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this comment is redundant.

q.put(object()) # Now 9 items

size_after_9 = q.__sizeof__()
self.assertGreaterEqual(size_after_9, size_after_8,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove messages when assertions fail. They are not useful here

Comment on lines +1029 to +1031
# Size may or may not change depending on implementation
# C implementation: no change (still within initial ring buffer capacity)
# Python implementation: may change (deque growth, but __sizeof__ may not reflect it)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make two tests. One for the C implementation and one for the Pythkn one, each of them in their already existing dedicated class (PySimpleQueueTest and CSimpleQueueTest). That way you can test the exact inequality/equality.

self.assertGreater(large_size, 0, "Python SimpleQueue should have positive size")


class PySimpleQueueTest(BaseSimpleQueueTest, unittest.TestCase):
Copy link
Member

@picnixz picnixz Oct 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use this class for pure Python-only tests and the class below for the C tests only.

@bedevere-app
Copy link

bedevere-app bot commented Oct 15, 2025

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants