diff Python/future.c @ 19051:f20727cc3d0f legacy-trunk

Implement PEP 238 in its (almost) full glory. This introduces: - A new operator // that means floor division (the kind of division where 1/2 is 0). - The "future division" statement ("from __future__ import division) which changes the meaning of the / operator to implement "true division" (where 1/2 is 0.5). - New overloadable operators __truediv__ and __floordiv__. - New slots in the PyNumberMethods struct for true and floor division, new abstract APIs for them, new opcodes, and so on. I emphasize that without the future division statement, the semantics of / will remain unchanged until Python 3.0. Not yet implemented are warnings (default off) when / is used with int or long arguments. This has been on display since 7/31 as SF patch #443474. Flames to /dev/null.
author Guido van Rossum <guido@python.org>
date Wed, 08 Aug 2001 05:00:18 +0000
parents 4ac98fe7abd2
children 97a3d3d7029f
line wrap: on
line diff
--- a/Python/future.c	Wed Aug 08 01:30:38 2001 +0000
+++ b/Python/future.c	Wed Aug 08 05:00:18 2001 +0000
@@ -33,6 +33,8 @@
 			ff->ff_nested_scopes = 1;
 		} else if (strcmp(feature, FUTURE_GENERATORS) == 0) {
 			ff->ff_generators = 1;
+		} else if (strcmp(feature, FUTURE_DIVISION) == 0) {
+			ff->ff_division = 1;
 		} else if (strcmp(feature, "braces") == 0) {
 			PyErr_SetString(PyExc_SyntaxError,
 					"not a chance");
@@ -234,6 +236,7 @@
 	ff->ff_last_lineno = -1;
 	ff->ff_nested_scopes = 0;
 	ff->ff_generators = 0;
+	ff->ff_division = 0;
 
 	if (future_parse(ff, n, filename) < 0) {
 		PyMem_Free((void *)ff);