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-41431: Add `datetime.time.strptime()` and `datetime.date.strptime()` by nineteendo · Pull Request #120752 · python/cpython

Conversation

@nineteendo

@nineteendo nineteendo commented Jun 19, 2024 •
edited
Loading

Uh oh!

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

Copy link
Copy Markdown
Contributor
  • Issue: Add datetime.time.strptime and datetime.date.strptime #41431

📚 Documentation preview 📚: library/datetime.html

Sorry, something went wrong.

Uh oh!

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

All reactions
nineteendo added 2 commits June 19, 2024 20:42
@nineteendo
Python implementation
654af5a
@nineteendo
C implementation
8ba282f
@bedevere-app bedevere-app Bot mentioned this pull request Jun 19, 2024
Add datetime.time.strptime and datetime.date.strptime #41431
Closed
nineteendo added 2 commits June 19, 2024 21:27
@nineteendo
Test date.strptime
24ca6e4
@nineteendo
Test time.strptime
21a1032
nineteendo
nineteendo commented Jun 19, 2024
View reviewed changes
Comment thread Lib/_strptime.py Resolved

Uh oh!

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

@blurb-it
📜🤖 Added by blurb_it.
a06468b
@nineteendo nineteendo changed the title gh-41431: Add datetime.time.strptime and datetime.date.strptime gh-41431: Add datetime.time.strptime() and datetime.date.strptime() Jun 19, 2024
nineteendo added 2 commits June 19, 2024 21:59
@nineteendo
Update whatsnew
34d5b51
@nineteendo
Update documentation
23b194f
nineteendo
nineteendo commented Jun 19, 2024
View reviewed changes
Comment thread Lib/_strptime.py Resolved

Uh oh!

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

@nineteendo
nineteendo marked this pull request as ready for review June 19, 2024 20:36
@nineteendo
nineteendo requested review from abalkin and pganssle as code owners June 19, 2024 20:36
@bedevere-app bedevere-app Bot added the awaiting review label Jun 19, 2024
@nineteendo

This comment was marked as resolved.

Sign in to view
@nineteendo
Add leap year note
648f414
nineteendo
nineteendo commented Jun 19, 2024
View reviewed changes
Comment thread Doc/library/datetime.rst Outdated
time tuple. See also :ref:`strftime-strptime-behavior` and
:meth:`date.fromisoformat`.

.. note

@nineteendo nineteendo Jun 19, 2024

Copy link
Copy Markdown
Contributor Author

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 it fine to have this note twice in the documentation?

Sorry, something went wrong.

Uh oh!

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

All reactions

@pganssle pganssle Sep 24, 2024

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 documentation experts will know better than me, but I think there's a way to define a substitution for this, like this:

|format-note|

.. |format-note| replace::
    If *format* specifies a day of month without a year a :exc:`DeprecationWarning` is emitted. This is to avoid a quadrenial leap year bug in code seeking to parse only a month and day, as the default year used when unspecified in the format is not a leap year. Such *format* values may raise an error in Python 3.15. The workaround is to always include a year in your *format*. If parsing *date_string* values that do not have a year, explicitly add a year that is a leap year before parsing:
    .. doctest::
        
        >> from datetime import date
        >> date_string = "02/29"
        >> when = date.strptime(f"{date_string};1984", "%m/%d;%Y")  # Avoids leap year bug.
        >> when.strftime("%B %d") # doctest: +SKIP
        'February 29'

.. versionadded:: 3.14

Then you put |format-note| in the other place as well.

Two other options:

  1. move this to a small fragment file (seems like overkill), and use an ..include directive with it.
  2. put the note in one place, then link to it in the other place (e.g. "See the note on :func:datetime.strptime").

I don't think there's a simple way to do it with a parameter, though.

Sorry, something went wrong.

Uh oh!

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

All reactions

@nineteendo nineteendo Sep 24, 2024

Copy link
Copy Markdown
Contributor Author

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 was just wondering if it was a problem it was mentioned twice. Do I link to datetime.strptime or is this fine?

Sorry, something went wrong.

Uh oh!

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

All reactions
@vstinner

vstinner commented Jun 20, 2024

Copy link
Copy Markdown
Member

@vstinner, would you like to review this? (You requested changes on the old pull request)

I skip my turn :-)

All reactions

Sorry, something went wrong.

Uh oh!

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

@nineteendo
Update 2024-06-19-19-53-42.gh-issue-41431.gnkUc5.rst
c4cbef0
picnixz
picnixz reviewed Jun 24, 2024
View reviewed changes

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

So I had a pending review that I forgot to send. Here are some comments!

Sorry, something went wrong.

Uh oh!

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

nineteendo reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Comment thread Modules/_datetimemodule.c Resolved

Uh oh!

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

Comment thread Doc/library/datetime.rst Resolved

Uh oh!

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

Comment thread Doc/library/datetime.rst Resolved

Uh oh!

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

Comment thread Doc/library/datetime.rst Resolved

Uh oh!

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

Comment thread Doc/library/datetime.rst Resolved

Uh oh!

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

Comment thread Doc/library/datetime.rst Resolved

Uh oh!

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

Comment thread Lib/_pydatetime.py Resolved

Uh oh!

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

Comment thread Lib/_pydatetime.py Resolved

Uh oh!

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

Comment thread Lib/_strptime.py Resolved

Uh oh!

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

Comment thread Modules/_datetimemodule.c Resolved

Uh oh!

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

picnixz
picnixz reviewed Jun 24, 2024
View reviewed changes
Comment thread Misc/NEWS.d/next/Library/2024-06-19-19-53-42.gh-issue-41431.gnkUc5.rst Resolved

Uh oh!

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

nineteendo and others added 8 commits June 24, 2024 09:39
@nineteendo @picnixz
Apply suggestions from code review
a6a2083
Co-authored-by: Bénédikt Tran <[email protected]>
@nineteendo
Remove parentheses
d7525b4
@nineteendo
Use helper function
a5486de
@nineteendo
Remove bad return
f8bcdd3
@nineteendo
Link to github issue
ff80f60
@nineteendo
Merge branch 'main' into add-datetime.strptime
8433545
@nineteendo
Merge branch 'main' into add-datetime.strptime
76a0374
@nineteendo
Fix directive
3f6b729
pganssle
pganssle requested changes Sep 24, 2024
View reviewed changes

@pganssle pganssle 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 looks great so far! I have some suggestions here mostly about the tests.

I'm also working on some hypothesis based tests for this, because there are a couple of properties that we can easily and usefully test here, specifically:

  1. dt == dt.strptime(dt.strftime(format), format) == dt
  2. my_datetime.strftime(format_with_just_dates).date() == my_datetime.date().strftime(format_with_just_dates)
  3. my_datetime.strftime(format_with_just_times).time() == my_datetime.time().strftime(format_with_just_times)

I think the key will just be getting a good hypothesis strategy that generates the format strings.

Sorry, something went wrong.

Uh oh!

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

All reactions
Comment thread Lib/test/datetimetester.py Resolved

Uh oh!

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

Comment thread Lib/test/datetimetester.py Resolved

Uh oh!

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

Comment thread Lib/_strptime.py Resolved

Uh oh!

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

Comment thread Lib/test/datetimetester.py Resolved

Uh oh!

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

Comment thread Lib/test/datetimetester.py Resolved

Uh oh!

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

@bedevere-app bedevere-app Bot added awaiting changes and removed awaiting review labels Sep 24, 2024
@bedevere-app

bedevere-app Bot commented Sep 24, 2024

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.

nineteendo and others added 2 commits September 25, 2024 07:46
@nineteendo @pganssle
Apply suggestions from code review
6cabc24
Co-authored-by: Paul Ganssle <[email protected]>
@nineteendo
Fix test cases
f682985
@pganssle pganssle mentioned this pull request Sep 25, 2024
gh-107862: Add property tests for strftime/strptime #124550
Draft
2 tasks
pganssle
pganssle approved these changes Sep 25, 2024
View reviewed changes

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

Awesome, looks good to me! Glad to finally have this done!

Sorry, something went wrong.

Uh oh!

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

All reactions
@bedevere-app bedevere-app Bot added awaiting merge and removed awaiting changes labels Sep 25, 2024
@pganssle
pganssle merged commit 9968caa into python:main Sep 25, 2024
@bedevere-app bedevere-app Bot removed the awaiting merge label Sep 25, 2024
@pganssle

pganssle commented Sep 25, 2024

Copy link
Copy Markdown
Member

Thanks @nineteendo! Really great work on this one. Thanks for your patience waiting for reviews and your quick response when the reviews came!

nineteendo reacted with heart emoji
All reactions
  • ❤️ 1 reaction

Sorry, something went wrong.

Uh oh!

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

emilyemorehouse added a commit to lysnikolaou/cpython that referenced this pull request Sep 26, 2024
@emilyemorehouse
Merge branch 'main' into fix-help-double-prompt
4cdb3ae
* main: (69 commits)
  Add "annotate" SET_FUNCTION_ATTRIBUTE bit to dis. (python#124566)
  pythongh-124412: Add helpers for converting annotations to source format (python#124551)
  pythongh-119180: Disallow instantiation of ConstEvaluator objects (python#124561)
  For-else deserves its own section in the tutorial (python#123946)
  Add 3.13 as a version option to the crash issue template (python#124560)
  pythongh-123242: Note that type.__annotations__ may not exist (python#124557)
  pythongh-119180: Make FORWARDREF format look at __annotations__ first (python#124479)
  pythonGH-58058: Add quick reference for `ArgumentParser` to argparse docs (pythongh-124227)
  pythongh-41431: Add `datetime.time.strptime()` and `datetime.date.strptime()` (python#120752)
  pythongh-102450: Add ISO-8601 alternative for midnight to `fromisoformat()` calls. (python#105856)
  pythongh-124370: Add "howto" for free-threaded Python (python#124371)
  pythongh-121277: Allow `.. versionadded:: next` in docs (pythonGH-121278)
  pythongh-119400:  make_ssl_certs: update reference test data automatically, pass in expiration dates as parameters python#119400  (pythonGH-119401)
  pythongh-119180: Avoid going through AST and eval() when possible in annotationlib (python#124337)
  pythongh-124448: Update Windows builds to use Tcl/Tk 8.6.15 (pythonGH-124449)
  pythongh-123884 Tee of tee was not producing n independent iterators (pythongh-124490)
  pythongh-124378: Update test_ttk for Tcl/Tk 8.6.15 (pythonGH-124542)
  pythongh-124513: Check args in framelocalsproxy_new() (python#124515)
  pythongh-101100: Add a table of class attributes to the "Custom classes" section of the data model docs (python#124480)
  Doc: Use ``major.minor`` for documentation distribution archive filenames (python#124489)
  ...
@nineteendo
nineteendo deleted the add-datetime.strptime branch September 26, 2024 06:11
@nineteendo

nineteendo commented Sep 26, 2024

Copy link
Copy Markdown
Contributor Author

Can you close the issue?

All reactions

Sorry, something went wrong.

Uh oh!

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

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

Reviewers

@picnixz picnixz picnixz left review comments
@pganssle pganssle pganssle approved these changes
@abalkin abalkin Awaiting requested review from abalkin

Uh oh!

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

Assignees

No one assigned

Labels

None yet

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.

4 participants

@nineteendo @vstinner @pganssle @picnixz
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.