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-94808: Cover `PyObject_PyBytes` case with custom `__bytes__` method by sobolevn · Pull Request #96610 · python/cpython

Conversation

@sobolevn

@sobolevn sobolevn commented Sep 6, 2022 •
edited by bedevere-bot
Loading

Uh oh!

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

Copy link
Copy Markdown
Member

There were two options:

  1. Add a new _testcapimodule.c function to test PyObject_PyBytes directly. But, there's already pyobject_bytes_from_null which only covers NULL case. So, it is somewhat covered
  2. Add a test for some call that uses PyObject_Bytes, like int_from_bytes_impl. In this case we not only test C-API itself, but also do something useful for the end implementation (in this case int.from_bytes)

So, I went with 2.
Probably it is still possible to add a new _testcapimodule.c function in the next PR.

  • Issue: Metabug: Improving C-level coverage #94808

Sorry, something went wrong.

Uh oh!

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

All reactions
@sobolevn
pythongh-94808: Cover PyObject_PyBytes case with custom __bytes__…
59f8c40
… method
@bedevere-bot bedevere-bot added awaiting review tests Tests in the Lib/test dir labels Sep 6, 2022
@sobolevn sobolevn added the skip news label Sep 6, 2022
kumaraditya303
kumaraditya303 approved these changes Sep 6, 2022
View reviewed changes
@bedevere-bot bedevere-bot added awaiting core review and removed awaiting review labels Sep 6, 2022
@kumaraditya303 kumaraditya303 added needs backport to 3.10 needs backport to 3.11 only security fixes labels Sep 6, 2022
@kumaraditya303
kumaraditya303 requested a review from JelleZijlstra October 6, 2022 10:11
JelleZijlstra
JelleZijlstra reviewed Oct 6, 2022
View reviewed changes
Comment thread Lib/test/test_long.py Outdated
self.assertEqual(int.from_bytes(ValidBytes()), 1)
self.assertRaises(TypeError, int.from_bytes, InvalidBytes)
self.assertRaises(TypeError, int.from_bytes, MissingBytes)
self.assertRaises(TypeError, int.from_bytes, RaisingBytes)

@JelleZijlstra JelleZijlstra Oct 6, 2022

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.

This shouldn't raise TypeError:

>>> class RaisingBytes:
...             def __bytes__(self):
...                 1 / 0
... 
>>> int.from_bytes(RaisingBytes())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in __bytes__
ZeroDivisionError: division by zero

And yet CI is green. Am I missing something? I'm compiling your PR locally now to see what's going on.

Sorry, something went wrong.

Uh oh!

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

All reactions

@JelleZijlstra JelleZijlstra Oct 6, 2022

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.

Ah it's because you don't instantiate the class.

Sorry, something went wrong.

Uh oh!

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

kumaraditya303 reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

@kumaraditya303 kumaraditya303 Oct 6, 2022

Copy link
Copy Markdown
Contributor

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.

Oh, Good catch! Even I missed this.

Sorry, something went wrong.

Uh oh!

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

All reactions
JelleZijlstra
JelleZijlstra reviewed Oct 6, 2022
View reviewed changes
Comment thread Lib/test/test_long.py Resolved

Uh oh!

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

@JelleZijlstra JelleZijlstra self-assigned this Oct 6, 2022
@sobolevn @JelleZijlstra
Update Lib/test/test_long.py
27d5e5c
Co-authored-by: Jelle Zijlstra <[email protected]>
JelleZijlstra
JelleZijlstra approved these changes Oct 6, 2022
View reviewed changes
@bedevere-bot bedevere-bot added awaiting merge and removed awaiting core review labels Oct 6, 2022
@JelleZijlstra
JelleZijlstra merged commit e39ae6b into python:main Oct 6, 2022
@miss-islington

miss-islington commented Oct 6, 2022

Copy link
Copy Markdown
Contributor

Thanks @sobolevn for the PR, and @JelleZijlstra for merging it 🌮🎉.. I'm working now to backport this PR to: 3.10, 3.11.
🐍🍒⛏🤖

All reactions

Sorry, something went wrong.

Uh oh!

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

@bedevere-bot bedevere-bot removed awaiting merge needs backport to 3.11 only security fixes labels Oct 6, 2022
@bedevere-bot

bedevere-bot commented Oct 6, 2022

Copy link
Copy Markdown

GH-97960 is a backport of this pull request to the 3.11 branch.

All reactions

Sorry, something went wrong.

Uh oh!

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

@miss-islington

miss-islington commented Oct 6, 2022

Copy link
Copy Markdown
Contributor

Sorry, @sobolevn and @JelleZijlstra, I could not cleanly backport this to 3.10 due to a conflict.
Please backport using cherry_picker on command line.
cherry_picker e39ae6bef2c357a88e232dcab2e4b4c0f367544b 3.10

All reactions

Sorry, something went wrong.

Uh oh!

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

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Oct 6, 2022
@sobolevn @miss-islington
pythongh-94808: Cover PyObject_PyBytes case with custom __bytes__…
017f52d
… method (pythonGH-96610)

Co-authored-by: Jelle Zijlstra <[email protected]>
(cherry picked from commit e39ae6b)

Co-authored-by: Nikita Sobolev <[email protected]>
@JelleZijlstra

JelleZijlstra commented Oct 6, 2022

Copy link
Copy Markdown
Member

@sobolevn do you want to do a manual 3.10 backport?

All reactions

Sorry, something went wrong.

Uh oh!

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

@sobolevn

sobolevn commented Oct 6, 2022

Copy link
Copy Markdown
Member Author

Yes, will do!

All reactions

Sorry, something went wrong.

Uh oh!

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

@JelleZijlstra

JelleZijlstra commented Oct 6, 2022

Copy link
Copy Markdown
Member

Thanks!

All reactions

Sorry, something went wrong.

Uh oh!

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

miss-islington added a commit that referenced this pull request Oct 6, 2022
@miss-islington @sobolevn
gh-94808: Cover PyObject_PyBytes case with custom __bytes__ method (
4aa93af
GH-96610)

Co-authored-by: Jelle Zijlstra <[email protected]>
(cherry picked from commit e39ae6b)

Co-authored-by: Nikita Sobolev <[email protected]>
carljm added a commit to carljm/cpython that referenced this pull request Oct 6, 2022
@carljm
Merge branch 'main' into dictwatch
7938d6f
* main:
  pythonGH-88050: fix race in closing subprocess pipe in asyncio  (python#97951)
  pythongh-93738: Disallow pre-v3 syntax in the C domain (python#97962)
  pythongh-95986: Fix the example using match keyword (python#95989)
  pythongh-97897: Prevent os.mkfifo and os.mknod segfaults with macOS 13 SDK (pythonGH-97944)
  pythongh-94808: Cover `PyUnicode_Count` in CAPI (python#96929)
  pythongh-94808: Cover `PyObject_PyBytes` case with custom `__bytes__` method (python#96610)
  pythongh-95691: Doc BufferedWriter and BufferedReader (python#95703)
  pythonGH-88968: Add notes about socket ownership transfers (python#97936)
  pythongh-96865: [Enum] fix Flag to use CONFORM boundary (pythonGH-97528)
carljm added a commit to carljm/cpython that referenced this pull request Oct 8, 2022
@carljm
Merge branch 'main' into typewatch
1af2a98
* main: (53 commits)
  pythongh-94808: Coverage: Test that maximum indentation level is handled (python#95926)
  pythonGH-88050: fix race in closing subprocess pipe in asyncio  (python#97951)
  pythongh-93738: Disallow pre-v3 syntax in the C domain (python#97962)
  pythongh-95986: Fix the example using match keyword (python#95989)
  pythongh-97897: Prevent os.mkfifo and os.mknod segfaults with macOS 13 SDK (pythonGH-97944)
  pythongh-94808: Cover `PyUnicode_Count` in CAPI (python#96929)
  pythongh-94808: Cover `PyObject_PyBytes` case with custom `__bytes__` method (python#96610)
  pythongh-95691: Doc BufferedWriter and BufferedReader (python#95703)
  pythonGH-88968: Add notes about socket ownership transfers (python#97936)
  pythongh-96865: [Enum] fix Flag to use CONFORM boundary (pythonGH-97528)
  pythongh-65961: Raise `DeprecationWarning` when `__package__` differs from `__spec__.parent` (python#97879)
  docs(typing): add "see PEP 675" to LiteralString (python#97926)
  pythongh-97850: Remove all known instances of module_repr() (python#97876)
  I changed my surname early this year (python#96671)
  pythongh-93738: Documentation C syntax (:c:type:<C type> -> :c:expr:<C type>) (python#97768)
  pythongh-91539: improve performance of get_proxies_environment  (python#91566)
  build(deps): bump actions/stale from 5 to 6 (python#97701)
  pythonGH-95172 Make the same version `versionadded` oneline (python#95172)
  pythongh-88050: Fix asyncio subprocess to kill process cleanly when process is blocked (python#32073)
  pythongh-93738: Documentation C syntax (Function glob patterns -> literal markup) (python#97774)
  ...
@sobolevn sobolevn mentioned this pull request Oct 9, 2022
[3.10] gh-94808: Cover PyObject_PyBytes case with custom __bytes__ method (GH-96610) #98121
Merged
@bedevere-bot bedevere-bot removed the needs backport to 3.10 label Oct 9, 2022
@bedevere-bot

bedevere-bot commented Oct 9, 2022

Copy link
Copy Markdown

GH-98121 is a backport of this pull request to the 3.10 branch.

All reactions

Sorry, something went wrong.

Uh oh!

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

sobolevn added a commit to sobolevn/cpython that referenced this pull request Oct 9, 2022
@sobolevn
[3.10] pythongh-94808: Cover PyObject_PyBytes case with custom `__b…
1568968
…ytes__` method (pythonGH-96610)

Co-authored-by: Jelle Zijlstra <[email protected]>.
(cherry picked from commit e39ae6b)

Co-authored-by: Nikita Sobolev <[email protected]>
sobolevn added a commit to sobolevn/cpython that referenced this pull request Oct 9, 2022
@sobolevn
[3.10] pythongh-94808: Cover PyObject_PyBytes case with custom `__b…
23419ec
…ytes__` method (pythonGH-96610)

Co-authored-by: Jelle Zijlstra <[email protected]>.
(cherry picked from commit e39ae6b)

Co-authored-by: Nikita Sobolev <[email protected]>
JelleZijlstra pushed a commit that referenced this pull request Oct 9, 2022
@sobolevn
[3.10] gh-94808: Cover PyObject_PyBytes case with custom `__bytes__…
ccb5680
…` method (GH-96610) (#98121)

Co-authored-by: Jelle Zijlstra <[email protected]>.
Co-authored-by: Nikita Sobolev <[email protected]>

(cherry picked from commit e39ae6b)
mpage pushed a commit to mpage/cpython that referenced this pull request Oct 11, 2022
@sobolevn @JelleZijlstra @mpage
pythongh-94808: Cover PyObject_PyBytes case with custom __bytes__…
a857648
… method (python#96610)

Co-authored-by: Jelle Zijlstra <[email protected]>
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
@JelleZijlstra JelleZijlstra JelleZijlstra approved these changes

Uh oh!

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

Assignees

@JelleZijlstra JelleZijlstra

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.

5 participants

@sobolevn @miss-islington @bedevere-bot @JelleZijlstra @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.