-
-
Notifications
You must be signed in to change notification settings - Fork 30.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bpo-36004: Add date.fromisocalendar #11888
Conversation
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 |
221f2a7
to
3d3e6e7
Compare
Lib/test/datetimetester.py
Outdated
(None, 1, 1), | ||
(2019, None, 1), | ||
(2019, 1, None), | ||
(2019.0, 1, 1), |
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.
One thing I'll note is that this is consistent with datetime.date
itself not accepting floats. I'm not sure how much I agree with that, I just wanted to put it in the tests to ensure consistency between the C and Python versions.
I have made the requested changes; please review again. |
Thanks for making the requested changes! @pablogsal: please review the changes made to this pull request. |
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 we are missing an entry in Doc/whatsnew/3.8.rst
ba63b21
to
44f9adf
Compare
@pablogsal Indeed, I'm so used to adding these after the fact, it might be nice to actually have one merged with the change for once. Added. |
44f9adf
to
889f58c
Compare
889f58c
to
a9ba64d
Compare
a9ba64d
to
c514f03
Compare
c514f03
to
5f40dd5
Compare
Dismissed my review while I have to do another one to not block the PR
5f40dd5
to
535a713
Compare
(2004, 1, 1), # Leap year | ||
(2004, 12, 31), | ||
(1, 1, 1), | ||
(9999, 12, 31), |
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.
Maybe use MINYEAR/MAXYEAR here.
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.
Instead of converting these over, I have just added a MINYEAR
and MAXYEAR
test. Even though it's redundant, I like to have the explicit callout of the current boundaries, so that if MINYEAR
or MAXYEAR
get modified in a way that breaks backwards compatibility, it will raise an error.
(2019.0, 1, 1), | ||
(2019, 1.0, 1), | ||
(2019, 1, 1.0), | ||
] |
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.
Would it be possible to use 3 loops to test all combinations, rather than generate these combinations manualy?
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.
OK, I've converted it over. I think it's a little harder to understand what's going on in the version where the test cases are generated (compared to manual), but using a loop also has its advantages.
I forgot to say that more generally, I like the idea. I like the proposed new constructor, it perfectly makes sense. I just have some comments on the actual implementation. |
This commit implements the first version of date.fromisocalendar, the inverse function for date.isocalendar. It is currently missing error checking for the case of of invalid iso dates in week 53. bpo-36004: https://bugs.python.org/issue36004
This avoids an overflow error in ordinal calculations in the C implementation.
This is equivalent but uses only existing helper functions and in many cases will be slightly more efficient.
535a713
to
3307865
Compare
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.
LGTM.
Side note: @pganssle: maybe it would be interesting to convert datetime to Argument Clinic to provide better docstrings.
Random network issue, unrelated to this change. |
@vstinner Thanks for the review and merge, Victor! |
* Clarify impact on default behaviour of exec, eval, etc * Update documentation for changes to PyEval_GetLocals (pythongh-74929) Closes pythongh-11888
* Clarify impact on default behaviour of exec, eval, etc * Update documentation for changes to PyEval_GetLocals (pythongh-74929) Closes pythongh-11888 (cherry picked from commit 2180991) Co-authored-by: Alyssa Coghlan <[email protected]>
* Clarify impact on default behaviour of exec, eval, etc * Update documentation for changes to PyEval_GetLocals (pythongh-74929) Closes pythongh-11888
* Clarify impact on default behaviour of exec, eval, etc * Update documentation for changes to PyEval_GetLocals (pythongh-74929) Closes pythongh-11888
* Clarify impact on default behaviour of exec, eval, etc * Update documentation for changes to PyEval_GetLocals (pythongh-74929) Closes pythongh-11888
This commit implements the first version of
date.fromisocalendar
, the inverse function fordate.isocalendar
. It is currently missing error checking for the case of of invalid ISO dates in week 53.To Do:
TypeError
Other than these known errors, the existing code can be reviewed.Ready to go.bpo-36004
https://bugs.python.org/issue36004