Make *all* DeprecationWarnings stacklevel=2 or greater
|Reported by:||MostAwesomeDude@…||Owned by:||aaugustin|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
This is a testing-the-waters ticket, as I don't want to code this up without some discussion.
DeprecationWarning is very useless without sufficient stack information pointing out who is calling the deprecated callable. Many DeprecationWarnings in Django have the default stacklevel of 1, causing the warning to reference the original file:line where the warning was raised, but it would be much more helpful to raise with a stacklevel of 2, pointing to the *caller* who called the deprecated callable.
Even changing just a few of them, however, has caused a massive propagation of warnings while testing, which tells me that there are many places in Django where deprecated code is being called from obstensibly non-deprecated functions. Is there a reason for not placing DeprecationWarnings at the outer edges of Django's interface?
I searched through the tickets for a bit before deciding that nobody had filed this before.
Change History (7)
comment:1 Changed 3 years ago by carljm
- Needs documentation unset
- Needs tests unset
- Patch needs improvement unset
- Triage Stage changed from Unreviewed to Accepted
- Type changed from Uncategorized to Cleanup/optimization
comment:3 Changed 3 years ago by nickmartini
- Has patch set
comment:5 Changed 3 years ago by aaugustin
- Owner changed from nickmartini to aaugustin
- Status changed from new to assigned