[Python-Dev] switching on -3 from within a program?

Nick Coghlan ncoghlan at gmail.com
Wed Sep 17 12:06:18 CEST 2008


Benjamin Peterson wrote:
> def engage_py3k_warning():
>      flag = ctypes.c_int.in_dll(ctypes.pythonapi, "Py_Py3kWarningFlag")
>      flag.value = 1

Note that tricks like this won't necessarily enable all python 3
warnings for modules that have been imported before the flag gets set.
To avoid unnecessary performance penalties as a result of Py3k warnings,
modules are permitted to do things like:

def func():
  # Do whatever

if sys.py3kwarning:
  _orig_func = func
  def func():
    warnings.py3kwarn("Goes away in 3.0")
    _orig_func()

Modules that are first imported after the flag has been set will
obviously have all of their warnings properly enabled.

Cheers,
Nick.


-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------
            http://www.boredomandlaziness.org


More information about the Python-Dev mailing list