pandas icon indicating copy to clipboard operation
pandas copied to clipboard

TST: Disallow bare tm.assert_produces_warning

Open Aloqeely opened this issue 1 year ago • 6 comments

Our tests currently ensure that warnings are triggered whenever appropriate, but to ensure end users get a correct and meaningful warning message, we should also make sure the correct warning message is surfaced whenever we check for a warning.

And so I propose we start enforcing the usage of the match argument in all uses of tm.assert_produces_warning.

Using the regex assert_produces_warning\([a-zA-Z]*\), I was able to find around 200 bare uses of assert_produces_warning, and some of them are checking that warnings are not raised, so this will be an easy task to finish and would be a good way for new contributors to get familiar with the pandas codebase.

If all agree, then we can open a new issue which would have instructions for how to find the bare uses, and maybe we can enforce this using our linter. We could also implement a method tm.external_warning_produced similiar to tm.external_error_raised, which would be equivalent to using tm.assert_produces_warning(warning, match=None)

See also #23922, #30999 and #37261.

Aloqeely avatar Apr 17 '24 12:04 Aloqeely

Hey, is this still available to pick up? If yes, I'd like to take it as an open-source beginner.

chaarvii avatar Jun 26 '24 21:06 chaarvii

Yes, but the easy part is mostly done. What's left is to enforce the match argument using our linter, which might be a bit hard for a beginner and so I'd recommend working on other issues instead.

But, feel free to work on this issue if you know what you're doing. PRs will be welcomed!

Aloqeely avatar Jun 26 '24 22:06 Aloqeely

Sure, I can give it a go. As far as I can see, I need to write a new script and edit pre-commit formatter. Does this sound reasonable?

chaarvii avatar Jun 27 '24 12:06 chaarvii

I've never worked with pre-commit but yeah I think it's something along these lines.

Note that when you work on this, you should exclude the uses of tm.assert_produces_warning(None) from needing the match argument since this checks that no warning is produced.

Good luck!

Aloqeely avatar Jun 27 '24 13:06 Aloqeely

Alright, thanks! I’ll assign myself to this issue.

chaarvii avatar Jun 27 '24 13:06 chaarvii

Take

chaarvii avatar Jun 27 '24 13:06 chaarvii

Hey, is there a list of files that should be deliberately excluded from this check? I found a few on the linked PR but I'm not sure if that's the complete list.

chaarvii avatar Jul 01 '24 20:07 chaarvii

I don't have a full list, sorry.

Aloqeely avatar Jul 01 '24 21:07 Aloqeely