comparison Python/pythonrun.c @ 46430:47d9bbe10897

Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r62260 | gregory.p.smith | 2008-04-10 01:11:56 +0200 (Thu, 10 Apr 2008) | 2 lines better diagnostics ........ r62261 | gregory.p.smith | 2008-04-10 01:16:37 +0200 (Thu, 10 Apr 2008) | 3 lines Raise SystemError when size < 0 is passed into PyString_FromStringAndSize, PyBytes_FromStringAndSize or PyUnicode_FromStringAndSize. [issue2587] ........ r62266 | neal.norwitz | 2008-04-10 07:46:39 +0200 (Thu, 10 Apr 2008) | 5 lines Remove the test file before writing it in case there is no write permission. This might help fix some of the failures on Windows box(es). It doesn't hurt either way and ensure the tests are a little more self contained (ie have less assumptions). ........ r62271 | gregory.p.smith | 2008-04-10 21:50:36 +0200 (Thu, 10 Apr 2008) | 2 lines get rid of assert (size >= 0) now that an explicit if (size < 0) is in the code. ........ r62277 | andrew.kuchling | 2008-04-10 23:27:10 +0200 (Thu, 10 Apr 2008) | 1 line Remove forward-looking statement ........ r62278 | andrew.kuchling | 2008-04-10 23:28:51 +0200 (Thu, 10 Apr 2008) | 1 line Add punctuation ........ r62279 | andrew.kuchling | 2008-04-10 23:29:01 +0200 (Thu, 10 Apr 2008) | 1 line Use issue directive ........ r62289 | thomas.heller | 2008-04-11 15:05:38 +0200 (Fri, 11 Apr 2008) | 3 lines Move backwards compatibility macro to the correct place; PyIndex_Check() was introduced in Python 2.5. ........ r62290 | thomas.heller | 2008-04-11 16:20:26 +0200 (Fri, 11 Apr 2008) | 2 lines Performance improvements. ........ r62293 | christian.heimes | 2008-04-12 15:03:03 +0200 (Sat, 12 Apr 2008) | 2 lines Applied patch #2617 from Frank Wierzbicki wit some extras from me -J and -X are now reserved for Jython and non-standard arguments (e.g. IronPython). I've added some extra comments to make sure the reservation don't get missed in the future. ........ r62294 | georg.brandl | 2008-04-12 20:11:18 +0200 (Sat, 12 Apr 2008) | 2 lines Use absolute path in sys.path. ........ r62295 | georg.brandl | 2008-04-12 20:36:09 +0200 (Sat, 12 Apr 2008) | 2 lines #2615: small consistency update by Jeroen Ruigrok van der Werven. ........ r62296 | georg.brandl | 2008-04-12 21:00:20 +0200 (Sat, 12 Apr 2008) | 2 lines Add Jeroen. ........ r62297 | georg.brandl | 2008-04-12 21:05:37 +0200 (Sat, 12 Apr 2008) | 2 lines Don't offend snake lovers. ........ r62298 | gregory.p.smith | 2008-04-12 22:37:48 +0200 (Sat, 12 Apr 2008) | 2 lines fix compiler warnings ........ r62302 | gregory.p.smith | 2008-04-13 00:24:04 +0200 (Sun, 13 Apr 2008) | 3 lines socket.error inherits from IOError, it no longer needs listing in the all_errors tuple. ........ r62303 | brett.cannon | 2008-04-13 01:44:07 +0200 (Sun, 13 Apr 2008) | 8 lines Re-implement the 'warnings' module in C. This allows for usage of the 'warnings' code in places where it was previously not possible (e.g., the parser). It could also potentially lead to a speed-up in interpreter start-up if the C version of the code (_warnings) is imported over the use of the Python version in key places. Closes issue #1631171. ........ r62304 | gregory.p.smith | 2008-04-13 02:03:25 +0200 (Sun, 13 Apr 2008) | 3 lines Adds a profile-opt target for easy compilation of a python binary using gcc's profile guided optimization. ........ r62305 | brett.cannon | 2008-04-13 02:18:44 +0200 (Sun, 13 Apr 2008) | 3 lines Fix a bug in PySys_HasWarnOption() where it was not properly checking the length of the list storing the warning options. ........ r62306 | brett.cannon | 2008-04-13 02:25:15 +0200 (Sun, 13 Apr 2008) | 2 lines Fix an accidental bug of an non-existent init function. ........ r62308 | andrew.kuchling | 2008-04-13 03:05:59 +0200 (Sun, 13 Apr 2008) | 1 line Mention -J, -X ........ r62311 | benjamin.peterson | 2008-04-13 04:20:05 +0200 (Sun, 13 Apr 2008) | 2 lines Give the "Interactive Interpreter Changes" section in 2.6 whatsnew a unique link name ........ r62313 | brett.cannon | 2008-04-13 04:42:36 +0200 (Sun, 13 Apr 2008) | 3 lines Fix test_warnings by making the state of things more consistent for each test when it is run. ........ r62314 | skip.montanaro | 2008-04-13 05:17:30 +0200 (Sun, 13 Apr 2008) | 2 lines spelling ........ r62315 | georg.brandl | 2008-04-13 09:07:44 +0200 (Sun, 13 Apr 2008) | 2 lines Fix markup. ........ r62319 | christian.heimes | 2008-04-13 11:30:17 +0200 (Sun, 13 Apr 2008) | 1 line Fix compiler warning Include/warnings.h:19:28: warning: no newline at end of file ........ r62320 | christian.heimes | 2008-04-13 11:33:24 +0200 (Sun, 13 Apr 2008) | 1 line Use PyString_InternFromString instead of PyString_FromString for static vars ........ r62321 | christian.heimes | 2008-04-13 11:37:05 +0200 (Sun, 13 Apr 2008) | 1 line Added new files to the pcbuild files ........
author Christian Heimes <christian@cheimes.de>
date Sun, 13 Apr 2008 13:53:33 +0000
parents 6196529afd73
children cda816c3a1e4
comparison
equal deleted inserted replaced
46423:e0c3acb116a5 46430:47d9bbe10897
82 int Py_DontWriteBytecodeFlag; /* Suppress writing bytecode files (*.py[co]) */ 82 int Py_DontWriteBytecodeFlag; /* Suppress writing bytecode files (*.py[co]) */
83 int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */ 83 int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */
84 int Py_FrozenFlag; /* Needed by getpath.c */ 84 int Py_FrozenFlag; /* Needed by getpath.c */
85 int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */ 85 int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */
86 86
87 /* Reference to 'warnings' module, to avoid importing it 87 /* PyModule_GetWarningsModule is no longer necessary as of 2.6
88 on the fly when the import lock may be held. See 683658/771097 88 since _warnings is builtin. This API should not be used. */
89 */ 89 PyObject *
90 static PyObject *warnings_module = NULL; 90 PyModule_GetWarningsModule(void)
91 91 {
92 /* Returns a borrowed reference to the 'warnings' module, or NULL. 92 return PyImport_ImportModule("warnings");
93 If the module is returned, it is guaranteed to have been obtained
94 without acquiring the import lock
95 */
96 PyObject *PyModule_GetWarningsModule(void)
97 {
98 PyObject *typ, *val, *tb;
99 PyObject *all_modules;
100 /* If we managed to get the module at init time, just use it */
101 if (warnings_module)
102 return warnings_module;
103 /* If it wasn't available at init time, it may be available
104 now in sys.modules (common scenario is frozen apps: import
105 at init time fails, but the frozen init code sets up sys.path
106 correctly, then does an implicit import of warnings for us
107 */
108 /* Save and restore any exceptions */
109 PyErr_Fetch(&typ, &val, &tb);
110
111 all_modules = PySys_GetObject("modules");
112 if (all_modules) {
113 warnings_module = PyDict_GetItemString(all_modules, "warnings");
114 /* We keep a ref in the global */
115 Py_XINCREF(warnings_module);
116 }
117 PyErr_Restore(typ, val, tb);
118 return warnings_module;
119 } 93 }
120 94
121 static int initialized = 0; 95 static int initialized = 0;
122 96
123 /* API to access the initialized flag -- useful for esoteric use */ 97 /* API to access the initialized flag -- useful for esoteric use */
253 227
254 _PyImportHooks_Init(); 228 _PyImportHooks_Init();
255 229
256 if (install_sigs) 230 if (install_sigs)
257 initsigs(); /* Signal handling stuff, including initintr() */ 231 initsigs(); /* Signal handling stuff, including initintr() */
232
233 /* Initialize warnings. */
234 _PyWarnings_Init();
235 if (PySys_HasWarnOptions()) {
236 PyObject *warnings_module = PyImport_ImportModule("warnings");
237 if (!warnings_module)
238 PyErr_Clear();
239 Py_XDECREF(warnings_module);
240 }
258 241
259 initmain(); /* Module __main__ */ 242 initmain(); /* Module __main__ */
260 if (initstdio() < 0) 243 if (initstdio() < 0)
261 Py_FatalError( 244 Py_FatalError(
262 "Py_Initialize: can't initialize sys standard streams"); 245 "Py_Initialize: can't initialize sys standard streams");
265 248
266 /* auto-thread-state API, if available */ 249 /* auto-thread-state API, if available */
267 #ifdef WITH_THREAD 250 #ifdef WITH_THREAD
268 _PyGILState_Init(interp, tstate); 251 _PyGILState_Init(interp, tstate);
269 #endif /* WITH_THREAD */ 252 #endif /* WITH_THREAD */
270
271 warnings_module = PyImport_ImportModule("warnings");
272 if (!warnings_module) {
273 PyErr_Clear();
274 }
275 else {
276 PyObject *o;
277 char *action[8];
278
279 if (Py_BytesWarningFlag > 1)
280 *action = "error";
281 else if (Py_BytesWarningFlag)
282 *action = "default";
283 else
284 *action = "ignore";
285
286 o = PyObject_CallMethod(warnings_module,
287 "simplefilter", "sO",
288 *action, PyExc_BytesWarning);
289 if (o == NULL)
290 Py_FatalError("Py_Initialize: can't initialize"
291 "warning filter for BytesWarning.");
292 Py_DECREF(o);
293 }
294 253
295 #if defined(HAVE_LANGINFO_H) && defined(CODESET) 254 #if defined(HAVE_LANGINFO_H) && defined(CODESET)
296 /* On Unix, set the file system encoding according to the 255 /* On Unix, set the file system encoding according to the
297 user's preference, if the CODESET names a well-known 256 user's preference, if the CODESET names a well-known
298 Python codec, and Py_FileSystemDefaultEncoding isn't 257 Python codec, and Py_FileSystemDefaultEncoding isn't
400 tstate = PyThreadState_GET(); 359 tstate = PyThreadState_GET();
401 interp = tstate->interp; 360 interp = tstate->interp;
402 361
403 /* Disable signal handling */ 362 /* Disable signal handling */
404 PyOS_FiniInterrupts(); 363 PyOS_FiniInterrupts();
405
406 /* drop module references we saved */
407 Py_XDECREF(warnings_module);
408 warnings_module = NULL;
409 364
410 /* Clear type lookup cache */ 365 /* Clear type lookup cache */
411 PyType_ClearCache(); 366 PyType_ClearCache();
412 367
413 /* Collect garbage. This may call finalizers; it's nice to call these 368 /* Collect garbage. This may call finalizers; it's nice to call these