comparison Python/pythonrun.c @ 21251:45e1177424e1 legacy-trunk

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>.
author Tim Peters <tim.peters@gmail.com>
date Thu, 06 Dec 2001 06:23:26 +0000
parents 379fc66f4c96
children 43b8a962a32a
comparison
equal deleted inserted replaced
21250:b26d58b9810c 21251:45e1177424e1
62 int Py_NoSiteFlag; /* Suppress 'import site' */ 62 int Py_NoSiteFlag; /* Suppress 'import site' */
63 int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */ 63 int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */
64 int Py_FrozenFlag; /* Needed by getpath.c */ 64 int Py_FrozenFlag; /* Needed by getpath.c */
65 int Py_UnicodeFlag = 0; /* Needed by compile.c */ 65 int Py_UnicodeFlag = 0; /* Needed by compile.c */
66 int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */ 66 int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */
67 /* _XXX Py_QnewFlag should go away in 2.3. It's true iff -Qnew is passed,
68 on the command line, and is used in 2.2 by ceval.c to make all "/" divisions
69 true divisions (which they will be in 2.3). */
70 int _Py_QnewFlag = 0;
67 71
68 static int initialized = 0; 72 static int initialized = 0;
69 73
70 /* API to access the initialized flag -- useful for esoteric use */ 74 /* API to access the initialized flag -- useful for esoteric use */
71 75