-
-
Notifications
You must be signed in to change notification settings - Fork 18.7k
ENH: Implement PDEP-17 #61468
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
base: main
Are you sure you want to change the base?
ENH: Implement PDEP-17 #61468
Conversation
pandas/errors/__init__.py
Outdated
class PandasChangeWarning(Warning): | ||
""" | ||
Warning raised for any an upcoming change. | ||
""" |
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.
Not in love with this name, but PandasDeprecationWarning
is taken below. Bikeshedding here is most welcome!
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 could also make this internal if we want to not have it be public.
Seems like the label |
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 there should be separate docs about the deprecation policy and these classes, aside from what is in the whatsnew document.
@Dr-Irv - Thanks for the review! I'm negative on the name |
Maybe a different name would solve that? Maybe |
Currently using |
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 working on this!
pandas/errors/__init__.py
Outdated
@@ -91,6 +91,96 @@ class PerformanceWarning(Warning): | |||
""" | |||
|
|||
|
|||
class PandasChangeWarning(Warning): | |||
""" | |||
Warning raised for any an upcoming change. |
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.
Warning raised for any an upcoming change. | |
Warning raised for any upcoming change. |
pandas/errors/__init__.py
Outdated
|
||
See Also | ||
-------- | ||
errors.Pandas4Warning : Class for deprecations to be enforced in pandas 4.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.
See Also | |
-------- | |
errors.Pandas4Warning : Class for deprecations to be enforced in pandas 4.0. |
@@ -4,13 +4,16 @@ | |||
|
|||
import inspect | |||
|
|||
from pandas.errors import Pandas4Warning |
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.
Will this test case need to be updated every version? I think having a variable that points to the current version's warning might reduce some of the work.
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.
Then that variable will just have to be updated instead, seems about the same amount of work to me.
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 suppose if this is needed in multiple files, then it could become more of a hassle. Will add.
I've added some implementation details to PDEP-17, and more details to the whatsnew. If you'd like to see this documented somewhere else, can you detail where. |
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.
Looking good!
@bashtage - pandas_datareader is using the |
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'm good with the current version. I'll let others decide when to merge.
Co-authored-by: Simon Hawkins <simonjayhawkins@gmail.com>
@mroeschke - this should be ready. |
- :class:`pandas.errors.Pandas5Warning`: Warnings which will be enforced in pandas 5.0. | ||
- :class:`pandas.errors.PandasPendingDeprecationWarning`: Base class of all warnings which emit a ``PendingDeprecationWarning``, independent of the version they will be enforced. | ||
- :class:`pandas.errors.PandasDeprecationWarning`: Base class of all warnings which emit a ``DeprecationWarning``, independent of the version they will be enforced. | ||
- :class:`pandas.errors.PandasFutureWarning`: Base class of all warnings which emit a ``PandasFutureWarning``, independent of the version they will be enforced. |
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.
- :class:`pandas.errors.PandasFutureWarning`: Base class of all warnings which emit a ``PandasFutureWarning``, independent of the version they will be enforced. | |
- :class:`pandas.errors.PandasFutureWarning`: Base class of all warnings which emit a ``FutureWarning``, independent of the version they will be enforced. |
web/pandas/pdeps/0017-backwards-compatibility-and-deprecation-policy.md
Outdated
Show resolved
Hide resolved
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.
Can you think of a linting rule that could remind us to use these new warning classes instead of FutureWarning
and DeprecationWarning
?
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.
Can you think of a linting rule that could remind us to use these new warning classes instead of FutureWarning and DeprecationWarning?
…policy.md Co-authored-by: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com>
I think we can raise in My suggestion would be to move forward here, enforce pandas 3.0 deprecations, and revisit adding such logic to |
I can only build the docs in this PR if I specify |
pandas/util/_decorators.py
Outdated
keyword-only. If None, then the warning message won't | ||
specify any particular version. | ||
klass : Warning, optional |
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 this optional? None
has been removed from the annotations for klass
?
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!
@@ -58,8 +58,12 @@ Additionally, when one introduces a deprecation, they should: | |||
|
|||
### Which warning class to use | |||
|
|||
Deprecations should initially use ``DeprecationWarning``, and then be switched to ``FutureWarning`` for broader visibility in the last minor release before the major release they are planned to be removed in. | |||
This implementation detail can be ignored by using the appropriate ``PandasDeprecationWarning`` variable, which will be aliased to the proper warning class based on the pandas version. | |||
Starting in pandas 3.0, pandas will provide version-specific warnings. For example, ``Pandas4Warnings`` for all deprecation warnings that will be enforced in pandas 4.0. In addition to these, pandas exposes four additional classes to give users more control over pandas deprecation 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.
when changing a PDEP text, should the revision and date be bumped?
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 this was a real change, yes. I'd argue this is not: while the name of the classes have been expanded upon, this is an implementation detail that is not impactful to any users yet. E.g. users haven't taken some action to prepare their code for PandasDeprecationWarning
and now need to update it.
But happy to bump if others think differently.
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've had some PDEPs that have their status updated to "Implemented". Would we want to do that here?
doc/source/whatsnew/vX.X.X.rst
file if fixing a bug or adding a new feature.Continuation of #58169
Still needs tests and some cleanup with the docs and decorator arguments, but I'd like to get a first look.
cc @Dr-Irv @Aloqeely