Make *all* DeprecationWarnings stacklevel=2 or greater
|Reported by:||Owned by:||Aymeric Augustin|
|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 5 years ago by
|Patch needs improvement:||unset|
|Triage Stage:||Unreviewed → Accepted|
|Type:||Uncategorized → Cleanup/optimization|
comment:5 Changed 4 years ago by
|Owner:||changed from nickmartini to Aymeric Augustin|
|Status:||new → assigned|