Make the warnings module extensible

Hi, I have an API question for you. I would like to add a new parameter the the showwarning() function of the warnings module. Problem: it's not possible to do that without breaking the backward compatibility (when an application replaces warnings.showwarning(), the warnings allows and promotes that). I proposed a patch to add a new showmsg() function which takes a warnings.WarningMessage object: https://bugs.python.org/issue26568 The design is inspired by the logging module and its logging.LogRecord class. The warnings.WarningMessage already exists. Since it's class, it's easy to add new attributes without breaking the API. - If warnings.showwarning() is replaced by an application, this function will be called in practice to log the warning. - If warnings.showmsg() is replaced, again, this function will be called in practice. - If both functions are replaced, showmsg() will be called (replaced showwarning() is ignored) I'm not sure about function names: showmsg() and formatmsg(). Maybe: showwarnmsg() and formatwarnmsg()? Bikeshedding.... fight! The final goal is to log the traceback where the destroyed object was allocated when a ResourceWarning warning is logged: https://bugs.python.org/issue26567 Adding a new parameter to warnings make the implementation much more simple and gives more freedom to the logger to decide how to format the warning. Victor
participants (1)
-
Victor Stinner