]> granicus.if.org Git - python/commitdiff
Expose Py_Py3kWarningFlag as sys.py3kwarning as discussed in #1504
authorChristian Heimes <christian@cheimes.de>
Tue, 27 Nov 2007 23:16:44 +0000 (23:16 +0000)
committerChristian Heimes <christian@cheimes.de>
Tue, 27 Nov 2007 23:16:44 +0000 (23:16 +0000)
Also added a warning.warnpy3k() as convenient method for Python 3.x related deprecation warnings.

Doc/library/warnings.rst
Lib/new.py
Lib/warnings.py
Misc/NEWS
Python/sysmodule.c

index 6049f5d4a7a1277ff4626079d24dab481dfe580d..6188195c747b5b216f068408bd762c5ace5eb238 100644 (file)
@@ -200,6 +200,14 @@ Available Functions
    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])
 
    Write a warning to a file.  The default implementation calls
index a3298b67ad5255c39ec43db3dfaf75ab34f01528..1a5c11f2f3446cade653014ff43034e653b4a9af 100644 (file)
@@ -3,9 +3,9 @@
 This module is no longer required except for backward compatibility.
 Objects of most types can now be created by calling the type object.
 """
-from warnings import warn as _warn
-_warn("The 'new' module is not supported in 3.x, use the 'types' module "
-    "instead.", DeprecationWarning, 2)
+from warnings import warnpy3k as _warnpy3k
+_warnpy3k("The 'new' module is not supported in 3.x, use the 'types' module "
+    "instead.", stacklevel=2)
 
 from types import ClassType as classobj
 from types import FunctionType as function
index b7fac699766c41441f48c55c9a61c1facaee56e5..970d0ffade7f9ca3ce1f0b1ecdfdffb72db8a426 100644 (file)
@@ -125,6 +125,16 @@ def warn_explicit(message, category, filename, lineno,
     # Print message and context
     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):
     """Hook to write a warning to a file; replace if you like."""
     if file is None:
index d0df601beb3479843972eaed50dc6dc052341226..6af34e13056e7f7ce15a5adef0b29c7250876aee 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,8 @@ What's New in Python 2.6 alpha 1?
 Core and builtins
 -----------------
 
+- Expose the Py_Py3kWarningFlag as sys.py3kwarning.
+
 - Issue #1445: Fix a SystemError when accessing the ``cell_contents`` 
   attribute of an empty cell object.
 
@@ -837,6 +839,8 @@ Library
 Extension Modules
 -----------------
 
+- Added warnpy3k function to the warnings module.
+
 - Marshal.dumps() now expects exact type matches for int, long, float, complex,
   tuple, list, dict, set, and frozenset.  Formerly, it would silently miscode
   subclasses of those types.  Now, it raises a ValueError instead.
index 774a7db89b5c36ad67a8eb30132327acf0f4a024..617c38a2d754956c93f2275b15dc1bec901837a8 100644 (file)
@@ -1167,6 +1167,8 @@ _PySys_Init(void)
                            PyString_FromString(Py_GetExecPrefix()));
        SET_SYS_FROM_STRING("maxint",
                            PyInt_FromLong(PyInt_GetMax()));
+       SET_SYS_FROM_STRING("py3kwarning",
+                           PyBool_FromLong(Py_Py3kWarningFlag));
 #ifdef Py_USING_UNICODE
        SET_SYS_FROM_STRING("maxunicode",
                            PyInt_FromLong(PyUnicode_GetMax()));