Skip to content

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

Open
wants to merge 9 commits into
base: main
Choose a base branch
from

Conversation

rhshadrach
Copy link
Member

@rhshadrach rhshadrach commented May 20, 2025

  • closes #xxxx (Replace xxxx with the GitHub issue number)
  • Tests added and passed if fixing a bug or adding a new feature
  • All code checks passed.
  • Added type annotations to new arguments/methods/functions.
  • Added an entry in the latest 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

Comment on lines 94 to 97
class PandasChangeWarning(Warning):
"""
Warning raised for any an upcoming change.
"""
Copy link
Member Author

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!

Copy link
Member Author

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.

@rhshadrach rhshadrach added this to the 3.0 milestone May 20, 2025
@rhshadrach rhshadrach added Enhancement Warnings Warnings that appear or should be added to pandas PDEP pandas enhancement proposal labels May 20, 2025
@datapythonista datapythonista removed the PDEP pandas enhancement proposal label May 20, 2025
@datapythonista
Copy link
Member

Seems like the label PDEP can only be used for the PDEP themselves. Otherwise building the website fails, as it expects the PR to be a PDEP that needs to be rendered in the roadmap.

Copy link
Contributor

@Dr-Irv Dr-Irv left a 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.

@rhshadrach
Copy link
Member Author

@Dr-Irv - Thanks for the review! I'm negative on the name PandasWarning for a class that has to do with deprecations. pandas emits many warnings, not all are about deprecations.

@Dr-Irv
Copy link
Contributor

Dr-Irv commented May 21, 2025

@Dr-Irv - Thanks for the review! I'm negative on the name PandasWarning for a class that has to do with deprecations. pandas emits many warnings, not all are about deprecations.

Maybe a different name would solve that? Maybe PandasDeprecationOrFutureWarning or something like that.

@rhshadrach
Copy link
Member Author

Maybe a different name would solve that? Maybe PandasDeprecationOrFutureWarning or something like that.

Currently using PandasChangeWarning, which has my personal preference so far. Always open to other options or opinions!

Copy link
Member

@Aloqeely Aloqeely left a 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!

@@ -91,6 +91,96 @@ class PerformanceWarning(Warning):
"""


class PandasChangeWarning(Warning):
"""
Warning raised for any an upcoming change.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Warning raised for any an upcoming change.
Warning raised for any upcoming change.

Comment on lines 157 to 160

See Also
--------
errors.Pandas4Warning : Class for deprecations to be enforced in pandas 4.0.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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
Copy link
Member

@Aloqeely Aloqeely May 30, 2025

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.

Copy link
Member Author

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.

Copy link
Member Author

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.

@rhshadrach
Copy link
Member Author

I think there should be separate docs about the deprecation policy and these classes, aside from what is in the whatsnew document.

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.

Copy link
Contributor

@Dr-Irv Dr-Irv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good!


See Also
--------
errors.Pandas4Warning : Class for deprecations to be enforced in pandas 4.0.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this be errors.PandasDeprecationWarning ? i.e., the see also should refer to the general non-version specific class

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Absolutely no objection to changing it, but I'm curious as to the reason. I added the See Also sections only because our code-checks fail without it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because otherwise we'd have to change the docs with each new release.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks - I added line items here for all classes that aren't versioned (and the class itself).


See Also
--------
errors.Pandas4Warning : Class for deprecations to be enforced in pandas 4.0.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same comment as above


See Also
--------
errors.Pandas4Warning : Class for deprecations to be enforced in pandas 4.0.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

Comment on lines 152 to 154
See Also
--------
errors.Pandas4Warning : Class for deprecations to be enforced in pandas 4.0.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe delete this? Otherwise we have to update this docs upon every new major release.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change it to a PandasDeprecationWarning instead? Otherwise we'll have to add an exception to the code-checks to allow a docstring without any See Also.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cross referencing to PandasDeprecationWarning makes sense, and then PandasDeprecationWarning can cross-reference to PandasFutureWarning

Comment on lines 9 to 25
def f1():
warnings.warn("f1", PandasChangeWarning)


def test_function_warns_pandas_deprecation_warning():
with tm.assert_produces_warning(PandasChangeWarning):
f1()


@deprecate_kwarg(PandasChangeWarning, "old", new_arg_name="new")
def f2(new=0):
return new


def test_decorator_warns_pandas_deprecation_warning():
with tm.assert_produces_warning(PandasChangeWarning):
f2(old=1)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't you add tests for PandasDeprecationWarning, PandasFutureWarning and PandasPendingDeprecationWarning ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I deleted this file and added one more test to tests/test_errors.py.

@rhshadrach rhshadrach requested a review from Dr-Irv June 4, 2025 00:42
@rhshadrach
Copy link
Member Author

@bashtage - pandas_datareader is using the deprecate_kwarg decorator. I'm modifying it here, is this an issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement Warnings Warnings that appear or should be added to pandas
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants