Kaydet (Commit) 28104c58 authored tarafından Christian Heimes's avatar Christian Heimes

Expose Py_Py3kWarningFlag as sys.py3kwarning as discussed in #1504

Also added a warning.warnpy3k() as convenient method for Python 3.x related deprecation warnings.
üst 715ec181
...@@ -200,6 +200,14 @@ Available Functions ...@@ -200,6 +200,14 @@ Available Functions
was added in Python 2.5.) was added in Python 2.5.)
.. function:: warnpy3k(message[, category[, stacklevel]])
Issue a warning related to Python 3.x deprecation. Warnings are only shown
when Python is started with the -3 option. Like func:`warn` *message* must
be a string and *category* a subclass of :exc:`Warning`. :func:`warnpy3k`
is using :exc:`DeprecationWarning` as default warning class.
.. function:: showwarning(message, category, filename, lineno[, file]) .. function:: showwarning(message, category, filename, lineno[, file])
Write a warning to a file. The default implementation calls Write a warning to a file. The default implementation calls
......
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
This module is no longer required except for backward compatibility. This module is no longer required except for backward compatibility.
Objects of most types can now be created by calling the type object. Objects of most types can now be created by calling the type object.
""" """
from warnings import warn as _warn from warnings import warnpy3k as _warnpy3k
_warn("The 'new' module is not supported in 3.x, use the 'types' module " _warnpy3k("The 'new' module is not supported in 3.x, use the 'types' module "
"instead.", DeprecationWarning, 2) "instead.", stacklevel=2)
from types import ClassType as classobj from types import ClassType as classobj
from types import FunctionType as function from types import FunctionType as function
......
...@@ -125,6 +125,16 @@ def warn_explicit(message, category, filename, lineno, ...@@ -125,6 +125,16 @@ def warn_explicit(message, category, filename, lineno,
# Print message and context # Print message and context
showwarning(message, category, filename, lineno) showwarning(message, category, filename, lineno)
def warnpy3k(message, category=None, stacklevel=1):
"""Issue a deprecation warning for Python 3.x related changes.
Warnings are omitted unless Python is started with the -3 option.
"""
if sys.py3kwarning:
if category is None:
category = DeprecationWarning
warn(message, category, stacklevel+1)
def showwarning(message, category, filename, lineno, file=None): def showwarning(message, category, filename, lineno, file=None):
"""Hook to write a warning to a file; replace if you like.""" """Hook to write a warning to a file; replace if you like."""
if file is None: if file is None:
......
...@@ -12,6 +12,8 @@ What's New in Python 2.6 alpha 1? ...@@ -12,6 +12,8 @@ What's New in Python 2.6 alpha 1?
Core and builtins Core and builtins
----------------- -----------------
- Expose the Py_Py3kWarningFlag as sys.py3kwarning.
- Issue #1445: Fix a SystemError when accessing the ``cell_contents`` - Issue #1445: Fix a SystemError when accessing the ``cell_contents``
attribute of an empty cell object. attribute of an empty cell object.
...@@ -837,6 +839,8 @@ Library ...@@ -837,6 +839,8 @@ Library
Extension Modules Extension Modules
----------------- -----------------
- Added warnpy3k function to the warnings module.
- Marshal.dumps() now expects exact type matches for int, long, float, complex, - Marshal.dumps() now expects exact type matches for int, long, float, complex,
tuple, list, dict, set, and frozenset. Formerly, it would silently miscode tuple, list, dict, set, and frozenset. Formerly, it would silently miscode
subclasses of those types. Now, it raises a ValueError instead. subclasses of those types. Now, it raises a ValueError instead.
......
...@@ -1167,6 +1167,8 @@ _PySys_Init(void) ...@@ -1167,6 +1167,8 @@ _PySys_Init(void)
PyString_FromString(Py_GetExecPrefix())); PyString_FromString(Py_GetExecPrefix()));
SET_SYS_FROM_STRING("maxint", SET_SYS_FROM_STRING("maxint",
PyInt_FromLong(PyInt_GetMax())); PyInt_FromLong(PyInt_GetMax()));
SET_SYS_FROM_STRING("py3kwarning",
PyBool_FromLong(Py_Py3kWarningFlag));
#ifdef Py_USING_UNICODE #ifdef Py_USING_UNICODE
SET_SYS_FROM_STRING("maxunicode", SET_SYS_FROM_STRING("maxunicode",
PyInt_FromLong(PyUnicode_GetMax())); PyInt_FromLong(PyUnicode_GetMax()));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment