summaryrefslogtreecommitdiffstats
path: root/Misc
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2001-12-06 06:23:26 (GMT)
committerTim Peters <tim.peters@gmail.com>2001-12-06 06:23:26 (GMT)
commit3caca2326e04ea3c0d1f8c6a588e646d8201af38 (patch)
tree8a1763afce3137836cd61eecf3b049b354f37462 /Misc
parente50959a58ef4f365295f0393cb980de890c0024a (diff)
downloadcpython-3caca2326e04ea3c0d1f8c6a588e646d8201af38.zip
cpython-3caca2326e04ea3c0d1f8c6a588e646d8201af38.tar.gz
cpython-3caca2326e04ea3c0d1f8c6a588e646d8201af38.tar.bz2
SF bug #488514: -Qnew needs work
Big Hammer to implement -Qnew as PEP 238 says it should work (a global option affecting all instances of "/"). pydebug.h, main.c, pythonrun.c: define a private _Py_QnewFlag flag, true iff -Qnew is passed on the command line. This should go away (as the comments say) when true division becomes The Rule. This is deliberately not exposed to runtime inspection or modification: it's a one-way one-shot switch to pretend you're using Python 3. ceval.c: when _Py_QnewFlag is set, treat BINARY_DIVIDE as BINARY_TRUE_DIVIDE. test_{descr, generators, zipfile}.py: fiddle so these pass under -Qnew too. This was just a matter of s!/!//! in test_generators and test_zipfile. test_descr was trickier, as testbinop() is passed assumptions that "/" is the same as calling a "__div__" method; put a temporary hack there to call "__truediv__" instead when the method name is "__div__" and 1/2 evaluates to 0.5. Three standard tests still fail under -Qnew (on Windows; somebody please try the Linux tests with -Qnew too! Linux runs a whole bunch of tests Windows doesn't): test_augassign test_class test_coercion I can't stay awake longer to stare at this (be my guest). Offhand cures weren't obvious, nor was it even obvious that cures are possible without major hackery. Question: when -Qnew is in effect, should calls to __div__ magically change into calls to __truediv__? See "major hackery" at tail end of last paragraph <wink>.
Diffstat (limited to 'Misc')
-rw-r--r--Misc/NEWS21
1 files changed, 16 insertions, 5 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index eabe9b6..db38eca 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -39,6 +39,13 @@ Type/class unification and new-style classes
Core and builtins
+- -Qnew now works as documented in PEP 238: when -Qnew is passed on
+ the command line, all occurrences of "/" use true division instead
+ of classic division. See the PEP for details. Note that "all"
+ means all instances in library and 3rd-party modules, as well as in
+ your own code. As the PEP says, -Qnew is intended for use only in
+ educational environments with control over the libraries in use.
+
Extension modules
- gc.get_referents was renamed to gc.get_referrers.
@@ -712,11 +719,15 @@ Core
warnings are issued. Using -Qwarn issues a run-time warning about
all uses of classic division for int and long arguments; -Qwarnall
also warns about classic division for float and complex arguments
- (for use with fixdiv.py). Using -Qnew is questionable; it turns on
- new division by default, but only in the __main__ module. You can
- usefully combine -Qwarn or -Qwarnall and -Qnew: this gives the
- __main__ module new division, and warns about classic division
- everywhere else.
+ (for use with fixdiv.py).
+ [Note: the remainder of this paragraph (preserved below) became
+ obsolete in 2.2c1 -- -Qnew has global effect in 2.2]
+ <obsolete>
+ Using -Qnew is questionable; it turns on new division by default, but
+ only in the __main__ module. You can usefully combine -Qwarn or
+ -Qwarnall and -Qnew: this gives the __main__ module new division, and
+ warns about classic division everywhere else.
+ </obsolete>
- Many built-in types can now be subclassed. This applies to int,
long, float, str, unicode, and tuple. (The types complex, list and