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.
diff --git a/Lib/new.py b/Lib/new.py
index a3298b6..1a5c11f 100644
--- a/Lib/new.py
+++ b/Lib/new.py
@@ -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
diff --git a/Lib/warnings.py b/Lib/warnings.py
index b7fac69..970d0ff 100644
--- a/Lib/warnings.py
+++ b/Lib/warnings.py
@@ -125,6 +125,16 @@
# 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: