in order to support users in finding bad code, we should introduce Warnings subclasses similar to django
for example RemovedInPytest40Warning(DeprecationWarning)
we can then use the normal warnings modules to start and show those warnings, and even error out once we do a release
this enables a few positives
- control over what deprecation show
- disconnect breaking a feature from removing its code
(a warning error can be disabled by users or subsequent releases depending on need)