Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.4k
gh-72346: Added isdst deprecation warning to email.utils.localtime#91450
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
I'm not sure why it says I haven't signed the CLA. I did just link it with my github account so it may take a moment to refresh I assume. |
Closing and re-opening to re-trigger the CLA check. |
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 good start, thanks!
It would need some documentation updating too.
Put a.. deprecated:: 3.11
under the function inemail.utils.rst
. For example, have a look at:
- https://docs.python.org/3.11/library/gzip.html#gzip.GzipFile.mtime
- https://github.com/python/cpython/blob/main/Doc/library/gzip.rst
And also list it on "What’s New In Python 3.11":
Uh oh!
There was an error while loading.Please reload this page.
@hugovk I've added the edits you've requested. Thanks for the quick review. |
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.
Thanks for the update!
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
@hugovk I've completed the changes you requested. |
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.
Thanks! Just a couple of minor style things!
Doc/library/email.utils.rst Outdated
@@ -26,6 +26,8 @@ module: | |||
.. versionadded:: 3.3 | |||
.. deprecated:: 3.11 | |||
Use of the ``isdst`` argument is deprecated. |
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 just noticed the style for parameters is italics (for example see the docstring):
Use of the``isdst`` argument is deprecated. | |
Use of the*isdst* argument is deprecated. |
Doc/whatsnew/3.11.rst Outdated
@@ -853,6 +853,9 @@ Deprecated | |||
(Contributed by Brett Cannon in :issue:`47061`.) | |||
* Deprecated the ``isdst`` parameter in :func:`email.utils.localtime`. |
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.
* Deprecated the``isdst`` parameter in:func:`email.utils.localtime`. | |
* Deprecated the*isdst* parameter in:func:`email.utils.localtime`. |
Lib/email/utils.py Outdated
@@ -345,6 +346,8 @@ def localtime(dt=None, isdst=-1): | |||
to divine whether summer time is in effect for the specified time. | |||
""" | |||
if isdst != -1: | |||
warnings._deprecated("The isdst parameter to localtime", remove=(3,13)) |
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 little nit :)
warnings._deprecated("The isdst parameter to localtime",remove=(3,13)) | |
warnings._deprecated("The isdst parameter to localtime",remove=(3,13)) |
hugovk left a comment• edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
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.
Thanks, looks good! Hopefully a core dev can take a look soon and trigger the CI.
Hi, just wanted to check if there was anything I could do to move this along. |
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 is a great start! A few things to fix up, though.
There will also need to be test changes for this, both to test that the deprecation warning is emitted as expected, and to prevent it from escaping where we don't want it.
Also, note that I'm not a maintainer of theemail
package, so these are just general suggestions to hopefully make this quicker and easier for one of them to accept :)
Lib/email/utils.py Outdated
@@ -345,6 +346,8 @@ def localtime(dt=None, isdst=-1): | |||
to divine whether summer time is in effect for the specified time. | |||
""" | |||
if isdst != -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.
We need to change the default value here to detect when someone is passing in-1
explicitly.None
is fine as the new default, or you could add_ignored = object()
just before this function and use_ignored
as the new default.
Lib/email/utils.py Outdated
@@ -345,6 +346,8 @@ def localtime(dt=None, isdst=-1): | |||
to divine whether summer time is in effect for the specified time. | |||
""" | |||
if isdst != -1: | |||
warnings._deprecated("The isdst parameter to localtime", remove=(3,13)) | |||
if dt is None: | |||
return datetime.datetime.now(datetime.timezone.utc).astimezone() | |||
if dt.tzinfo is not None: |
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.
As mentioned in the issue, this whole function can be reduced to just a thin wrapper arounddatetime.astimezone()
:
ifdtisNone:dt=datetime.datetime.now()returndt.astimezone()
(Extra code for the deprecated parameter not shown :))
Lib/email/utils.py Outdated
@@ -29,6 +29,7 @@ | |||
import socket | |||
import datetime | |||
import urllib.parse | |||
import warnings |
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.
Since this should generally not be necessary unless someone is passing in a value forisdst
, it can be imported where it's used.
Doc/library/email.utils.rst Outdated
@@ -26,6 +26,8 @@ module: | |||
.. versionadded:: 3.3 | |||
.. deprecated:: 3.11 |
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.
Since we're specifying in the code that it will be removed in 3.13, we can use thedeprecated-removed
directive here to also document when it will disappear.
Lib/email/utils.py Outdated
@@ -345,6 +346,8 @@ def localtime(dt=None, isdst=-1): | |||
to divine whether summer time is in effect for the specified time. |
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 docstring should be updated to remove everything aboutisdst
, and replace it with a simple note that the parameter is ignored. Similar in the documentation.
Lib/email/utils.py Outdated
@@ -345,6 +346,8 @@ def localtime(dt=None, isdst=-1): | |||
to divine whether summer time is in effect for the specified time. | |||
""" | |||
if isdst != -1: | |||
warnings._deprecated("The isdst parameter to localtime", remove=(3, 13)) |
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.
Unfortunately, the easy route here makes for an ugly message:'The isdst argument to localtime' is deprecated ...
. We need to specify our own message to make it prettier:
warnings._deprecated("The isdst parameter to localtime",remove=(3,13)) | |
warnings._deprecated( | |
"The 'isdst' parameter to 'localtime'", | |
message='{name}isdeprecatedandslatedforremovalinPython {remove}, | |
remove=(3,13), | |
) |
Doc/library/email.utils.rst Outdated
@@ -11,7 +11,7 @@ | |||
There are a couple of useful utilities provided in the :mod:`email.utils` | |||
module: | |||
.. function:: localtime(dt=None) | |||
.. function:: localtime(dt=None, isdst=-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.
Since it wasn't documented before and is being removed, we probably don't want to add it now :). The deprecation note can mention that it was previously undocumented.
Doc/whatsnew/3.11.rst Outdated
@@ -853,6 +853,9 @@ Deprecated | |||
(Contributed by Brett Cannon in :issue:`47061`.) | |||
* Deprecated the *isdst* parameter in :func:`email.utils.localtime`. | |||
(Contributed by Alan Williams in :issue:`72346`.) |
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.
:issue:`72346`
will direct tohttps://bugs.python.org/issue72346
, which doesn't exist :). This should now be:gh:`72346`
, IIUC.
bedevere-bot commentedApr 26, 2022
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 |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Although it seems that the Azure test isn't working properly (says it passed in the output, but is marked as failed), I have made the requested changes; please review again. |
bedevere-bot commentedSep 8, 2022
Thanks for making the requested changes! @zware: please review the changes made to this pull request. |
Hey@zware, any chance you can take a look at this? |
5 months later, yes! LGTM, sorry for the delay. |
Uh oh!
There was an error while loading.Please reload this page.
This adds a deprecation warning to the isdst parameter in email.utils.localtime. This is my first contribution so any feedback is welcome.