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

Anthon van der Neut anthon at mnt.org
Wed Sep 17 12:19:03 CEST 2008


Hi Nick,

I am aware of that (but others might not, so you are right to point this
out).

I did follow both Christian's and Benjamin's suggestions. The
implementation at the mod_wsgi C level, which is before any module
loading is more permanent, but the ctypes trick doesn't require an
apache2 restart, which is somewhat more comfortable.

Anthon

Nick Coghlan wrote:
> 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.
> 
> 


More information about the Python-Dev mailing list