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 — bpo-33073: Adding as_integer_ratio to ints. by lisroach · Pull Request #8750 · python/cpython

Conversation

@lisroach

@lisroach lisroach commented Aug 12, 2018 •
edited by bedevere-bot
Loading

Uh oh!

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

Copy link
Copy Markdown
Contributor

Adding as_integer_ratio to ints to make them more interoperable with floats.

https://bugs.python.org/issue33073

Sorry, something went wrong.

Uh oh!

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

All reactions
@lisroach
bpo:33073 adding as_integer_ratio to ints.
ff0790e
@the-knights-who-say-ni the-knights-who-say-ni added the CLA signed label Aug 12, 2018
@bedevere-bot bedevere-bot added the awaiting review label Aug 12, 2018
pablogsal
pablogsal reviewed Aug 13, 2018
View reviewed changes
Comment thread Objects/longobject.c Outdated
PyObject *result_pair = NULL;

denominator = PyLong_FromLong(1);
result_pair = PyTuple_Pack(2, self, denominator);

@pablogsal pablogsal Aug 13, 2018

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.

If PyLong_FromLong returns NULL then PyTuple_Pack and Py_DECREF(denominator) will fail.

Sorry, something went wrong.

Uh oh!

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

All reactions

@sir-sigurd sir-sigurd Aug 13, 2018

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.

I think the whole function can be replaced with return PyTuple_Pack(2, self, _PyLong_One).

Sorry, something went wrong.

Uh oh!

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

eric-wieser and eamanu reacted with thumbs up emoji
All reactions
  • 👍 2 reactions

@eamanu eamanu Aug 14, 2018

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.

@pablogsal But PyLong_FromLong always receive the 1. How could it fail?

Sorry, something went wrong.

Uh oh!

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

All reactions

@pablogsal pablogsal Aug 14, 2018 •
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 contract of PyLong_FromLong says that it can return NULL on failure. Even if the current implementation (that uses the array of small ints) makes it improbable/impossible to fail, this can change in the future without changing the external API.

Sorry, something went wrong.

Uh oh!

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

All reactions
eric-wieser
eric-wieser reviewed Aug 13, 2018
View reviewed changes
Comment thread Objects/longobject.c Outdated
Return a pair of integers, whose ratio is exactly equal to the original int
and with a positive denominator.

Raise OverflowError on infinities and a ValueError on NaNs.

@eric-wieser eric-wieser Aug 13, 2018

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.

An int can never be any of these things - remove this line

Sorry, something went wrong.

Uh oh!

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

All reactions

@eamanu eamanu Aug 14, 2018

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.

Yes. math.inf is float class

Sorry, something went wrong.

Uh oh!

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

All reactions
eric-wieser
eric-wieser reviewed Aug 13, 2018
View reviewed changes
Comment thread Lib/test/test_long.py Outdated
def test_as_integer_ratio(self):
tests = [10, 0, -10, 1, 3]
for value in tests:
self.assertEqual((value).as_integer_ratio(), (value, 1))

@eric-wieser eric-wieser Aug 13, 2018

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.

nit: no parens needed around value

Sorry, something went wrong.

Uh oh!

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

eamanu reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
ZackerySpytz
ZackerySpytz reviewed Aug 14, 2018
View reviewed changes
Comment thread Doc/library/stdtypes.rst
Return a pair of integers whose ratio is exactly equal to the original integer
and with a positive denominator. The integer ratio of integers (whole numbers)
is always the integer as the numerator and 1 as the denominator.

@ZackerySpytz ZackerySpytz Aug 14, 2018

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.

A versionadded directive needs to be added. Also, the developer's guide states that reST files should use an indentation of 3 spaces.

Sorry, something went wrong.

Uh oh!

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

All reactions
@lisroach
Updates as_integer_ratio to be one line.
d1daadc
mdickinson
mdickinson reviewed Aug 17, 2018
View reviewed changes
Comment thread Objects/longobject.c Outdated
int_as_integer_ratio_impl(PyObject *self)
/*[clinic end generated code: output=e60803ae1cc8621a input=ce9c7768a1287fb9]*/
{
return PyTuple_Pack(2, self, _PyLong_One)

@mdickinson mdickinson Aug 17, 2018

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.

There's a missing semicolon at the end of this line; I think that's why the continuous integration builds are failing.

Also, please change the indentation of this line to 4 spaces instead of 2 spaces, following PEP7. Thanks!

Sorry, something went wrong.

Uh oh!

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

All reactions
lisroach and others added 2 commits August 22, 2018 16:58
@lisroach
Adds ;, fixes spacing.
3b89b6f
@mdickinson
Update test_doctest expected output to include builtins.int.as_intege…
48c7dd0
…r_ratio.
@mdickinson

mdickinson commented Aug 25, 2018

Copy link
Copy Markdown
Member

@lisroach Thanks for the update. I've pushed a commit that should fix the failing test_doctest.

All reactions

Sorry, something went wrong.

Uh oh!

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

mdickinson added 3 commits August 25, 2018 12:52
@mdickinson
Regenerate clinic files.
4ca566a
@mdickinson
Rewrap text to keep within the line length limit.
2336cb4
@mdickinson
One more test_doctest fix.
673a0ca
mdickinson
mdickinson approved these changes Aug 25, 2018
View reviewed changes

@mdickinson mdickinson 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.

@lisroach If you're okay with my recent updates, I think this PR is ready to merge.

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 Aug 25, 2018
mdickinson added 2 commits August 25, 2018 13:58
@mdickinson
Add 'what's new' entry.
5102589
@mdickinson
Add Misc/ACKS entry.
a935a7b
@mdickinson mdickinson added the type-feature A feature request or enhancement label Aug 25, 2018
serhiy-storchaka
serhiy-storchaka reviewed Aug 25, 2018
View reviewed changes
Comment thread Objects/longobject.c Outdated
int_as_integer_ratio_impl(PyObject *self)
/*[clinic end generated code: output=e60803ae1cc8621a input=c1aea0aa6fb85c28]*/
{
return PyTuple_Pack(2, self, _PyLong_One);

@serhiy-storchaka serhiy-storchaka Aug 25, 2018

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.

True.as_integer_ratio() will return (True, 1). It should return (1, 1).

Sorry, something went wrong.

Uh oh!

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

eric-wieser, lisroach, and pablogsal reacted with thumbs up emoji
All reactions
  • 👍 3 reactions

@mdickinson mdickinson Aug 25, 2018

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.

Hmm; good point. There's a precedent here in the form of True.numerator, which returns 1.

Sorry, something went wrong.

Uh oh!

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

All reactions
Comment thread Objects/longobject.c
Return a pair of integers, whose ratio is exactly equal to the original int
and with a positive denominator.

>>> (10).as_integer_ratio()

@serhiy-storchaka serhiy-storchaka Aug 25, 2018

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.

Do we need so much examples in a docstring?

Sorry, something went wrong.

Uh oh!

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

All reactions

@mdickinson mdickinson Aug 25, 2018

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.

I think it's useful to have at least one positive and one negative example, so that it's obvious at a glance that the behaviour for negatives is to give (for example) (-5, 1) rather than (5, -1). I could imagine users thinking that 0 was somehow a special case, too, so I like that we have the 0 example there.

Sorry, something went wrong.

Uh oh!

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

All reactions
Comment thread Lib/test/test_long.py Outdated
self.assertEqual(type(value >> shift), int)

def test_as_integer_ratio(self):
tests = [10, 0, -10, 1, 3]

@serhiy-storchaka serhiy-storchaka Aug 25, 2018

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.

Why so much similar cases are needed?

Add tests for booleans and other int subclasses. Check types of numerator and denominator.

Sorry, something went wrong.

Uh oh!

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

mdickinson reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Comment thread Doc/library/stdtypes.rst Outdated

Return a pair of integers whose ratio is exactly equal to the original
integer and with a positive denominator. The integer ratio of integers
(whole numbers) is always the integer as the numerator and 1 as the

@serhiy-storchaka serhiy-storchaka Aug 25, 2018

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.

``1``

Sorry, something went wrong.

Uh oh!

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

mdickinson reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
mdickinson
mdickinson previously requested changes Aug 25, 2018
View reviewed changes

@mdickinson mdickinson 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.

Changing my approval due to the issues Serhiy noted. @lisroach do you want to tackle the outstanding comments? I'm happy to pick this up if not.

Sorry, something went wrong.

Uh oh!

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

All reactions
@bedevere-bot bedevere-bot removed the awaiting merge label Aug 25, 2018
@bedevere-bot

bedevere-bot commented Aug 25, 2018

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.

@bedevere-bot bedevere-bot added the awaiting changes label Aug 25, 2018
@eric-wieser eric-wieser mentioned this pull request Aug 25, 2018
ENH: Implement np.floating.as_integer_ratio numpy/numpy#10741
Merged
lisroach added 2 commits September 10, 2018 11:58
@lisroach
Adds boolean support.
3cd076c
@lisroach
Merge branch 'iss_33073' of https://github.com/lisroach/cpython into …
028417a
…iss_33073
@lisroach

lisroach commented Sep 10, 2018

Copy link
Copy Markdown
Contributor Author

I have made the requested changes; please review again.

I am not sure if I could do the boolean check better- somehow in one line? I'm open to advice!

Thanks for all the reviews @mdickinson and @serhiy-storchaka it's been really helpful!

All reactions

Sorry, something went wrong.

Uh oh!

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

@lisroach

lisroach commented Sep 13, 2018

Copy link
Copy Markdown
Contributor Author

@eric-wieser I believe Serhiy's thinking is correct, it should be (1, 1).
Subclasses of int inherit the same operations of int, and those operations create instances of int (as opposed to creating an instance of the subclass). For example, if we look at the unary plus of int:

>>> class Int(int):
...     pass
...
>>> x = Int(42)
>>> type(+x)
<class 'int'>
>>> type(+True)
<class 'int'>
All reactions

Sorry, something went wrong.

Uh oh!

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

lisroach added 3 commits September 13, 2018 13:26
@lisroach
Handles subclasses more smoothly. Adds unit tests.
2028d97
@lisroach
Fixes docstring and doc format.
89a0d9d
@lisroach
Regenerates argument clinic.
148225c
rhettinger
rhettinger requested changes Sep 13, 2018
View reviewed changes
Comment thread Lib/test/test_long.py Outdated
class Foo(enum.IntEnum):
X = 42
self.assertEqual(Foo.X.as_integer_ratio(), (42, 1))
assert(type(Foo.X.as_integer_ratio()[0] == int))

@rhettinger rhettinger Sep 13, 2018

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.

This should be: self.assertEqual(type(Foo.X.as_integer_ratio()[0], int). Unittest doesn't use assertion statements.

Sorry, something went wrong.

Uh oh!

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

All reactions
Comment thread Objects/longobject.c Outdated
return PyTuple_Pack(2, self, _PyLong_One);
else {
PyObject *temp = PyNumber_Positive(self);
Py_DECREF(temp);

@rhettinger rhettinger Sep 13, 2018

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.

The DECREF needs to occur after building the tuple; otherwise, the Python integer object can (and likely will) disappear before it gets used.

Sorry, something went wrong.

Uh oh!

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

All reactions
Comment thread Objects/longobject.c Outdated
if PyLong_CheckExact(self)
return PyTuple_Pack(2, self, _PyLong_One);
else {
PyObject *temp = PyNumber_Positive(self);

@rhettinger rhettinger Sep 13, 2018

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.

We need another way to do this. The intent of this code is to construct a regular integer instance from an instance of an int subclass. The problem with PyNumber_Positive() is that the subclass can itself define pos() to return something other than an exact int. Elsewhere, we use _PyLong_Copy for this purpose.

Sorry, something went wrong.

Uh oh!

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

All reactions

@eric-wieser eric-wieser Sep 14, 2018

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.

Is there a reason why PyNumber_Index does not call _PyLong_Copy?

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 change review labels Sep 13, 2018
@bedevere-bot

bedevere-bot commented Sep 13, 2018

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.

@rhettinger
Move whatsnew entry to resolve a merge conflict
ac0f11f
@rhettinger
rhettinger dismissed mdickinson’s stale review September 14, 2018 05:34

Am checking to see the Serhiy's issues are resolved.

rhettinger and others added 2 commits September 13, 2018 22:42
@rhettinger
Restored bogus whitespace redaction
cb9c978
@lisroach
Updates the function call. Fixes tests.
d311b83
rhettinger
rhettinger approved these changes Sep 14, 2018
View reviewed changes
@bedevere-bot bedevere-bot added awaiting merge and removed awaiting changes labels Sep 14, 2018
@eric-wieser

eric-wieser commented Sep 14, 2018

Copy link
Copy Markdown
Contributor

Reviving a comment hidden away above - should operator.index / PyNumber_Index / int->tp_as_number->nb_index call _PyLong_Copy too for consistency?

All reactions

Sorry, something went wrong.

Uh oh!

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

@lisroach
Fixing failing Travis build.
d3ef843
sir-sigurd
sir-sigurd reviewed Sep 14, 2018
View reviewed changes
Comment thread Objects/longobject.c
{
if PyLong_CheckExact(self) {
return PyTuple_Pack(2, self, _PyLong_One);
} else {

@sir-sigurd sir-sigurd Sep 14, 2018

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.

else { should be on the next line per PEP 7.

Sorry, something went wrong.

Uh oh!

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

serhiy-storchaka reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

@eric-wieser eric-wieser Sep 14, 2018

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.

Missing parens on the if too

Sorry, something went wrong.

Uh oh!

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

serhiy-storchaka reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
eric-wieser
eric-wieser reviewed Sep 14, 2018
View reviewed changes
Comment thread Objects/longobject.c Resolved

Uh oh!

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

eric-wieser
eric-wieser reviewed Sep 14, 2018
View reviewed changes
Comment thread Objects/longobject.c Resolved

Uh oh!

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

@rhettinger
rhettinger merged commit 5ac7043 into python:master Sep 14, 2018
@bedevere-bot bedevere-bot removed the awaiting merge label Sep 14, 2018
@eric-wieser

ghost commented Sep 14, 2018 •
edited by eric-wieser
Loading

Uh oh!

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

Copy link
Copy Markdown
Contributor

ISTM, the code is reasonable as-is.

Despite the missing null check and invalid C syntax that works only because of a macro?

sir-sigurd reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

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

@rhettinger

ghost commented Sep 14, 2018

Copy link
Copy Markdown
Contributor

Eric, I didn't see your comments prior to merging. See PR 9297 for the cleanup. The part that was fine as-is was using PyTuple_Pack() on two different code paths.

All reactions

Sorry, something went wrong.

Uh oh!

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

@eric-wieser

ghost commented Sep 14, 2018 •
edited by eric-wieser
Loading

Uh oh!

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

Copy link
Copy Markdown
Contributor

Agreed, the two code paths thing was unimportant. #9297 seems to address all my comments, other than the question about nb_index, which is tangential anyway

All reactions

Sorry, something went wrong.

Uh oh!

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

@rhettinger

ghost commented Sep 14, 2018

Copy link
Copy Markdown
Contributor

Can you note your review on 9297 please.

All reactions

Sorry, something went wrong.

Uh oh!

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

@eric-wieser

ghost commented Sep 14, 2018

Copy link
Copy Markdown
Contributor

If that's aimed at me, I don't know what you're asking me to do.

All reactions

Sorry, something went wrong.

Uh oh!

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

serhiy-storchaka
serhiy-storchaka reviewed Sep 14, 2018
View reviewed changes

ghost 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.

This PR was merged too soon. There are several issues with it. See also comments by @sir-sigurd and @eric-wieser.

Sorry, something went wrong.

Uh oh!

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

All reactions
Comment thread Lib/test/test_long.py
self.assertEqual(False.as_integer_ratio(), (0, 1))
assert(type(True.as_integer_ratio()[0]) == int)
assert(type(False.as_integer_ratio()[0]) == int)
self.assertEqual(type(True.as_integer_ratio()[0]), int)

ghost Sep 14, 2018

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.

Test also the denumerator type.

Sorry, something went wrong.

Uh oh!

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

All reactions
Comment thread Objects/longobject.c
if PyLong_CheckExact(self) {
return PyTuple_Pack(2, self, _PyLong_One);
} else {
PyObject *numerator = _PyLong_Copy(self);

ghost Sep 14, 2018

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.

Use the same same code as for for the numerator getter.

Test the result for NULL.

Sorry, something went wrong.

Uh oh!

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

All reactions
Comment thread Doc/whatsnew/3.8.rst
was lifted.
(Contributed by Serhiy Storchaka in :issue:`32489`.)

* The ``int`` type now has a new ``as_integer_ratio`` method compatible

ghost Sep 14, 2018

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.

Add links:

:class:`int`
:meth:`~int.as_integer_ratio`
:meth:`float.as_integer_ratio`

Sorry, something went wrong.

Uh oh!

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

All reactions
@serhiy-storchaka

ghost commented Sep 14, 2018

Copy link
Copy Markdown
Member

Reviving a comment hidden away above - should operator.index / PyNumber_Index / int->tp_as_number->nb_index call _PyLong_Copy too for consistency?

This is a different issue. And I think that it should not.

All reactions

Sorry, something went wrong.

Uh oh!

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

@skirpichev skirpichev mentioned this pull request Feb 12, 2023
gh-101825: mention, that as_integer_ratio() output is normalized #101843
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@rhettinger rhettinger rhettinger approved these changes
@serhiy-storchaka serhiy-storchaka serhiy-storchaka left review comments
@pablogsal pablogsal pablogsal left review comments
+5 more reviewers
@eric-wieser eric-wieser eric-wieser left review comments
@sir-sigurd sir-sigurd sir-sigurd left review comments
@eamanu eamanu eamanu left review comments
@ZackerySpytz ZackerySpytz ZackerySpytz left review comments
@mdickinson mdickinson mdickinson left review comments
Reviewers whose approvals may not affect merge requirements

Uh oh!

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

Assignees

@rhettinger rhettinger

Labels

type-feature A feature request or enhancement

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.

11 participants

@lisroach @mdickinson @bedevere-bot @eric-wieser @rhettinger @serhiy-storchaka @sir-sigurd @eamanu @pablogsal @ZackerySpytz @the-knights-who-say-ni
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.