Mercurial > cpython-lru_cache-weakref
annotate Python/sysmodule.c @ 86823:17d730d37b2f
Issue #19410: Put back in special-casing of '' for
importlib.machinery.FileFinder.
While originally moved to stop special-casing '' as PathFinder farther
up the typical call chain now uses the cwd in the instance of '', it
was deemed an unnecessary risk to breaking subclasses of FileFinder to
take the special-casing out.
| author | Brett Cannon <brett@python.org> |
|---|---|
| date | Fri, 01 Nov 2013 10:37:57 -0400 |
| parents | 4ef4578db38a |
| children | a2f42d57b91d |
| rev | line source |
|---|---|
| 145 | 1 |
| 6 | 2 /* System module */ |
| 3 | |
| 4 /* | |
| 5 Various bits of information used by the interpreter are collected in | |
| 6 module 'sys'. | |
| 86 | 7 Function member: |
|
2586
ae131b8b4e31
fix comment about exit()
Guido van Rossum <guido@python.org>
parents:
2421
diff
changeset
|
8 - exit(sts): raise SystemExit |
| 6 | 9 Data members: |
| 10 - stdin, stdout, stderr: standard file objects | |
| 86 | 11 - modules: the table of modules (dictionary) |
| 6 | 12 - path: module search path (list of strings) |
| 86 | 13 - argv: script arguments (list of strings) |
| 14 - ps1, ps2: optional primary and secondary prompts (strings) | |
| 6 | 15 */ |
| 16 | |
| 5372 | 17 #include "Python.h" |
|
35742
1c4d192f1568
Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
35673
diff
changeset
|
18 #include "code.h" |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
19 #include "frameobject.h" |
|
69710
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
20 #include "pythread.h" |
| 86 | 21 |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
22 #include "osdefs.h" |
| 86 | 23 |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
24 #ifdef MS_WINDOWS |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
25 #define WIN32_LEAN_AND_MEAN |
|
43813
1561763cda72
No need to include windows.h twice
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
43777
diff
changeset
|
26 #include <windows.h> |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
27 #endif /* MS_WINDOWS */ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
28 |
|
4291
1427d61f1307
Rationalized MS ifdefs
Guido van Rossum <guido@python.org>
parents:
4256
diff
changeset
|
29 #ifdef MS_COREDLL |
|
3490
1dfc519ea3cb
Under NT, define sys.dllhandle and sys.winver (Mark H.).
Guido van Rossum <guido@python.org>
parents:
3326
diff
changeset
|
30 extern void *PyWin_DLLhModule; |
|
6352
b62a7a59414e
Get DLL version from a variable.
Guido van Rossum <guido@python.org>
parents:
5955
diff
changeset
|
31 /* A string loaded from the DLL at startup: */ |
|
b62a7a59414e
Get DLL version from a variable.
Guido van Rossum <guido@python.org>
parents:
5955
diff
changeset
|
32 extern const char *PyWin_DLLVersionString; |
|
3490
1dfc519ea3cb
Under NT, define sys.dllhandle and sys.winver (Mark H.).
Guido van Rossum <guido@python.org>
parents:
3326
diff
changeset
|
33 #endif |
|
1dfc519ea3cb
Under NT, define sys.dllhandle and sys.winver (Mark H.).
Guido van Rossum <guido@python.org>
parents:
3326
diff
changeset
|
34 |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
35 #ifdef __VMS |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
36 #include <unixlib.h> |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
37 #endif |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
38 |
|
29065
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
39 #ifdef HAVE_LANGINFO_H |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
40 #include <locale.h> |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
41 #include <langinfo.h> |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
42 #endif |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
43 |
| 5372 | 44 PyObject * |
|
42812
a99ec4befda8
Add const to input string parameters
Neal Norwitz <nnorwitz@gmail.com>
parents:
42703
diff
changeset
|
45 PySys_GetObject(const char *name) |
| 6 | 46 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
47 PyThreadState *tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
48 PyObject *sd = tstate->interp->sysdict; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
49 if (sd == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
50 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
51 return PyDict_GetItemString(sd, name); |
| 6 | 52 } |
| 53 | |
| 54 int | |
|
42812
a99ec4befda8
Add const to input string parameters
Neal Norwitz <nnorwitz@gmail.com>
parents:
42703
diff
changeset
|
55 PySys_SetObject(const char *name, PyObject *v) |
| 6 | 56 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
57 PyThreadState *tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
58 PyObject *sd = tstate->interp->sysdict; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
59 if (v == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
60 if (PyDict_GetItemString(sd, name) == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
61 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
62 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
63 return PyDict_DelItemString(sd, name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
64 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
65 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
66 return PyDict_SetItemString(sd, name, v); |
| 6 | 67 } |
| 68 | |
|
66719
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
69 /* Write repr(o) to sys.stdout using sys.stdout.encoding and 'backslashreplace' |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
70 error handler. If sys.stdout has a buffer attribute, use |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
71 sys.stdout.buffer.write(encoded), otherwise redecode the string and use |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
72 sys.stdout.write(redecoded). |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
73 |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
74 Helper function for sys_displayhook(). */ |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
75 static int |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
76 sys_displayhook_unencodable(PyObject *outf, PyObject *o) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
77 { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
78 PyObject *stdout_encoding = NULL; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
79 PyObject *encoded, *escaped_str, *repr_str, *buffer, *result; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
80 char *stdout_encoding_str; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
81 int ret; |
|
72925
7109f31300fb
Rename _Py_identifier to _Py_IDENTIFIER.
Martin v. Löwis <martin@v.loewis.de>
parents:
72848
diff
changeset
|
82 _Py_IDENTIFIER(encoding); |
|
7109f31300fb
Rename _Py_identifier to _Py_IDENTIFIER.
Martin v. Löwis <martin@v.loewis.de>
parents:
72848
diff
changeset
|
83 _Py_IDENTIFIER(buffer); |
|
66719
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
84 |
|
72848
81380082d216
Use identifier API for PyObject_GetAttrString.
Martin v. Löwis <martin@v.loewis.de>
parents:
72835
diff
changeset
|
85 stdout_encoding = _PyObject_GetAttrId(outf, &PyId_encoding); |
|
66719
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
86 if (stdout_encoding == NULL) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
87 goto error; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
88 stdout_encoding_str = _PyUnicode_AsString(stdout_encoding); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
89 if (stdout_encoding_str == NULL) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
90 goto error; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
91 |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
92 repr_str = PyObject_Repr(o); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
93 if (repr_str == NULL) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
94 goto error; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
95 encoded = PyUnicode_AsEncodedString(repr_str, |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
96 stdout_encoding_str, |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
97 "backslashreplace"); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
98 Py_DECREF(repr_str); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
99 if (encoded == NULL) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
100 goto error; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
101 |
|
72848
81380082d216
Use identifier API for PyObject_GetAttrString.
Martin v. Löwis <martin@v.loewis.de>
parents:
72835
diff
changeset
|
102 buffer = _PyObject_GetAttrId(outf, &PyId_buffer); |
|
66719
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
103 if (buffer) { |
|
72925
7109f31300fb
Rename _Py_identifier to _Py_IDENTIFIER.
Martin v. Löwis <martin@v.loewis.de>
parents:
72848
diff
changeset
|
104 _Py_IDENTIFIER(write); |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72510
diff
changeset
|
105 result = _PyObject_CallMethodId(buffer, &PyId_write, "(O)", encoded); |
|
66719
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
106 Py_DECREF(buffer); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
107 Py_DECREF(encoded); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
108 if (result == NULL) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
109 goto error; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
110 Py_DECREF(result); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
111 } |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
112 else { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
113 PyErr_Clear(); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
114 escaped_str = PyUnicode_FromEncodedObject(encoded, |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
115 stdout_encoding_str, |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
116 "strict"); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
117 Py_DECREF(encoded); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
118 if (PyFile_WriteObject(escaped_str, outf, Py_PRINT_RAW) != 0) { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
119 Py_DECREF(escaped_str); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
120 goto error; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
121 } |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
122 Py_DECREF(escaped_str); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
123 } |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
124 ret = 0; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
125 goto finally; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
126 |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
127 error: |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
128 ret = -1; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
129 finally: |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
130 Py_XDECREF(stdout_encoding); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
131 return ret; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
132 } |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
133 |
| 5372 | 134 static PyObject * |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
135 sys_displayhook(PyObject *self, PyObject *o) |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
136 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
137 PyObject *outf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
138 PyInterpreterState *interp = PyThreadState_GET()->interp; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
139 PyObject *modules = interp->modules; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
140 PyObject *builtins = PyDict_GetItemString(modules, "builtins"); |
|
66719
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
141 int err; |
|
72926
db4aa878cea2
Port SetAttrString/HasAttrString to SetAttrId/GetAttrId.
Martin v. Löwis <martin@v.loewis.de>
parents:
72925
diff
changeset
|
142 _Py_IDENTIFIER(_); |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
143 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
144 if (builtins == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
145 PyErr_SetString(PyExc_RuntimeError, "lost builtins module"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
146 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
147 } |
|
18805
4462c57f6c94
Patch number #422106 by Greg Ball, to fix segmentation
Moshe Zadka <moshez@math.huji.ac.il>
parents:
18689
diff
changeset
|
148 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
149 /* Print value except if None */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
150 /* After printing, also assign to '_' */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
151 /* Before, set '_' to None to avoid recursion */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
152 if (o == Py_None) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
153 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
154 return Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
155 } |
|
72926
db4aa878cea2
Port SetAttrString/HasAttrString to SetAttrId/GetAttrId.
Martin v. Löwis <martin@v.loewis.de>
parents:
72925
diff
changeset
|
156 if (_PyObject_SetAttrId(builtins, &PyId__, Py_None) != 0) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
157 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
158 outf = PySys_GetObject("stdout"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
159 if (outf == NULL || outf == Py_None) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
160 PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
161 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
162 } |
|
66719
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
163 if (PyFile_WriteObject(o, outf, 0) != 0) { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
164 if (PyErr_ExceptionMatches(PyExc_UnicodeEncodeError)) { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
165 /* repr(o) is not encodable to sys.stdout.encoding with |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
166 * sys.stdout.errors error handler (which is probably 'strict') */ |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
167 PyErr_Clear(); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
168 err = sys_displayhook_unencodable(outf, o); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
169 if (err) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
170 return NULL; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
171 } |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
172 else { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
173 return NULL; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
174 } |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
175 } |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
176 if (PyFile_WriteString("\n", outf) != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
177 return NULL; |
|
72926
db4aa878cea2
Port SetAttrString/HasAttrString to SetAttrId/GetAttrId.
Martin v. Löwis <martin@v.loewis.de>
parents:
72925
diff
changeset
|
178 if (_PyObject_SetAttrId(builtins, &PyId__, o) != 0) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
179 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
180 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
181 return Py_None; |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
182 } |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
183 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
184 PyDoc_STRVAR(displayhook_doc, |
| 17164 | 185 "displayhook(object) -> None\n" |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
186 "\n" |
|
59302
4b413dfa27f9
Merged revisions 78622 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55611
diff
changeset
|
187 "Print an object to sys.stdout and also save it in builtins._\n" |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
188 ); |
| 17164 | 189 |
| 190 static PyObject * | |
| 191 sys_excepthook(PyObject* self, PyObject* args) | |
| 192 { | |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
193 PyObject *exc, *value, *tb; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
194 if (!PyArg_UnpackTuple(args, "excepthook", 3, 3, &exc, &value, &tb)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
195 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
196 PyErr_Display(exc, value, tb); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
197 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
198 return Py_None; |
| 17164 | 199 } |
| 200 | |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
201 PyDoc_STRVAR(excepthook_doc, |
| 17164 | 202 "excepthook(exctype, value, traceback) -> None\n" |
| 203 "\n" | |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
204 "Handle an exception by displaying it with a traceback on sys.stderr.\n" |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
205 ); |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
206 |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
207 static PyObject * |
|
28119
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
208 sys_exc_info(PyObject *self, PyObject *noargs) |
|
5405
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
209 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
210 PyThreadState *tstate; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
211 tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
212 return Py_BuildValue( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
213 "(OOO)", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
214 tstate->exc_type != NULL ? tstate->exc_type : Py_None, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
215 tstate->exc_value != NULL ? tstate->exc_value : Py_None, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
216 tstate->exc_traceback != NULL ? |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
217 tstate->exc_traceback : Py_None); |
|
5405
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
218 } |
|
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
219 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
220 PyDoc_STRVAR(exc_info_doc, |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
221 "exc_info() -> (type, value, traceback)\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
222 \n\ |
|
28119
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
223 Return information about the most recent exception caught by an except\n\ |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
224 clause in the current stack frame or in an older stack frame." |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
225 ); |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
226 |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
227 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
228 sys_exit(PyObject *self, PyObject *args) |
| 6 | 229 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
230 PyObject *exit_code = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
231 if (!PyArg_UnpackTuple(args, "exit", 0, 1, &exit_code)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
232 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
233 /* Raise SystemExit so callers may catch it or clean up. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
234 PyErr_SetObject(PyExc_SystemExit, exit_code); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
235 return NULL; |
| 6 | 236 } |
| 237 | |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
238 PyDoc_STRVAR(exit_doc, |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
239 "exit([status])\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
240 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
241 Exit the interpreter by raising SystemExit(status).\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
242 If the status is omitted or None, it defaults to zero (i.e., success).\n\ |
|
85412
694e50a79638
#18839: document that sys.exit() will not accept a non-integer numeric value as exit status.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
84785
diff
changeset
|
243 If the status is an integer, it will be used as the system exit status.\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
244 If it is another kind of object, it will be printed and the system\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
245 exit status will be one (i.e., failure)." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
246 ); |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
247 |
|
20943
e4d380f5f297
Include sys_getdefaultencoding in #ifdef Py_USING_UNICODE. Fixes #479571.
Martin v. Löwis <martin@v.loewis.de>
parents:
20655
diff
changeset
|
248 |
| 5372 | 249 static PyObject * |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
250 sys_getdefaultencoding(PyObject *self) |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
251 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
252 return PyUnicode_FromString(PyUnicode_GetDefaultEncoding()); |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
253 } |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
254 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
255 PyDoc_STRVAR(getdefaultencoding_doc, |
|
12877
78231bbe605d
Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
12649
diff
changeset
|
256 "getdefaultencoding() -> string\n\ |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
257 \n\ |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
258 Return the current default string encoding used by the Unicode \n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
259 implementation." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
260 ); |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
261 |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
262 static PyObject * |
|
28174
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
263 sys_getfilesystemencoding(PyObject *self) |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
264 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
265 if (Py_FileSystemDefaultEncoding) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
266 return PyUnicode_FromString(Py_FileSystemDefaultEncoding); |
|
69077
a00b9a5688da
sys.getfilesystemencoding() raises a RuntimeError if initfsencoding() was not
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68489
diff
changeset
|
267 PyErr_SetString(PyExc_RuntimeError, |
|
a00b9a5688da
sys.getfilesystemencoding() raises a RuntimeError if initfsencoding() was not
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68489
diff
changeset
|
268 "filesystem encoding is not initialized"); |
|
a00b9a5688da
sys.getfilesystemencoding() raises a RuntimeError if initfsencoding() was not
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68489
diff
changeset
|
269 return NULL; |
|
28174
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
270 } |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
271 |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
272 PyDoc_STRVAR(getfilesystemencoding_doc, |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
273 "getfilesystemencoding() -> string\n\ |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
274 \n\ |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
275 Return the encoding used to convert Unicode filenames in\n\ |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
276 operating system filenames." |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
277 ); |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
278 |
|
49403
e822992cf6ce
Issue #3187: Add sys.setfilesystemencoding.
Martin v. Löwis <martin@v.loewis.de>
parents:
48499
diff
changeset
|
279 static PyObject * |
|
40484
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
280 sys_intern(PyObject *self, PyObject *args) |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
281 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
282 PyObject *s; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
283 if (!PyArg_ParseTuple(args, "U:intern", &s)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
284 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
285 if (PyUnicode_CheckExact(s)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
286 Py_INCREF(s); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
287 PyUnicode_InternInPlace(&s); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
288 return s; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
289 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
290 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
291 PyErr_Format(PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
292 "can't intern %.400s", s->ob_type->tp_name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
293 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
294 } |
|
40484
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
295 } |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
296 |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
297 PyDoc_STRVAR(intern_doc, |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
298 "intern(string) -> string\n\ |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
299 \n\ |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
300 ``Intern'' the given string. This enters the string in the (global)\n\ |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
301 table of interned strings whose purpose is to speed up dictionary lookups.\n\ |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
302 Return the string itself or the previously interned string object with the\n\ |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
303 same value."); |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
304 |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
305 |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
306 /* |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
307 * Cached interned string objects used for calling the profile and |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
308 * trace functions. Initialized by trace_init(). |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
309 */ |
|
31796
1c117dbb2def
Enable the profiling of C functions (builtins and extensions)
Nicholas Bastin <nick.bastin@gmail.com>
parents:
30108
diff
changeset
|
310 static PyObject *whatstrings[7] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL}; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
311 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
312 static int |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
313 trace_init(void) |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
314 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
315 static char *whatnames[7] = {"call", "exception", "line", "return", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
316 "c_call", "c_exception", "c_return"}; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
317 PyObject *name; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
318 int i; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
319 for (i = 0; i < 7; ++i) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
320 if (whatstrings[i] == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
321 name = PyUnicode_InternFromString(whatnames[i]); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
322 if (name == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
323 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
324 whatstrings[i] = name; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
325 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
326 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
327 return 0; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
328 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
329 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
330 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
331 static PyObject * |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
332 call_trampoline(PyThreadState *tstate, PyObject* callback, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
333 PyFrameObject *frame, int what, PyObject *arg) |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
334 { |
|
86715
4ef4578db38a
Issue #18408: Add a new PyFrame_FastToLocalsWithError() function to handle
Victor Stinner <victor.stinner@gmail.com>
parents:
86693
diff
changeset
|
335 PyObject *args; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
336 PyObject *whatstr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
337 PyObject *result; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
338 |
|
86715
4ef4578db38a
Issue #18408: Add a new PyFrame_FastToLocalsWithError() function to handle
Victor Stinner <victor.stinner@gmail.com>
parents:
86693
diff
changeset
|
339 args = PyTuple_New(3); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
340 if (args == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
341 return NULL; |
|
86715
4ef4578db38a
Issue #18408: Add a new PyFrame_FastToLocalsWithError() function to handle
Victor Stinner <victor.stinner@gmail.com>
parents:
86693
diff
changeset
|
342 if (PyFrame_FastToLocalsWithError(frame) < 0) |
|
4ef4578db38a
Issue #18408: Add a new PyFrame_FastToLocalsWithError() function to handle
Victor Stinner <victor.stinner@gmail.com>
parents:
86693
diff
changeset
|
343 return NULL; |
|
4ef4578db38a
Issue #18408: Add a new PyFrame_FastToLocalsWithError() function to handle
Victor Stinner <victor.stinner@gmail.com>
parents:
86693
diff
changeset
|
344 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
345 Py_INCREF(frame); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
346 whatstr = whatstrings[what]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
347 Py_INCREF(whatstr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
348 if (arg == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
349 arg = Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
350 Py_INCREF(arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
351 PyTuple_SET_ITEM(args, 0, (PyObject *)frame); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
352 PyTuple_SET_ITEM(args, 1, whatstr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
353 PyTuple_SET_ITEM(args, 2, arg); |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
354 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
355 /* call the Python-level function */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
356 result = PyEval_CallObject(callback, args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
357 PyFrame_LocalsToFast(frame, 1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
358 if (result == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
359 PyTraceBack_Here(frame); |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
360 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
361 /* cleanup */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
362 Py_DECREF(args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
363 return result; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
364 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
365 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
366 static int |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
367 profile_trampoline(PyObject *self, PyFrameObject *frame, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
368 int what, PyObject *arg) |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
369 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
370 PyThreadState *tstate = frame->f_tstate; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
371 PyObject *result; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
372 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
373 if (arg == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
374 arg = Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
375 result = call_trampoline(tstate, self, frame, what, arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
376 if (result == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
377 PyEval_SetProfile(NULL, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
378 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
379 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
380 Py_DECREF(result); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
381 return 0; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
382 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
383 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
384 static int |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
385 trace_trampoline(PyObject *self, PyFrameObject *frame, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
386 int what, PyObject *arg) |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
387 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
388 PyThreadState *tstate = frame->f_tstate; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
389 PyObject *callback; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
390 PyObject *result; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
391 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
392 if (what == PyTrace_CALL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
393 callback = self; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
394 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
395 callback = frame->f_trace; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
396 if (callback == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
397 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
398 result = call_trampoline(tstate, callback, frame, what, arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
399 if (result == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
400 PyEval_SetTrace(NULL, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
401 Py_XDECREF(frame->f_trace); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
402 frame->f_trace = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
403 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
404 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
405 if (result != Py_None) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
406 PyObject *temp = frame->f_trace; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
407 frame->f_trace = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
408 Py_XDECREF(temp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
409 frame->f_trace = result; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
410 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
411 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
412 Py_DECREF(result); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
413 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
414 return 0; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
415 } |
|
18136
4cb34314bd97
Instead of initializing & interning the strings passed to the profile
Fred Drake <fdrake@acm.org>
parents:
17396
diff
changeset
|
416 |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
417 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
418 sys_settrace(PyObject *self, PyObject *args) |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
419 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
420 if (trace_init() == -1) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
421 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
422 if (args == Py_None) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
423 PyEval_SetTrace(NULL, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
424 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
425 PyEval_SetTrace(trace_trampoline, args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
426 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
427 return Py_None; |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
428 } |
|
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
429 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
430 PyDoc_STRVAR(settrace_doc, |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
431 "settrace(function)\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
432 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
433 Set the global debug tracing function. It will be called on each\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
434 function call. See the debugger chapter in the library manual." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
435 ); |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
436 |
| 5372 | 437 static PyObject * |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
438 sys_gettrace(PyObject *self, PyObject *args) |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
439 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
440 PyThreadState *tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
441 PyObject *temp = tstate->c_traceobj; |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
442 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
443 if (temp == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
444 temp = Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
445 Py_INCREF(temp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
446 return temp; |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
447 } |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
448 |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
449 PyDoc_STRVAR(gettrace_doc, |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
450 "gettrace()\n\ |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
451 \n\ |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
452 Return the global debug tracing function set with sys.settrace.\n\ |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
453 See the debugger chapter in the library manual." |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
454 ); |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
455 |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
456 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
457 sys_setprofile(PyObject *self, PyObject *args) |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
458 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
459 if (trace_init() == -1) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
460 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
461 if (args == Py_None) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
462 PyEval_SetProfile(NULL, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
463 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
464 PyEval_SetProfile(profile_trampoline, args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
465 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
466 return Py_None; |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
467 } |
|
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
468 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
469 PyDoc_STRVAR(setprofile_doc, |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
470 "setprofile(function)\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
471 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
472 Set the profiling function. It will be called on each function call\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
473 and return. See the profiler chapter in the library manual." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
474 ); |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
475 |
| 5372 | 476 static PyObject * |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
477 sys_getprofile(PyObject *self, PyObject *args) |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
478 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
479 PyThreadState *tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
480 PyObject *temp = tstate->c_profileobj; |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
481 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
482 if (temp == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
483 temp = Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
484 Py_INCREF(temp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
485 return temp; |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
486 } |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
487 |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
488 PyDoc_STRVAR(getprofile_doc, |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
489 "getprofile()\n\ |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
490 \n\ |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
491 Return the profiling function set with sys.setprofile.\n\ |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
492 See the profiler chapter in the library manual." |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
493 ); |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
494 |
|
57175
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
495 static int _check_interval = 100; |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
496 |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
497 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
498 sys_setcheckinterval(PyObject *self, PyObject *args) |
|
2093
e8cafb2b743a
sys.check_interval=x -> sys.setcheckinterval(x)
Guido van Rossum <guido@python.org>
parents:
2062
diff
changeset
|
499 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
500 if (PyErr_WarnEx(PyExc_DeprecationWarning, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
501 "sys.getcheckinterval() and sys.setcheckinterval() " |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
502 "are deprecated. Use sys.setswitchinterval() " |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
503 "instead.", 1) < 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
504 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
505 if (!PyArg_ParseTuple(args, "i:setcheckinterval", &_check_interval)) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
506 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
507 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
508 return Py_None; |
|
2093
e8cafb2b743a
sys.check_interval=x -> sys.setcheckinterval(x)
Guido van Rossum <guido@python.org>
parents:
2062
diff
changeset
|
509 } |
|
e8cafb2b743a
sys.check_interval=x -> sys.setcheckinterval(x)
Guido van Rossum <guido@python.org>
parents:
2062
diff
changeset
|
510 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
511 PyDoc_STRVAR(setcheckinterval_doc, |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
512 "setcheckinterval(n)\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
513 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
514 Tell the Python interpreter to check for asynchronous events every\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
515 n instructions. This also affects how often thread switches occur." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
516 ); |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
517 |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
518 static PyObject * |
|
29765
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
519 sys_getcheckinterval(PyObject *self, PyObject *args) |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
520 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
521 if (PyErr_WarnEx(PyExc_DeprecationWarning, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
522 "sys.getcheckinterval() and sys.setcheckinterval() " |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
523 "are deprecated. Use sys.getswitchinterval() " |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
524 "instead.", 1) < 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
525 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
526 return PyLong_FromLong(_check_interval); |
|
29765
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
527 } |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
528 |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
529 PyDoc_STRVAR(getcheckinterval_doc, |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
530 "getcheckinterval() -> current check interval; see setcheckinterval()." |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
531 ); |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
532 |
|
57175
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
533 #ifdef WITH_THREAD |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
534 static PyObject * |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
535 sys_setswitchinterval(PyObject *self, PyObject *args) |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
536 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
537 double d; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
538 if (!PyArg_ParseTuple(args, "d:setswitchinterval", &d)) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
539 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
540 if (d <= 0.0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
541 PyErr_SetString(PyExc_ValueError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
542 "switch interval must be strictly positive"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
543 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
544 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
545 _PyEval_SetSwitchInterval((unsigned long) (1e6 * d)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
546 Py_INCREF(Py_None); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
547 return Py_None; |
|
57175
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
548 } |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
549 |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
550 PyDoc_STRVAR(setswitchinterval_doc, |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
551 "setswitchinterval(n)\n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
552 \n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
553 Set the ideal thread switching delay inside the Python interpreter\n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
554 The actual frequency of switching threads can be lower if the\n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
555 interpreter executes long sequences of uninterruptible code\n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
556 (this is implementation-specific and workload-dependent).\n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
557 \n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
558 The parameter must represent the desired switching delay in seconds\n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
559 A typical value is 0.005 (5 milliseconds)." |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
560 ); |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
561 |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
562 static PyObject * |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
563 sys_getswitchinterval(PyObject *self, PyObject *args) |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
564 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
565 return PyFloat_FromDouble(1e-6 * _PyEval_GetSwitchInterval()); |
|
57175
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
566 } |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
567 |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
568 PyDoc_STRVAR(getswitchinterval_doc, |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
569 "getswitchinterval() -> current thread switch interval; see setswitchinterval()." |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
570 ); |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
571 |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
572 #endif /* WITH_THREAD */ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
573 |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
574 #ifdef WITH_TSC |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
575 static PyObject * |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
576 sys_settscdump(PyObject *self, PyObject *args) |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
577 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
578 int bool; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
579 PyThreadState *tstate = PyThreadState_Get(); |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
580 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
581 if (!PyArg_ParseTuple(args, "i:settscdump", &bool)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
582 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
583 if (bool) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
584 tstate->interp->tscdump = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
585 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
586 tstate->interp->tscdump = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
587 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
588 return Py_None; |
|
36211
6d743e5baf14
Trimmed trailing whitespace.
Tim Peters <tim.peters@gmail.com>
parents:
36207
diff
changeset
|
589 |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
590 } |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
591 |
|
36211
6d743e5baf14
Trimmed trailing whitespace.
Tim Peters <tim.peters@gmail.com>
parents:
36207
diff
changeset
|
592 PyDoc_STRVAR(settscdump_doc, |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
593 "settscdump(bool)\n\ |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
594 \n\ |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
595 If true, tell the Python interpreter to dump VM measurements to\n\ |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
596 stderr. If false, turn off dump. The measurements are based on the\n\ |
| 33104 | 597 processor's time-stamp counter." |
|
36211
6d743e5baf14
Trimmed trailing whitespace.
Tim Peters <tim.peters@gmail.com>
parents:
36207
diff
changeset
|
598 ); |
|
32344
748129e6e108
Remove compiler warning
Neal Norwitz <nnorwitz@gmail.com>
parents:
32301
diff
changeset
|
599 #endif /* TSC */ |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
600 |
|
29765
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
601 static PyObject * |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
602 sys_setrecursionlimit(PyObject *self, PyObject *args) |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
603 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
604 int new_limit; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
605 if (!PyArg_ParseTuple(args, "i:setrecursionlimit", &new_limit)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
606 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
607 if (new_limit <= 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
608 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
609 "recursion limit must be positive"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
610 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
611 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
612 Py_SetRecursionLimit(new_limit); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
613 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
614 return Py_None; |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
615 } |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
616 |
|
61873
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
617 static PyTypeObject Hash_InfoType; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
618 |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
619 PyDoc_STRVAR(hash_info_doc, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
620 "hash_info\n\ |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
621 \n\ |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
622 A struct sequence providing parameters used for computing\n\ |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
623 numeric hashes. The attributes are read only."); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
624 |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
625 static PyStructSequence_Field hash_info_fields[] = { |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
626 {"width", "width of the type used for hashing, in bits"}, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
627 {"modulus", "prime number giving the modulus on which the hash " |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
628 "function is based"}, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
629 {"inf", "value to be used for hash of a positive infinity"}, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
630 {"nan", "value to be used for hash of a nan"}, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
631 {"imag", "multiplier used for the imaginary part of a complex number"}, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
632 {NULL, NULL} |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
633 }; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
634 |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
635 static PyStructSequence_Desc hash_info_desc = { |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
636 "sys.hash_info", |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
637 hash_info_doc, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
638 hash_info_fields, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
639 5, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
640 }; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
641 |
|
62828
1f37d082a9aa
- sysmodule.c (get_hash_info): Define as static function.
Matthias Klose <doko@ubuntu.com>
parents:
62189
diff
changeset
|
642 static PyObject * |
|
61873
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
643 get_hash_info(void) |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
644 { |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
645 PyObject *hash_info; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
646 int field = 0; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
647 hash_info = PyStructSequence_New(&Hash_InfoType); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
648 if (hash_info == NULL) |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
649 return NULL; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
650 PyStructSequence_SET_ITEM(hash_info, field++, |
|
65494
e8969fb822fc
make hashes always the size of pointers; introduce Py_hash_t #9778
Benjamin Peterson <benjamin@python.org>
parents:
65389
diff
changeset
|
651 PyLong_FromLong(8*sizeof(Py_hash_t))); |
|
61873
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
652 PyStructSequence_SET_ITEM(hash_info, field++, |
|
65603
be8ae6b17539
follow up to #9778: define and use an unsigned hash type
Benjamin Peterson <benjamin@python.org>
parents:
65575
diff
changeset
|
653 PyLong_FromSsize_t(_PyHASH_MODULUS)); |
|
61873
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
654 PyStructSequence_SET_ITEM(hash_info, field++, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
655 PyLong_FromLong(_PyHASH_INF)); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
656 PyStructSequence_SET_ITEM(hash_info, field++, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
657 PyLong_FromLong(_PyHASH_NAN)); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
658 PyStructSequence_SET_ITEM(hash_info, field++, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
659 PyLong_FromLong(_PyHASH_IMAG)); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
660 if (PyErr_Occurred()) { |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
661 Py_CLEAR(hash_info); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
662 return NULL; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
663 } |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
664 return hash_info; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
665 } |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
666 |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
667 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
668 PyDoc_STRVAR(setrecursionlimit_doc, |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
669 "setrecursionlimit(n)\n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
670 \n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
671 Set the maximum depth of the Python interpreter stack to n. This\n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
672 limit prevents infinite recursion from causing an overflow of the C\n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
673 stack and crashing Python. The highest possible limit is platform-\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
674 dependent." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
675 ); |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
676 |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
677 static PyObject * |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
678 sys_getrecursionlimit(PyObject *self) |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
679 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
680 return PyLong_FromLong(Py_GetRecursionLimit()); |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
681 } |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
682 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
683 PyDoc_STRVAR(getrecursionlimit_doc, |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
684 "getrecursionlimit()\n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
685 \n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
686 Return the current value of the recursion limit, the maximum depth\n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
687 of the Python interpreter stack. This limit prevents infinite\n\ |
|
24013
71f13cf4f9e2
Got rid of an extraneous semicolon.
Jack Jansen <jack.jansen@cwi.nl>
parents:
23947
diff
changeset
|
688 recursion from causing an overflow of the C stack and crashing Python." |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
689 ); |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
690 |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
691 #ifdef MS_WINDOWS |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
692 PyDoc_STRVAR(getwindowsversion_doc, |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
693 "getwindowsversion()\n\ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
694 \n\ |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
695 Return information about the running version of Windows as a named tuple.\n\ |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
696 The members are named: major, minor, build, platform, service_pack,\n\ |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
697 service_pack_major, service_pack_minor, suite_mask, and product_type. For\n\ |
|
68489
81d7f78a633a
#11515: Merge with 3.1.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68276
diff
changeset
|
698 backward compatibility, only the first 5 items are available by indexing.\n\ |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
699 All elements are numbers, except service_pack which is a string. Platform\n\ |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
700 may be 0 for win32s, 1 for Windows 9x/ME, 2 for Windows NT/2000/XP/Vista/7,\n\ |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
701 3 for Windows CE. Product_type may be 1 for a workstation, 2 for a domain\n\ |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
702 controller, 3 for a server." |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
703 ); |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
704 |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
705 static PyTypeObject WindowsVersionType = {0, 0, 0, 0, 0, 0}; |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
706 |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
707 static PyStructSequence_Field windows_version_fields[] = { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
708 {"major", "Major version number"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
709 {"minor", "Minor version number"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
710 {"build", "Build number"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
711 {"platform", "Operating system platform"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
712 {"service_pack", "Latest Service Pack installed on the system"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
713 {"service_pack_major", "Service Pack major version number"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
714 {"service_pack_minor", "Service Pack minor version number"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
715 {"suite_mask", "Bit mask identifying available product suites"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
716 {"product_type", "System product type"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
717 {0} |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
718 }; |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
719 |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
720 static PyStructSequence_Desc windows_version_desc = { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
721 "sys.getwindowsversion", /* name */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
722 getwindowsversion_doc, /* doc */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
723 windows_version_fields, /* fields */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
724 5 /* For backward compatibility, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
725 only the first 5 items are accessible |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
726 via indexing, the rest are name only */ |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
727 }; |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
728 |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
729 static PyObject * |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
730 sys_getwindowsversion(PyObject *self) |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
731 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
732 PyObject *version; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
733 int pos = 0; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
734 OSVERSIONINFOEX ver; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
735 ver.dwOSVersionInfoSize = sizeof(ver); |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
736 if (!GetVersionEx((OSVERSIONINFO*) &ver)) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
737 return PyErr_SetFromWindowsErr(0); |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
738 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
739 version = PyStructSequence_New(&WindowsVersionType); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
740 if (version == NULL) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
741 return NULL; |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
742 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
743 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwMajorVersion)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
744 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwMinorVersion)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
745 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwBuildNumber)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
746 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwPlatformId)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
747 PyStructSequence_SET_ITEM(version, pos++, PyUnicode_FromString(ver.szCSDVersion)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
748 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wServicePackMajor)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
749 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wServicePackMinor)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
750 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wSuiteMask)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
751 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wProductType)); |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
752 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
753 return version; |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
754 } |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
755 |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
756 #endif /* MS_WINDOWS */ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
757 |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
758 #ifdef HAVE_DLOPEN |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
759 static PyObject * |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
760 sys_setdlopenflags(PyObject *self, PyObject *args) |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
761 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
762 int new_val; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
763 PyThreadState *tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
764 if (!PyArg_ParseTuple(args, "i:setdlopenflags", &new_val)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
765 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
766 if (!tstate) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
767 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
768 tstate->interp->dlopenflags = new_val; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
769 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
770 return Py_None; |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
771 } |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
772 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
773 PyDoc_STRVAR(setdlopenflags_doc, |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
774 "setdlopenflags(n) -> None\n\ |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
775 \n\ |
|
55611
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
776 Set the flags used by the interpreter for dlopen calls, such as when the\n\ |
|
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
777 interpreter loads extension modules. Among other things, this will enable\n\ |
|
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
778 a lazy resolving of symbols when importing a module, if called as\n\ |
|
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
779 sys.setdlopenflags(0). To share symbols across extension modules, call as\n\ |
|
84239
1da78c7d382b
#13226: update references from ctypes/DLFCN modules to os module
Andrew Kuchling <amk@amk.ca>
parents:
80777
diff
changeset
|
780 sys.setdlopenflags(os.RTLD_GLOBAL). Symbolic names for the flag modules\n\ |
|
73243
05e2bdc00c0c
Issue #13226: Update sys.setdlopenflags() docstring
Victor Stinner <victor.stinner@haypocalc.com>
parents:
72926
diff
changeset
|
781 can be found in the os module (RTLD_xxx constants, e.g. os.RTLD_LAZY)."); |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
782 |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
783 static PyObject * |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
784 sys_getdlopenflags(PyObject *self, PyObject *args) |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
785 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
786 PyThreadState *tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
787 if (!tstate) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
788 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
789 return PyLong_FromLong(tstate->interp->dlopenflags); |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
790 } |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
791 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
792 PyDoc_STRVAR(getdlopenflags_doc, |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
793 "getdlopenflags() -> int\n\ |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
794 \n\ |
|
55611
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
795 Return the current value of the flags that are used for dlopen calls.\n\ |
|
84239
1da78c7d382b
#13226: update references from ctypes/DLFCN modules to os module
Andrew Kuchling <amk@amk.ca>
parents:
80777
diff
changeset
|
796 The flag constants are defined in the os module."); |
|
55611
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
797 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
798 #endif /* HAVE_DLOPEN */ |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
799 |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
800 #ifdef USE_MALLOPT |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
801 /* Link with -lmalloc (or -lmpc) on an SGI */ |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
802 #include <malloc.h> |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
803 |
| 5372 | 804 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
805 sys_mdebug(PyObject *self, PyObject *args) |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
806 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
807 int flag; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
808 if (!PyArg_ParseTuple(args, "i:mdebug", &flag)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
809 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
810 mallopt(M_DEBUG, flag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
811 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
812 return Py_None; |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
813 } |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
814 #endif /* USE_MALLOPT */ |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
815 |
| 5372 | 816 static PyObject * |
|
48467
c0c06ffaea83
Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents:
47580
diff
changeset
|
817 sys_getsizeof(PyObject *self, PyObject *args, PyObject *kwds) |
|
47466
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
818 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
819 PyObject *res = NULL; |
|
74578
7d96679c5d46
use the static identifier api for looking up special methods
Benjamin Peterson <benjamin@python.org>
parents:
73243
diff
changeset
|
820 static PyObject *gc_head_size = NULL; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
821 static char *kwlist[] = {"object", "default", 0}; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
822 PyObject *o, *dflt = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
823 PyObject *method; |
|
74578
7d96679c5d46
use the static identifier api for looking up special methods
Benjamin Peterson <benjamin@python.org>
parents:
73243
diff
changeset
|
824 _Py_IDENTIFIER(__sizeof__); |
|
48467
c0c06ffaea83
Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents:
47580
diff
changeset
|
825 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
826 if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:getsizeof", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
827 kwlist, &o, &dflt)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
828 return NULL; |
|
47466
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
829 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
830 /* Initialize static variable for GC head size */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
831 if (gc_head_size == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
832 gc_head_size = PyLong_FromSsize_t(sizeof(PyGC_Head)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
833 if (gc_head_size == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
834 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
835 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
836 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
837 /* Make sure the type is initialized. float gets initialized late */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
838 if (PyType_Ready(Py_TYPE(o)) < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
839 return NULL; |
|
53954
1b15a57e1f02
Merged revisions 72508 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
53185
diff
changeset
|
840 |
|
74578
7d96679c5d46
use the static identifier api for looking up special methods
Benjamin Peterson <benjamin@python.org>
parents:
73243
diff
changeset
|
841 method = _PyObject_LookupSpecial(o, &PyId___sizeof__); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
842 if (method == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
843 if (!PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
844 PyErr_Format(PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
845 "Type %.100s doesn't define __sizeof__", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
846 Py_TYPE(o)->tp_name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
847 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
848 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
849 res = PyObject_CallFunctionObjArgs(method, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
850 Py_DECREF(method); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
851 } |
|
48467
c0c06ffaea83
Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents:
47580
diff
changeset
|
852 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
853 /* Has a default value been given */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
854 if ((res == NULL) && (dflt != NULL) && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
855 PyErr_ExceptionMatches(PyExc_TypeError)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
856 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
857 PyErr_Clear(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
858 Py_INCREF(dflt); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
859 return dflt; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
860 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
861 else if (res == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
862 return res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
863 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
864 /* add gc_head size */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
865 if (PyObject_IS_GC(o)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
866 PyObject *tmp = res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
867 res = PyNumber_Add(tmp, gc_head_size); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
868 Py_DECREF(tmp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
869 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
870 return res; |
|
47466
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
871 } |
|
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
872 |
|
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
873 PyDoc_STRVAR(getsizeof_doc, |
|
48467
c0c06ffaea83
Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents:
47580
diff
changeset
|
874 "getsizeof(object, default) -> int\n\ |
|
47466
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
875 \n\ |
|
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
876 Return the size of object in bytes."); |
|
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
877 |
|
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
878 static PyObject * |
|
20655
7344687bf2c0
Convert getrefcount() to METH_O, and sys_excepthook() to use
Fred Drake <fdrake@acm.org>
parents:
20247
diff
changeset
|
879 sys_getrefcount(PyObject *self, PyObject *arg) |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
880 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
881 return PyLong_FromSsize_t(arg->ob_refcnt); |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
882 } |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
883 |
|
24126
fdf80e04e4bb
Rearranged and added comments to object.h, to clarify many things
Tim Peters <tim.peters@gmail.com>
parents:
24071
diff
changeset
|
884 #ifdef Py_REF_DEBUG |
|
12965
04c89d77dfdb
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Mark Hammond <mhammond@skippinet.com.au>
parents:
12877
diff
changeset
|
885 static PyObject * |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
886 sys_gettotalrefcount(PyObject *self) |
|
12965
04c89d77dfdb
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Mark Hammond <mhammond@skippinet.com.au>
parents:
12877
diff
changeset
|
887 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
888 return PyLong_FromSsize_t(_Py_GetRefTotal()); |
|
12965
04c89d77dfdb
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Mark Hammond <mhammond@skippinet.com.au>
parents:
12877
diff
changeset
|
889 } |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
890 #endif /* Py_REF_DEBUG */ |
|
12965
04c89d77dfdb
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Mark Hammond <mhammond@skippinet.com.au>
parents:
12877
diff
changeset
|
891 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
892 PyDoc_STRVAR(getrefcount_doc, |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
893 "getrefcount(object) -> integer\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
894 \n\ |
|
23947
37118b6e5f46
Fix the docstring for sys.getrefcount().
Fred Drake <fdrake@acm.org>
parents:
23746
diff
changeset
|
895 Return the reference count of object. The count returned is generally\n\ |
|
37118b6e5f46
Fix the docstring for sys.getrefcount().
Fred Drake <fdrake@acm.org>
parents:
23746
diff
changeset
|
896 one higher than you might expect, because it includes the (temporary)\n\ |
|
37118b6e5f46
Fix the docstring for sys.getrefcount().
Fred Drake <fdrake@acm.org>
parents:
23746
diff
changeset
|
897 reference as an argument to getrefcount()." |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
898 ); |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
899 |
|
80777
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
900 static PyObject * |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
901 sys_getallocatedblocks(PyObject *self) |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
902 { |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
903 return PyLong_FromSsize_t(_Py_GetAllocatedBlocks()); |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
904 } |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
905 |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
906 PyDoc_STRVAR(getallocatedblocks_doc, |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
907 "getallocatedblocks() -> integer\n\ |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
908 \n\ |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
909 Return the number of memory blocks currently allocated, regardless of their\n\ |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
910 size." |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
911 ); |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
912 |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
913 #ifdef COUNT_ALLOCS |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
914 static PyObject * |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
915 sys_getcounts(PyObject *self) |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
916 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
917 extern PyObject *get_counts(void); |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
918 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
919 return get_counts(); |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
920 } |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
921 #endif |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
922 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
923 PyDoc_STRVAR(getframe_doc, |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
924 "_getframe([depth]) -> frameobject\n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
925 \n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
926 Return a frame object from the call stack. If optional integer depth is\n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
927 given, return the frame object that many calls below the top of the stack.\n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
928 If that is deeper than the call stack, ValueError is raised. The default\n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
929 for depth is zero, returning the frame at the top of the call stack.\n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
930 \n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
931 This function should be used for internal and specialized\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
932 purposes only." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
933 ); |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
934 |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
935 static PyObject * |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
936 sys_getframe(PyObject *self, PyObject *args) |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
937 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
938 PyFrameObject *f = PyThreadState_GET()->frame; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
939 int depth = -1; |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
940 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
941 if (!PyArg_ParseTuple(args, "|i:_getframe", &depth)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
942 return NULL; |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
943 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
944 while (depth > 0 && f != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
945 f = f->f_back; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
946 --depth; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
947 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
948 if (f == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
949 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
950 "call stack is not deep enough"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
951 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
952 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
953 Py_INCREF(f); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
954 return (PyObject*)f; |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
955 } |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
956 |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
957 PyDoc_STRVAR(current_frames_doc, |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
958 "_current_frames() -> dictionary\n\ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
959 \n\ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
960 Return a dictionary mapping each current thread T's thread id to T's\n\ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
961 current stack frame.\n\ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
962 \n\ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
963 This function should be used for specialized purposes only." |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
964 ); |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
965 |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
966 static PyObject * |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
967 sys_current_frames(PyObject *self, PyObject *noargs) |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
968 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
969 return _PyThread_CurrentFrames(); |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
970 } |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
971 |
|
28556
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
972 PyDoc_STRVAR(call_tracing_doc, |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
973 "call_tracing(func, args) -> object\n\ |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
974 \n\ |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
975 Call func(*args), while tracing is enabled. The tracing state is\n\ |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
976 saved, and restored afterwards. This is intended to be called from\n\ |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
977 a debugger from a checkpoint, to recursively debug some other code." |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
978 ); |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
979 |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
980 static PyObject * |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
981 sys_call_tracing(PyObject *self, PyObject *args) |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
982 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
983 PyObject *func, *funcargs; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
984 if (!PyArg_ParseTuple(args, "OO!:call_tracing", &func, &PyTuple_Type, &funcargs)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
985 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
986 return _PyEval_CallTracing(func, funcargs); |
|
28556
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
987 } |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
988 |
|
27712
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
989 PyDoc_STRVAR(callstats_doc, |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
990 "callstats() -> tuple of integers\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
991 \n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
992 Return a tuple of function call statistics, if CALL_PROFILE was defined\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
993 when Python was built. Otherwise, return None.\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
994 \n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
995 When enabled, this function returns detailed, implementation-specific\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
996 details about the number of function calls executed. The return value is\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
997 a 11-tuple where the entries in the tuple are counts of:\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
998 0. all function calls\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
999 1. calls to PyFunction_Type objects\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
1000 2. PyFunction calls that do not create an argument tuple\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
1001 3. PyFunction calls that do not create an argument tuple\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
1002 and bypass PyEval_EvalCodeEx()\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
1003 4. PyMethod calls\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
1004 5. PyMethod calls on bound methods\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
1005 6. PyType calls\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
1006 7. PyCFunction calls\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
1007 8. generator calls\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
1008 9. All other calls\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
1009 10. Number of stack pops performed by call_function()" |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
1010 ); |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
1011 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
1012 #ifdef __cplusplus |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
1013 extern "C" { |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
1014 #endif |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
1015 |
|
77577
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1016 static PyObject * |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1017 sys_debugmallocstats(PyObject *self, PyObject *args) |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1018 { |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1019 #ifdef WITH_PYMALLOC |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1020 _PyObject_DebugMallocStats(stderr); |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1021 fputc('\n', stderr); |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1022 #endif |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1023 _PyObject_DebugTypeStats(stderr); |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1024 |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1025 Py_RETURN_NONE; |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1026 } |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1027 PyDoc_STRVAR(debugmallocstats_doc, |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1028 "_debugmallocstats()\n\ |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1029 \n\ |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1030 Print summary info to stderr about the state of\n\ |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1031 pymalloc's structures.\n\ |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1032 \n\ |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1033 In Py_DEBUG mode, also perform some expensive internal consistency\n\ |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1034 checks.\n\ |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1035 "); |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1036 |
|
3585
4ed09a3c3201
TRACE_REFS -> Py_TRACE_REFS
Guido van Rossum <guido@python.org>
parents:
3490
diff
changeset
|
1037 #ifdef Py_TRACE_REFS |
|
3609
0b0c4ed1936a
rename printrefs, getobjects to _Py_ prefix
Guido van Rossum <guido@python.org>
parents:
3585
diff
changeset
|
1038 /* Defined in objects.c because it uses static globals if that file */ |
|
13447
a89f7f268de4
Nuke all remaining occurrences of Py_PROTO and Py_FPROTO.
Tim Peters <tim.peters@gmail.com>
parents:
13256
diff
changeset
|
1039 extern PyObject *_Py_GetObjects(PyObject *, PyObject *); |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
1040 #endif |
|
3609
0b0c4ed1936a
rename printrefs, getobjects to _Py_ prefix
Guido van Rossum <guido@python.org>
parents:
3585
diff
changeset
|
1041 |
|
5047
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
1042 #ifdef DYNAMIC_EXECUTION_PROFILE |
|
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
1043 /* Defined in ceval.c because it uses static globals if that file */ |
|
13447
a89f7f268de4
Nuke all remaining occurrences of Py_PROTO and Py_FPROTO.
Tim Peters <tim.peters@gmail.com>
parents:
13256
diff
changeset
|
1044 extern PyObject *_Py_GetDXProfile(PyObject *, PyObject *); |
|
5047
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
1045 #endif |
|
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
1046 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
1047 #ifdef __cplusplus |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
1048 } |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
1049 #endif |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
1050 |
|
45145
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1051 static PyObject * |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1052 sys_clear_type_cache(PyObject* self, PyObject* args) |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1053 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1054 PyType_ClearCache(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1055 Py_RETURN_NONE; |
|
45145
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1056 } |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1057 |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1058 PyDoc_STRVAR(sys_clear_type_cache__doc__, |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1059 "_clear_type_cache() -> None\n\ |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1060 Clear the internal type lookup cache."); |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1061 |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1062 |
| 5372 | 1063 static PyMethodDef sys_methods[] = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1064 /* Might as well keep this in alphabetic order */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1065 {"callstats", (PyCFunction)PyEval_GetCallStats, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1066 callstats_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1067 {"_clear_type_cache", sys_clear_type_cache, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1068 sys_clear_type_cache__doc__}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1069 {"_current_frames", sys_current_frames, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1070 current_frames_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1071 {"displayhook", sys_displayhook, METH_O, displayhook_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1072 {"exc_info", sys_exc_info, METH_NOARGS, exc_info_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1073 {"excepthook", sys_excepthook, METH_VARARGS, excepthook_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1074 {"exit", sys_exit, METH_VARARGS, exit_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1075 {"getdefaultencoding", (PyCFunction)sys_getdefaultencoding, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1076 METH_NOARGS, getdefaultencoding_doc}, |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
1077 #ifdef HAVE_DLOPEN |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1078 {"getdlopenflags", (PyCFunction)sys_getdlopenflags, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1079 getdlopenflags_doc}, |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
1080 #endif |
|
80777
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
1081 {"getallocatedblocks", (PyCFunction)sys_getallocatedblocks, METH_NOARGS, |
|
c40f4c19d20b
Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80520
diff
changeset
|
1082 getallocatedblocks_doc}, |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
1083 #ifdef COUNT_ALLOCS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1084 {"getcounts", (PyCFunction)sys_getcounts, METH_NOARGS}, |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
1085 #endif |
|
5047
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
1086 #ifdef DYNAMIC_EXECUTION_PROFILE |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1087 {"getdxp", _Py_GetDXProfile, METH_VARARGS}, |
|
5047
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
1088 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1089 {"getfilesystemencoding", (PyCFunction)sys_getfilesystemencoding, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1090 METH_NOARGS, getfilesystemencoding_doc}, |
|
3585
4ed09a3c3201
TRACE_REFS -> Py_TRACE_REFS
Guido van Rossum <guido@python.org>
parents:
3490
diff
changeset
|
1091 #ifdef Py_TRACE_REFS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1092 {"getobjects", _Py_GetObjects, METH_VARARGS}, |
|
24126
fdf80e04e4bb
Rearranged and added comments to object.h, to clarify many things
Tim Peters <tim.peters@gmail.com>
parents:
24071
diff
changeset
|
1093 #endif |
|
fdf80e04e4bb
Rearranged and added comments to object.h, to clarify many things
Tim Peters <tim.peters@gmail.com>
parents:
24071
diff
changeset
|
1094 #ifdef Py_REF_DEBUG |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1095 {"gettotalrefcount", (PyCFunction)sys_gettotalrefcount, METH_NOARGS}, |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
1096 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1097 {"getrefcount", (PyCFunction)sys_getrefcount, METH_O, getrefcount_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1098 {"getrecursionlimit", (PyCFunction)sys_getrecursionlimit, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1099 getrecursionlimit_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1100 {"getsizeof", (PyCFunction)sys_getsizeof, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1101 METH_VARARGS | METH_KEYWORDS, getsizeof_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1102 {"_getframe", sys_getframe, METH_VARARGS, getframe_doc}, |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
1103 #ifdef MS_WINDOWS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1104 {"getwindowsversion", (PyCFunction)sys_getwindowsversion, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1105 getwindowsversion_doc}, |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
1106 #endif /* MS_WINDOWS */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1107 {"intern", sys_intern, METH_VARARGS, intern_doc}, |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
1108 #ifdef USE_MALLOPT |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1109 {"mdebug", sys_mdebug, METH_VARARGS}, |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
1110 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1111 {"setcheckinterval", sys_setcheckinterval, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1112 setcheckinterval_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1113 {"getcheckinterval", sys_getcheckinterval, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1114 getcheckinterval_doc}, |
|
57175
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
1115 #ifdef WITH_THREAD |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1116 {"setswitchinterval", sys_setswitchinterval, METH_VARARGS, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1117 setswitchinterval_doc}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1118 {"getswitchinterval", sys_getswitchinterval, METH_NOARGS, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1119 getswitchinterval_doc}, |
|
57175
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
1120 #endif |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
1121 #ifdef HAVE_DLOPEN |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1122 {"setdlopenflags", sys_setdlopenflags, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1123 setdlopenflags_doc}, |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
1124 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1125 {"setprofile", sys_setprofile, METH_O, setprofile_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1126 {"getprofile", sys_getprofile, METH_NOARGS, getprofile_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1127 {"setrecursionlimit", sys_setrecursionlimit, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1128 setrecursionlimit_doc}, |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
1129 #ifdef WITH_TSC |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1130 {"settscdump", sys_settscdump, METH_VARARGS, settscdump_doc}, |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
1131 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1132 {"settrace", sys_settrace, METH_O, settrace_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1133 {"gettrace", sys_gettrace, METH_NOARGS, gettrace_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1134 {"call_tracing", sys_call_tracing, METH_VARARGS, call_tracing_doc}, |
|
77577
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1135 {"_debugmallocstats", sys_debugmallocstats, METH_VARARGS, |
|
d63a80abfbec
Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents:
77339
diff
changeset
|
1136 debugmallocstats_doc}, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1137 {NULL, NULL} /* sentinel */ |
| 86 | 1138 }; |
| 1139 | |
| 5372 | 1140 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
1141 list_builtin_module_names(void) |
|
1198
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
1142 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1143 PyObject *list = PyList_New(0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1144 int i; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1145 if (list == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1146 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1147 for (i = 0; PyImport_Inittab[i].name != NULL; i++) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1148 PyObject *name = PyUnicode_FromString( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1149 PyImport_Inittab[i].name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1150 if (name == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1151 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1152 PyList_Append(list, name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1153 Py_DECREF(name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1154 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1155 if (PyList_Sort(list) != 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1156 Py_DECREF(list); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1157 list = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1158 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1159 if (list) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1160 PyObject *v = PyList_AsTuple(list); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1161 Py_DECREF(list); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1162 list = v; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1163 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1164 return list; |
|
1198
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
1165 } |
|
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
1166 |
|
15595
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1167 static PyObject *warnoptions = NULL; |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1168 |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1169 void |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1170 PySys_ResetWarnOptions(void) |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1171 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1172 if (warnoptions == NULL || !PyList_Check(warnoptions)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1173 return; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1174 PyList_SetSlice(warnoptions, 0, PyList_GET_SIZE(warnoptions), NULL); |
|
15595
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1175 } |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1176 |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1177 void |
|
61751
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1178 PySys_AddWarnOptionUnicode(PyObject *unicode) |
|
15595
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1179 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1180 if (warnoptions == NULL || !PyList_Check(warnoptions)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1181 Py_XDECREF(warnoptions); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1182 warnoptions = PyList_New(0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1183 if (warnoptions == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1184 return; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1185 } |
|
61751
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1186 PyList_Append(warnoptions, unicode); |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1187 } |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1188 |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1189 void |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1190 PySys_AddWarnOption(const wchar_t *s) |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1191 { |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1192 PyObject *unicode; |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1193 unicode = PyUnicode_FromWideChar(s, -1); |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1194 if (unicode == NULL) |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1195 return; |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1196 PySys_AddWarnOptionUnicode(unicode); |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1197 Py_DECREF(unicode); |
|
15595
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1198 } |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1199 |
|
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
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1200 int |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1201 PySys_HasWarnOptions(void) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1202 { |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1203 return (warnoptions != NULL && (PyList_Size(warnoptions) > 0)) ? 1 : 0; |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1204 } |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1205 |
|
65575
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1206 static PyObject *xoptions = NULL; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1207 |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1208 static PyObject * |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1209 get_xoptions(void) |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1210 { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1211 if (xoptions == NULL || !PyDict_Check(xoptions)) { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1212 Py_XDECREF(xoptions); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1213 xoptions = PyDict_New(); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1214 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1215 return xoptions; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1216 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1217 |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1218 void |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1219 PySys_AddXOption(const wchar_t *s) |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1220 { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1221 PyObject *opts; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1222 PyObject *name = NULL, *value = NULL; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1223 const wchar_t *name_end; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1224 |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1225 opts = get_xoptions(); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1226 if (opts == NULL) |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1227 goto error; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1228 |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1229 name_end = wcschr(s, L'='); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1230 if (!name_end) { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1231 name = PyUnicode_FromWideChar(s, -1); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1232 value = Py_True; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1233 Py_INCREF(value); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1234 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1235 else { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1236 name = PyUnicode_FromWideChar(s, name_end - s); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1237 value = PyUnicode_FromWideChar(name_end + 1, -1); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1238 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1239 if (name == NULL || value == NULL) |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1240 goto error; |
|
68102
e2f96bd29252
Issue #8914: fix various warnings from the Clang static analyzer v254.
Brett Cannon <bcannon@gmail.com>
parents:
67380
diff
changeset
|
1241 PyDict_SetItem(opts, name, value); |
|
65575
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1242 Py_DECREF(name); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1243 Py_DECREF(value); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1244 return; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1245 |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1246 error: |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1247 Py_XDECREF(name); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1248 Py_XDECREF(value); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1249 /* No return value, therefore clear error state if possible */ |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1250 if (_Py_atomic_load_relaxed(&_PyThreadState_Current)) |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1251 PyErr_Clear(); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1252 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1253 |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1254 PyObject * |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1255 PySys_GetXOptions(void) |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1256 { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1257 return get_xoptions(); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1258 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1259 |
|
8840
44baef8ab5c8
Gack. The module doc string is too long for VC++ 5.0.
Guido van Rossum <guido@python.org>
parents:
8566
diff
changeset
|
1260 /* XXX This doc string is too long to be a single string literal in VC++ 5.0. |
|
44baef8ab5c8
Gack. The module doc string is too long for VC++ 5.0.
Guido van Rossum <guido@python.org>
parents:
8566
diff
changeset
|
1261 Two literals concatenated works just fine. If you have a K&R compiler |
|
44baef8ab5c8
Gack. The module doc string is too long for VC++ 5.0.
Guido van Rossum <guido@python.org>
parents:
8566
diff
changeset
|
1262 or other abomination that however *does* understand longer strings, |
|
44baef8ab5c8
Gack. The module doc string is too long for VC++ 5.0.
Guido van Rossum <guido@python.org>
parents:
8566
diff
changeset
|
1263 get rid of the !!! comment in the middle and the quotes that surround it. */ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1264 PyDoc_VAR(sys_doc) = |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1265 PyDoc_STR( |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1266 "This module provides access to some objects used or maintained by the\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1267 interpreter and to functions that interact strongly with the interpreter.\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1268 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1269 Dynamic objects:\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1270 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1271 argv -- command line arguments; argv[0] is the script pathname if known\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1272 path -- module search path; path[0] is the script directory, else ''\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1273 modules -- dictionary of loaded modules\n\ |
| 17164 | 1274 \n\ |
| 1275 displayhook -- called to show results in an interactive session\n\ | |
| 1276 excepthook -- called to handle any uncaught exception other than SystemExit\n\ | |
| 1277 To customize printing in an interactive session or to install a custom\n\ | |
| 1278 top-level exception handler, assign other functions to replace these.\n\ | |
| 1279 \n\ | |
|
48470
3d868254ff7e
correct docstring
Benjamin Peterson <benjamin@python.org>
parents:
48467
diff
changeset
|
1280 stdin -- standard input file object; used by input()\n\ |
|
40788
e9a6234b26af
* Remove PRINT_ITEM(_TO), PRINT_NEWLINE(_TO) opcodes.
Georg Brandl <georg@python.org>
parents:
40737
diff
changeset
|
1281 stdout -- standard output file object; used by print()\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1282 stderr -- standard error object; used for error messages\n\ |
| 17164 | 1283 By assigning other file objects (or objects that behave like files)\n\ |
| 1284 to these, it is possible to redirect all of the interpreter's I/O.\n\ | |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1285 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1286 last_type -- type of last uncaught exception\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1287 last_value -- value of last uncaught exception\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1288 last_traceback -- traceback of last uncaught exception\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1289 These three are only available in an interactive session after a\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1290 traceback has been printed.\n\ |
|
9885
030ee50bd8d1
Jim Ahlstrom patch: the module doc string is too long for 16-bit VC
Guido van Rossum <guido@python.org>
parents:
9746
diff
changeset
|
1291 " |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1292 ) |
| 17164 | 1293 /* concatenating string here */ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1294 PyDoc_STR( |
|
9885
030ee50bd8d1
Jim Ahlstrom patch: the module doc string is too long for 16-bit VC
Guido van Rossum <guido@python.org>
parents:
9746
diff
changeset
|
1295 "\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1296 Static objects:\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1297 \n\ |
|
69710
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1298 builtin_module_names -- tuple of module names built into this interpreter\n\ |
|
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1299 copyright -- copyright notice pertaining to this interpreter\n\ |
|
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1300 exec_prefix -- prefix used to find the machine-specific Python library\n\ |
| 74727 | 1301 executable -- absolute path of the executable binary of the Python interpreter\n\ |
|
69710
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1302 float_info -- a struct sequence with information about the float implementation.\n\ |
|
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1303 float_repr_style -- string indicating the style of repr() output for floats\n\ |
|
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1304 hexversion -- version information encoded as a single integer\n\ |
|
77339
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1305 implementation -- Python implementation information.\n\ |
|
52215
bb5de24a343f
Issue #4258: Make it possible to use 30-bit digits for PyLongs:
Mark Dickinson <dickinsm@gmail.com>
parents:
51378
diff
changeset
|
1306 int_info -- a struct sequence with information about the int implementation.\n\ |
|
43100
4e6b4ba60c3b
Remove the simple slicing API. All slicing is now done with slice objects.
Thomas Wouters <thomas@python.org>
parents:
42896
diff
changeset
|
1307 maxsize -- the largest supported length of containers.\n\ |
|
72503
606652491366
#13054: sys.maxunicode is now always 0x10FFFF.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
69710
diff
changeset
|
1308 maxunicode -- the value of the largest Unicode codepoint\n\ |
|
69710
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1309 platform -- platform identifier\n\ |
|
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1310 prefix -- prefix used to find the Python library\n\ |
|
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1311 thread_info -- a struct sequence with information about the thread implementation.\n\ |
|
12394
60dd95c75999
Define version_info to be a tuple (major, minor, micro, level); level
Fred Drake <fdrake@acm.org>
parents:
12136
diff
changeset
|
1312 version -- the version of this interpreter as a string\n\ |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1313 version_info -- version information as a named tuple\n\ |
| 17164 | 1314 " |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1315 ) |
| 17164 | 1316 #ifdef MS_WINDOWS |
| 1317 /* concatenating string here */ | |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1318 PyDoc_STR( |
| 17164 | 1319 "dllhandle -- [Windows only] integer handle of the Python DLL\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1320 winver -- [Windows only] version number of the Python DLL\n\ |
| 17164 | 1321 " |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1322 ) |
| 17164 | 1323 #endif /* MS_WINDOWS */ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1324 PyDoc_STR( |
| 17164 | 1325 "__stdin__ -- the original stdin; don't touch!\n\ |
| 1326 __stdout__ -- the original stdout; don't touch!\n\ | |
| 1327 __stderr__ -- the original stderr; don't touch!\n\ | |
| 1328 __displayhook__ -- the original displayhook; don't touch!\n\ | |
| 1329 __excepthook__ -- the original excepthook; don't touch!\n\ | |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1330 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1331 Functions:\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1332 \n\ |
|
44098
0889daf6d0d9
#1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents:
44086
diff
changeset
|
1333 displayhook() -- print an object to the screen, and save it in builtins._\n\ |
| 17164 | 1334 excepthook() -- print an exception and its traceback to sys.stderr\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1335 exc_info() -- return thread-safe information about the current exception\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1336 exit() -- exit the interpreter by raising SystemExit\n\ |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
1337 getdlopenflags() -- returns flags to be used for dlopen() calls\n\ |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
1338 getprofile() -- get the global profiling function\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1339 getrefcount() -- return the reference count for an object (plus one :-)\n\ |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
1340 getrecursionlimit() -- return the max recursion depth for the interpreter\n\ |
|
47466
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
1341 getsizeof() -- return the size of an object in bytes\n\ |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
1342 gettrace() -- get the global debug tracing function\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1343 setcheckinterval() -- control how often the interpreter checks for events\n\ |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
1344 setdlopenflags() -- set the flags to be used for dlopen() calls\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1345 setprofile() -- set the global profiling function\n\ |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
1346 setrecursionlimit() -- set the max recursion depth for the interpreter\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1347 settrace() -- set the global debug tracing function\n\ |
|
13971
aa4202702252
The attempt to protect against MS_WIN16 compilers that do not support long
Fred Drake <fdrake@acm.org>
parents:
13968
diff
changeset
|
1348 " |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1349 ) |
|
13971
aa4202702252
The attempt to protect against MS_WIN16 compilers that do not support long
Fred Drake <fdrake@acm.org>
parents:
13968
diff
changeset
|
1350 /* end of sys_doc */ ; |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
1351 |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1352 |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1353 PyDoc_STRVAR(flags__doc__, |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1354 "sys.flags\n\ |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1355 \n\ |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1356 Flags provided through command line arguments or environment vars."); |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1357 |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1358 static PyTypeObject FlagsType; |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1359 |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1360 static PyStructSequence_Field flags_fields[] = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1361 {"debug", "-d"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1362 {"inspect", "-i"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1363 {"interactive", "-i"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1364 {"optimize", "-O or -OO"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1365 {"dont_write_bytecode", "-B"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1366 {"no_user_site", "-s"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1367 {"no_site", "-S"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1368 {"ignore_environment", "-E"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1369 {"verbose", "-v"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1370 /* {"unbuffered", "-u"}, */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1371 /* {"skip_first", "-x"}, */ |
|
67193
b7be652daf6e
Add sys.flags.quiet attribute for the new -q option, as noted missing by Eric in #1772833.
Georg Brandl <georg@python.org>
parents:
66719
diff
changeset
|
1372 {"bytes_warning", "-b"}, |
|
b7be652daf6e
Add sys.flags.quiet attribute for the new -q option, as noted missing by Eric in #1772833.
Georg Brandl <georg@python.org>
parents:
66719
diff
changeset
|
1373 {"quiet", "-q"}, |
|
75073
4a31f6b11e7a
Merge from 3.1: Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
diff
changeset
|
1374 {"hash_randomization", "-R"}, |
|
85081
dd0d751cc7f1
Issue #16400: Add command line option for isolated mode.
Christian Heimes <christian@cheimes.de>
parents:
84795
diff
changeset
|
1375 {"isolated", "-I"}, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1376 {0} |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1377 }; |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1378 |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1379 static PyStructSequence_Desc flags_desc = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1380 "sys.flags", /* name */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1381 flags__doc__, /* doc */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1382 flags_fields, /* fields */ |
|
75097
ed76dc34b39d
Merge 3.2: Issue #13703 plus some related test suite fixes.
Georg Brandl <georg@python.org>
diff
changeset
|
1383 13 |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1384 }; |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1385 |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1386 static PyObject* |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1387 make_flags(void) |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1388 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1389 int pos = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1390 PyObject *seq; |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1391 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1392 seq = PyStructSequence_New(&FlagsType); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1393 if (seq == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1394 return NULL; |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1395 |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1396 #define SetFlag(flag) \ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1397 PyStructSequence_SET_ITEM(seq, pos++, PyLong_FromLong(flag)) |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1398 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1399 SetFlag(Py_DebugFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1400 SetFlag(Py_InspectFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1401 SetFlag(Py_InteractiveFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1402 SetFlag(Py_OptimizeFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1403 SetFlag(Py_DontWriteBytecodeFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1404 SetFlag(Py_NoUserSiteDirectory); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1405 SetFlag(Py_NoSiteFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1406 SetFlag(Py_IgnoreEnvironmentFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1407 SetFlag(Py_VerboseFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1408 /* SetFlag(saw_unbuffered_flag); */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1409 /* SetFlag(skipfirstline); */ |
|
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
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1410 SetFlag(Py_BytesWarningFlag); |
|
67193
b7be652daf6e
Add sys.flags.quiet attribute for the new -q option, as noted missing by Eric in #1772833.
Georg Brandl <georg@python.org>
parents:
66719
diff
changeset
|
1411 SetFlag(Py_QuietFlag); |
|
75066
f4b7ecf8a5f8
Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents:
69481
diff
changeset
|
1412 SetFlag(Py_HashRandomizationFlag); |
|
85081
dd0d751cc7f1
Issue #16400: Add command line option for isolated mode.
Christian Heimes <christian@cheimes.de>
parents:
84795
diff
changeset
|
1413 SetFlag(Py_IsolatedFlag); |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1414 #undef SetFlag |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1415 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1416 if (PyErr_Occurred()) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1417 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1418 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1419 return seq; |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1420 } |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1421 |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1422 PyDoc_STRVAR(version_info__doc__, |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1423 "sys.version_info\n\ |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1424 \n\ |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1425 Version information as a named tuple."); |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1426 |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1427 static PyTypeObject VersionInfoType; |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1428 |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1429 static PyStructSequence_Field version_info_fields[] = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1430 {"major", "Major release number"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1431 {"minor", "Minor release number"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1432 {"micro", "Patch release number"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1433 {"releaselevel", "'alpha', 'beta', 'candidate', or 'release'"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1434 {"serial", "Serial release number"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1435 {0} |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1436 }; |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1437 |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1438 static PyStructSequence_Desc version_info_desc = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1439 "sys.version_info", /* name */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1440 version_info__doc__, /* doc */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1441 version_info_fields, /* fields */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1442 5 |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1443 }; |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1444 |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1445 static PyObject * |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1446 make_version_info(void) |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1447 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1448 PyObject *version_info; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1449 char *s; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1450 int pos = 0; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1451 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1452 version_info = PyStructSequence_New(&VersionInfoType); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1453 if (version_info == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1454 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1455 } |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1456 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1457 /* |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1458 * These release level checks are mutually exclusive and cover |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1459 * the field, so don't get too fancy with the pre-processor! |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1460 */ |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1461 #if PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_ALPHA |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1462 s = "alpha"; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1463 #elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_BETA |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1464 s = "beta"; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1465 #elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_GAMMA |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1466 s = "candidate"; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1467 #elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_FINAL |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1468 s = "final"; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1469 #endif |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1470 |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1471 #define SetIntItem(flag) \ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1472 PyStructSequence_SET_ITEM(version_info, pos++, PyLong_FromLong(flag)) |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1473 #define SetStrItem(flag) \ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1474 PyStructSequence_SET_ITEM(version_info, pos++, PyUnicode_FromString(flag)) |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1475 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1476 SetIntItem(PY_MAJOR_VERSION); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1477 SetIntItem(PY_MINOR_VERSION); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1478 SetIntItem(PY_MICRO_VERSION); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1479 SetStrItem(s); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1480 SetIntItem(PY_RELEASE_SERIAL); |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1481 #undef SetIntItem |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1482 #undef SetStrItem |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1483 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1484 if (PyErr_Occurred()) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1485 Py_CLEAR(version_info); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1486 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1487 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1488 return version_info; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1489 } |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1490 |
|
78029
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1491 /* sys.implementation values */ |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1492 #define NAME "cpython" |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1493 const char *_PySys_ImplName = NAME; |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1494 #define QUOTE(arg) #arg |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1495 #define STRIFY(name) QUOTE(name) |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1496 #define MAJOR STRIFY(PY_MAJOR_VERSION) |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1497 #define MINOR STRIFY(PY_MINOR_VERSION) |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1498 #define TAG NAME "-" MAJOR MINOR; |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1499 const char *_PySys_ImplCacheTag = TAG; |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1500 #undef NAME |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1501 #undef QUOTE |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1502 #undef STRIFY |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1503 #undef MAJOR |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1504 #undef MINOR |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1505 #undef TAG |
|
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1506 |
|
77339
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1507 static PyObject * |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1508 make_impl_info(PyObject *version_info) |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1509 { |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1510 int res; |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1511 PyObject *impl_info, *value, *ns; |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1512 |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1513 impl_info = PyDict_New(); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1514 if (impl_info == NULL) |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1515 return NULL; |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1516 |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1517 /* populate the dict */ |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1518 |
|
78029
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1519 value = PyUnicode_FromString(_PySys_ImplName); |
|
77339
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1520 if (value == NULL) |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1521 goto error; |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1522 res = PyDict_SetItemString(impl_info, "name", value); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1523 Py_DECREF(value); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1524 if (res < 0) |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1525 goto error; |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1526 |
|
78029
ee01fd98b5b0
Issue #15242: Have PyImport_GetMagicTag() return a const char *
Brett Cannon <brett@python.org>
parents:
77577
diff
changeset
|
1527 value = PyUnicode_FromString(_PySys_ImplCacheTag); |
|
77339
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1528 if (value == NULL) |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1529 goto error; |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1530 res = PyDict_SetItemString(impl_info, "cache_tag", value); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1531 Py_DECREF(value); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1532 if (res < 0) |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1533 goto error; |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1534 |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1535 res = PyDict_SetItemString(impl_info, "version", version_info); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1536 if (res < 0) |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1537 goto error; |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1538 |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1539 value = PyLong_FromLong(PY_VERSION_HEX); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1540 if (value == NULL) |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1541 goto error; |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1542 res = PyDict_SetItemString(impl_info, "hexversion", value); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1543 Py_DECREF(value); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1544 if (res < 0) |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1545 goto error; |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1546 |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1547 /* dict ready */ |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1548 |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1549 ns = _PyNamespace_New(impl_info); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1550 Py_DECREF(impl_info); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1551 return ns; |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1552 |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1553 error: |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1554 Py_CLEAR(impl_info); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1555 return NULL; |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1556 } |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1557 |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47489
diff
changeset
|
1558 static struct PyModuleDef sysmodule = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1559 PyModuleDef_HEAD_INIT, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1560 "sys", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1561 sys_doc, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1562 -1, /* multiple "initialization" just copies the module dict. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1563 sys_methods, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1564 NULL, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1565 NULL, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1566 NULL, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1567 NULL |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47489
diff
changeset
|
1568 }; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47489
diff
changeset
|
1569 |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
1570 PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
1571 _PySys_Init(void) |
| 6 | 1572 { |
|
84795
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1573 PyObject *m, *sysdict, *version_info; |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
1574 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1575 m = PyModule_Create(&sysmodule); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1576 if (m == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1577 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1578 sysdict = PyModule_GetDict(m); |
|
86693
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1579 #define SET_SYS_FROM_STRING_BORROW(key, value) \ |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1580 do { \ |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1581 int res; \ |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1582 PyObject *v = (value); \ |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1583 if (v == NULL) \ |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1584 return NULL; \ |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1585 res = PyDict_SetItemString(sysdict, key, v); \ |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1586 if (res < 0) { \ |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1587 return NULL; \ |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1588 } \ |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1589 } while (0) |
|
84795
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1590 #define SET_SYS_FROM_STRING(key, value) \ |
|
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1591 do { \ |
|
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1592 int res; \ |
|
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1593 PyObject *v = (value); \ |
|
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1594 if (v == NULL) \ |
|
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1595 return NULL; \ |
|
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1596 res = PyDict_SetItemString(sysdict, key, v); \ |
|
86693
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1597 Py_DECREF(v); \ |
|
84795
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1598 if (res < 0) { \ |
|
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1599 return NULL; \ |
|
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1600 } \ |
|
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1601 } while (0) |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
1602 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1603 /* Check that stdin is not a directory |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1604 Using shell redirection, you can redirect stdin to a directory, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1605 crashing the Python interpreter. Catch this common mistake here |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1606 and output a useful error message. Note that under MS Windows, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1607 the shell already prevents that. */ |
|
50743
e8154bd322cb
Merged revisions 68540 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49613
diff
changeset
|
1608 #if !defined(MS_WINDOWS) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1609 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1610 struct stat sb; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1611 if (fstat(fileno(stdin), &sb) == 0 && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1612 S_ISDIR(sb.st_mode)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1613 /* There's nothing more we can do. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1614 /* Py_FatalError() will core dump, so just exit. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1615 PySys_WriteStderr("Python error: <stdin> is a directory, cannot continue\n"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1616 exit(EXIT_FAILURE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1617 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1618 } |
|
50743
e8154bd322cb
Merged revisions 68540 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49613
diff
changeset
|
1619 #endif |
|
35673
612a12178e47
SF bug #887946, segfault if redirecting directory
Neal Norwitz <nnorwitz@gmail.com>
parents:
35572
diff
changeset
|
1620 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1621 /* stdin/stdout/stderr are now set by pythonrun.c */ |
|
29065
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
1622 |
|
86693
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1623 SET_SYS_FROM_STRING_BORROW("__displayhook__", |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1624 PyDict_GetItemString(sysdict, "displayhook")); |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1625 SET_SYS_FROM_STRING_BORROW("__excepthook__", |
|
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1626 PyDict_GetItemString(sysdict, "excepthook")); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1627 SET_SYS_FROM_STRING("version", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1628 PyUnicode_FromString(Py_GetVersion())); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1629 SET_SYS_FROM_STRING("hexversion", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1630 PyLong_FromLong(PY_VERSION_HEX)); |
|
68274
f57c94073b35
Commit the hg build identification patch from the pymigr repo.
Georg Brandl <georg@python.org>
parents:
62190
diff
changeset
|
1631 SET_SYS_FROM_STRING("_mercurial", |
|
f57c94073b35
Commit the hg build identification patch from the pymigr repo.
Georg Brandl <georg@python.org>
parents:
62190
diff
changeset
|
1632 Py_BuildValue("(szz)", "CPython", _Py_hgidentifier(), |
|
f57c94073b35
Commit the hg build identification patch from the pymigr repo.
Georg Brandl <georg@python.org>
parents:
62190
diff
changeset
|
1633 _Py_hgversion())); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1634 SET_SYS_FROM_STRING("dont_write_bytecode", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1635 PyBool_FromLong(Py_DontWriteBytecodeFlag)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1636 SET_SYS_FROM_STRING("api_version", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1637 PyLong_FromLong(PYTHON_API_VERSION)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1638 SET_SYS_FROM_STRING("copyright", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1639 PyUnicode_FromString(Py_GetCopyright())); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1640 SET_SYS_FROM_STRING("platform", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1641 PyUnicode_FromString(Py_GetPlatform())); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1642 SET_SYS_FROM_STRING("executable", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1643 PyUnicode_FromWideChar( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1644 Py_GetProgramFullPath(), -1)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1645 SET_SYS_FROM_STRING("prefix", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1646 PyUnicode_FromWideChar(Py_GetPrefix(), -1)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1647 SET_SYS_FROM_STRING("exec_prefix", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1648 PyUnicode_FromWideChar(Py_GetExecPrefix(), -1)); |
|
77154
294f8aeb4d4b
Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
75097
diff
changeset
|
1649 SET_SYS_FROM_STRING("base_prefix", |
|
294f8aeb4d4b
Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
75097
diff
changeset
|
1650 PyUnicode_FromWideChar(Py_GetPrefix(), -1)); |
|
294f8aeb4d4b
Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
75097
diff
changeset
|
1651 SET_SYS_FROM_STRING("base_exec_prefix", |
|
294f8aeb4d4b
Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
75097
diff
changeset
|
1652 PyUnicode_FromWideChar(Py_GetExecPrefix(), -1)); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1653 SET_SYS_FROM_STRING("maxsize", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1654 PyLong_FromSsize_t(PY_SSIZE_T_MAX)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1655 SET_SYS_FROM_STRING("float_info", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1656 PyFloat_GetInfo()); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1657 SET_SYS_FROM_STRING("int_info", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1658 PyLong_GetInfo()); |
|
61873
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
1659 /* initialize hash_info */ |
|
84793
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1660 if (Hash_InfoType.tp_name == NULL) { |
|
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1661 if (PyStructSequence_InitType2(&Hash_InfoType, &hash_info_desc) < 0) |
|
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1662 return NULL; |
|
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1663 } |
|
61873
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
1664 SET_SYS_FROM_STRING("hash_info", |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
1665 get_hash_info()); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1666 SET_SYS_FROM_STRING("maxunicode", |
|
72503
606652491366
#13054: sys.maxunicode is now always 0x10FFFF.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
69710
diff
changeset
|
1667 PyLong_FromLong(0x10FFFF)); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1668 SET_SYS_FROM_STRING("builtin_module_names", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1669 list_builtin_module_names()); |
|
79803
d2127cdec10e
Issue #16166: Add PY_LITTLE_ENDIAN and PY_BIG_ENDIAN macros and unified
Christian Heimes <christian@cheimes.de>
parents:
78029
diff
changeset
|
1670 #if PY_BIG_ENDIAN |
|
d2127cdec10e
Issue #16166: Add PY_LITTLE_ENDIAN and PY_BIG_ENDIAN macros and unified
Christian Heimes <christian@cheimes.de>
parents:
78029
diff
changeset
|
1671 SET_SYS_FROM_STRING("byteorder", |
|
d2127cdec10e
Issue #16166: Add PY_LITTLE_ENDIAN and PY_BIG_ENDIAN macros and unified
Christian Heimes <christian@cheimes.de>
parents:
78029
diff
changeset
|
1672 PyUnicode_FromString("big")); |
|
d2127cdec10e
Issue #16166: Add PY_LITTLE_ENDIAN and PY_BIG_ENDIAN macros and unified
Christian Heimes <christian@cheimes.de>
parents:
78029
diff
changeset
|
1673 #else |
|
d2127cdec10e
Issue #16166: Add PY_LITTLE_ENDIAN and PY_BIG_ENDIAN macros and unified
Christian Heimes <christian@cheimes.de>
parents:
78029
diff
changeset
|
1674 SET_SYS_FROM_STRING("byteorder", |
|
d2127cdec10e
Issue #16166: Add PY_LITTLE_ENDIAN and PY_BIG_ENDIAN macros and unified
Christian Heimes <christian@cheimes.de>
parents:
78029
diff
changeset
|
1675 PyUnicode_FromString("little")); |
|
d2127cdec10e
Issue #16166: Add PY_LITTLE_ENDIAN and PY_BIG_ENDIAN macros and unified
Christian Heimes <christian@cheimes.de>
parents:
78029
diff
changeset
|
1676 #endif |
|
13968
841cf9012ac3
Add a byte_order value to the sys module. The value is "big" for
Fred Drake <fdrake@acm.org>
parents:
13694
diff
changeset
|
1677 |
|
4126
c80c515999b9
Use MS_DLL_ID as sys.winver
Guido van Rossum <guido@python.org>
parents:
3877
diff
changeset
|
1678 #ifdef MS_COREDLL |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1679 SET_SYS_FROM_STRING("dllhandle", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1680 PyLong_FromVoidPtr(PyWin_DLLhModule)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1681 SET_SYS_FROM_STRING("winver", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1682 PyUnicode_FromString(PyWin_DLLVersionString)); |
|
3490
1dfc519ea3cb
Under NT, define sys.dllhandle and sys.winver (Mark H.).
Guido van Rossum <guido@python.org>
parents:
3326
diff
changeset
|
1683 #endif |
|
65389
932f97bfbdc0
First (uncontroversial) part of issue 9807.
Barry Warsaw <barry@python.org>
parents:
65166
diff
changeset
|
1684 #ifdef ABIFLAGS |
|
932f97bfbdc0
First (uncontroversial) part of issue 9807.
Barry Warsaw <barry@python.org>
parents:
65166
diff
changeset
|
1685 SET_SYS_FROM_STRING("abiflags", |
|
932f97bfbdc0
First (uncontroversial) part of issue 9807.
Barry Warsaw <barry@python.org>
parents:
65166
diff
changeset
|
1686 PyUnicode_FromString(ABIFLAGS)); |
|
932f97bfbdc0
First (uncontroversial) part of issue 9807.
Barry Warsaw <barry@python.org>
parents:
65166
diff
changeset
|
1687 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1688 if (warnoptions == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1689 warnoptions = PyList_New(0); |
|
84795
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1690 if (warnoptions == NULL) |
|
31796b188bec
Issue #18520: Fix _PySys_Init(), handle PyDict_SetItemString() errors
Victor Stinner <victor.stinner@gmail.com>
parents:
84793
diff
changeset
|
1691 return NULL; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1692 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1693 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1694 Py_INCREF(warnoptions); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1695 } |
|
86693
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1696 SET_SYS_FROM_STRING_BORROW("warnoptions", warnoptions); |
|
36211
6d743e5baf14
Trimmed trailing whitespace.
Tim Peters <tim.peters@gmail.com>
parents:
36207
diff
changeset
|
1697 |
|
86693
5eb00460e6e8
Issue #18520: fix reference leak in _PySys_Init()
Victor Stinner <victor.stinner@gmail.com>
parents:
85413
diff
changeset
|
1698 SET_SYS_FROM_STRING_BORROW("_xoptions", get_xoptions()); |
|
65575
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1699 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1700 /* version_info */ |
|
84793
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1701 if (VersionInfoType.tp_name == NULL) { |
|
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1702 if (PyStructSequence_InitType2(&VersionInfoType, |
|
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1703 &version_info_desc) < 0) |
|
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1704 return NULL; |
|
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1705 } |
|
77339
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1706 version_info = make_version_info(); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1707 SET_SYS_FROM_STRING("version_info", version_info); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1708 /* prevent user from creating new instances */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1709 VersionInfoType.tp_init = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1710 VersionInfoType.tp_new = NULL; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1711 |
|
77339
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1712 /* implementation */ |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1713 SET_SYS_FROM_STRING("implementation", make_impl_info(version_info)); |
|
9c445f4695c1
Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents:
77154
diff
changeset
|
1714 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1715 /* flags */ |
|
84793
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1716 if (FlagsType.tp_name == 0) { |
|
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1717 if (PyStructSequence_InitType2(&FlagsType, &flags_desc) < 0) |
|
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1718 return NULL; |
|
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1719 } |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1720 SET_SYS_FROM_STRING("flags", make_flags()); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1721 /* prevent user from creating new instances */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1722 FlagsType.tp_init = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1723 FlagsType.tp_new = NULL; |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1724 |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
1725 |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
1726 #if defined(MS_WINDOWS) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1727 /* getwindowsversion */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1728 if (WindowsVersionType.tp_name == 0) |
|
84793
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1729 if (PyStructSequence_InitType2(&WindowsVersionType, |
|
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1730 &windows_version_desc) < 0) |
|
fc718c177ee6
Issue #18520: Add a new PyStructSequence_InitType2() function, same than
Victor Stinner <victor.stinner@gmail.com>
parents:
84786
diff
changeset
|
1731 return NULL; |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1732 /* prevent user from creating new instances */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1733 WindowsVersionType.tp_init = NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1734 WindowsVersionType.tp_new = NULL; |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
1735 #endif |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
1736 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1737 /* float repr style: 0.03 (short) vs 0.029999999999999999 (legacy) */ |
|
53185
97ae7a709c1d
Issue #1580: use short float repr where possible.
Mark Dickinson <dickinsm@gmail.com>
parents:
52215
diff
changeset
|
1738 #ifndef PY_NO_SHORT_FLOAT_REPR |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1739 SET_SYS_FROM_STRING("float_repr_style", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1740 PyUnicode_FromString("short")); |
|
53185
97ae7a709c1d
Issue #1580: use short float repr where possible.
Mark Dickinson <dickinsm@gmail.com>
parents:
52215
diff
changeset
|
1741 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1742 SET_SYS_FROM_STRING("float_repr_style", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1743 PyUnicode_FromString("legacy")); |
|
53185
97ae7a709c1d
Issue #1580: use short float repr where possible.
Mark Dickinson <dickinsm@gmail.com>
parents:
52215
diff
changeset
|
1744 #endif |
|
97ae7a709c1d
Issue #1580: use short float repr where possible.
Mark Dickinson <dickinsm@gmail.com>
parents:
52215
diff
changeset
|
1745 |
|
69710
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1746 #ifdef WITH_THREAD |
|
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1747 SET_SYS_FROM_STRING("thread_info", PyThread_GetInfo()); |
|
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1748 #endif |
|
2b21fcf3d9a9
Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69483
diff
changeset
|
1749 |
|
45071
f380d991390e
Merged revisions 60441-60474 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45026
diff
changeset
|
1750 #undef SET_SYS_FROM_STRING |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1751 if (PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1752 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1753 return m; |
| 86 | 1754 } |
| 1755 | |
| 5372 | 1756 static PyObject * |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45145
diff
changeset
|
1757 makepathobject(const wchar_t *path, wchar_t delim) |
| 86 | 1758 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1759 int i, n; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1760 const wchar_t *p; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1761 PyObject *v, *w; |
|
36211
6d743e5baf14
Trimmed trailing whitespace.
Tim Peters <tim.peters@gmail.com>
parents:
36207
diff
changeset
|
1762 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1763 n = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1764 p = path; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1765 while ((p = wcschr(p, delim)) != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1766 n++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1767 p++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1768 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1769 v = PyList_New(n); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1770 if (v == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1771 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1772 for (i = 0; ; i++) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1773 p = wcschr(path, delim); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1774 if (p == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1775 p = path + wcslen(path); /* End of string */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1776 w = PyUnicode_FromWideChar(path, (Py_ssize_t)(p - path)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1777 if (w == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1778 Py_DECREF(v); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1779 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1780 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1781 PyList_SetItem(v, i, w); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1782 if (*p == '\0') |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1783 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1784 path = p+1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1785 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1786 return v; |
| 86 | 1787 } |
| 1788 | |
| 1789 void | |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45145
diff
changeset
|
1790 PySys_SetPath(const wchar_t *path) |
| 86 | 1791 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1792 PyObject *v; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1793 if ((v = makepathobject(path, DELIM)) == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1794 Py_FatalError("can't create sys.path"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1795 if (PySys_SetObject("path", v) != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1796 Py_FatalError("can't assign sys.path"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1797 Py_DECREF(v); |
|
83
f6bcf3c1d714
Empty all modules' symbol tables, so most circular references are
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
1798 } |
|
f6bcf3c1d714
Empty all modules' symbol tables, so most circular references are
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
1799 |
| 5372 | 1800 static PyObject * |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45145
diff
changeset
|
1801 makeargvobject(int argc, wchar_t **argv) |
|
83
f6bcf3c1d714
Empty all modules' symbol tables, so most circular references are
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
1802 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1803 PyObject *av; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1804 if (argc <= 0 || argv == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1805 /* Ensure at least one (empty) argument is seen */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1806 static wchar_t *empty_argv[1] = {L""}; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1807 argv = empty_argv; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1808 argc = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1809 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1810 av = PyList_New(argc); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1811 if (av != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1812 int i; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1813 for (i = 0; i < argc; i++) { |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1814 #ifdef __VMS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1815 PyObject *v; |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1816 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1817 /* argv[0] is the script pathname if known */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1818 if (i == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1819 char* fn = decc$translate_vms(argv[0]); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1820 if ((fn == (char *)0) || fn == (char *)-1) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1821 v = PyUnicode_FromString(argv[0]); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1822 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1823 v = PyUnicode_FromString( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1824 decc$translate_vms(argv[0])); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1825 } else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1826 v = PyUnicode_FromString(argv[i]); |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1827 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1828 PyObject *v = PyUnicode_FromWideChar(argv[i], -1); |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1829 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1830 if (v == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1831 Py_DECREF(av); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1832 av = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1833 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1834 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1835 PyList_SetItem(av, i, v); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1836 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1837 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1838 return av; |
| 6 | 1839 } |
| 1840 | |
|
64110
212a16f906a6
Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents:
64064
diff
changeset
|
1841 #define _HAVE_SCRIPT_ARGUMENT(argc, argv) \ |
|
212a16f906a6
Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents:
64064
diff
changeset
|
1842 (argc > 0 && argv0 != NULL && \ |
|
212a16f906a6
Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents:
64064
diff
changeset
|
1843 wcscmp(argv0, L"-c") != 0 && wcscmp(argv0, L"-m") != 0) |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1844 |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1845 static void |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1846 sys_update_path(int argc, wchar_t **argv) |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45145
diff
changeset
|
1847 { |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1848 wchar_t *argv0; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1849 wchar_t *p = NULL; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1850 Py_ssize_t n = 0; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1851 PyObject *a; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1852 PyObject *path; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1853 #ifdef HAVE_READLINK |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1854 wchar_t link[MAXPATHLEN+1]; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1855 wchar_t argv0copy[2*MAXPATHLEN+1]; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1856 int nr = 0; |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45145
diff
changeset
|
1857 #endif |
|
27977
0fe321e78ad3
- sys.path[0] (the directory from which the script is loaded) is now
Guido van Rossum <guido@python.org>
parents:
27712
diff
changeset
|
1858 #if defined(HAVE_REALPATH) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1859 wchar_t fullpath[MAXPATHLEN]; |
|
50743
e8154bd322cb
Merged revisions 68540 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49613
diff
changeset
|
1860 #elif defined(MS_WINDOWS) && !defined(MS_WINCE) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1861 wchar_t fullpath[MAX_PATH]; |
|
27156
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1862 #endif |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1863 |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1864 path = PySys_GetObject("path"); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1865 if (path == NULL) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1866 return; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1867 |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1868 argv0 = argv[0]; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1869 |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1870 #ifdef HAVE_READLINK |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1871 if (_HAVE_SCRIPT_ARGUMENT(argc, argv)) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1872 nr = _Py_wreadlink(argv0, link, MAXPATHLEN); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1873 if (nr > 0) { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1874 /* It's a symlink */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1875 link[nr] = '\0'; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1876 if (link[0] == SEP) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1877 argv0 = link; /* Link to absolute path */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1878 else if (wcschr(link, SEP) == NULL) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1879 ; /* Link without path */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1880 else { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1881 /* Must join(dirname(argv0), link) */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1882 wchar_t *q = wcsrchr(argv0, SEP); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1883 if (q == NULL) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1884 argv0 = link; /* argv0 without path */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1885 else { |
|
84785
dca92e8a011a
Issue #15905: Fix theoretical buffer overflow in handling of sys.argv[0],
Christian Heimes <christian@cheimes.de>
parents:
78029
diff
changeset
|
1886 /* Must make a copy, argv0copy has room for 2 * MAXPATHLEN */ |
|
dca92e8a011a
Issue #15905: Fix theoretical buffer overflow in handling of sys.argv[0],
Christian Heimes <christian@cheimes.de>
parents:
78029
diff
changeset
|
1887 wcsncpy(argv0copy, argv0, MAXPATHLEN); |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1888 q = wcsrchr(argv0copy, SEP); |
|
84785
dca92e8a011a
Issue #15905: Fix theoretical buffer overflow in handling of sys.argv[0],
Christian Heimes <christian@cheimes.de>
parents:
78029
diff
changeset
|
1889 wcsncpy(q+1, link, MAXPATHLEN); |
|
dca92e8a011a
Issue #15905: Fix theoretical buffer overflow in handling of sys.argv[0],
Christian Heimes <christian@cheimes.de>
parents:
78029
diff
changeset
|
1890 q[MAXPATHLEN + 1] = L'\0'; |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1891 argv0 = argv0copy; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1892 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1893 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1894 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1895 #endif /* HAVE_READLINK */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1896 #if SEP == '\\' /* Special case for MS filename syntax */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1897 if (_HAVE_SCRIPT_ARGUMENT(argc, argv)) { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1898 wchar_t *q; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1899 #if defined(MS_WINDOWS) && !defined(MS_WINCE) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1900 /* This code here replaces the first element in argv with the full |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1901 path that it represents. Under CE, there are no relative paths so |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1902 the argument must be the full path anyway. */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1903 wchar_t *ptemp; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1904 if (GetFullPathNameW(argv0, |
|
72510
b534b56379cb
Use the new Py_ARRAY_LENGTH macro
Victor Stinner <victor.stinner@haypocalc.com>
parents:
72503
diff
changeset
|
1905 Py_ARRAY_LENGTH(fullpath), |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1906 fullpath, |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1907 &ptemp)) { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1908 argv0 = fullpath; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1909 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1910 #endif |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1911 p = wcsrchr(argv0, SEP); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1912 /* Test for alternate separator */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1913 q = wcsrchr(p ? p : argv0, '/'); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1914 if (q != NULL) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1915 p = q; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1916 if (p != NULL) { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1917 n = p + 1 - argv0; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1918 if (n > 1 && p[-1] != ':') |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1919 n--; /* Drop trailing separator */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1920 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1921 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1922 #else /* All other filename syntaxes */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1923 if (_HAVE_SCRIPT_ARGUMENT(argc, argv)) { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1924 #if defined(HAVE_REALPATH) |
|
65166
8fd5d06462e6
_Py_wrealpath() requires the size of the output buffer
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65162
diff
changeset
|
1925 if (_Py_wrealpath(argv0, fullpath, PATH_MAX)) { |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1926 argv0 = fullpath; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1927 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1928 #endif |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1929 p = wcsrchr(argv0, SEP); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1930 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1931 if (p != NULL) { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1932 n = p + 1 - argv0; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1933 #if SEP == '/' /* Special case for Unix filename syntax */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1934 if (n > 1) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1935 n--; /* Drop trailing separator */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1936 #endif /* Unix */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1937 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1938 #endif /* All others */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1939 a = PyUnicode_FromWideChar(argv0, n); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1940 if (a == NULL) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1941 Py_FatalError("no mem for sys.path insertion"); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1942 if (PyList_Insert(path, 0, a) < 0) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1943 Py_FatalError("sys.path.insert(0) failed"); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1944 Py_DECREF(a); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1945 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1946 |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1947 void |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1948 PySys_SetArgvEx(int argc, wchar_t **argv, int updatepath) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1949 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1950 PyObject *av = makeargvobject(argc, argv); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1951 if (av == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1952 Py_FatalError("no mem for sys.argv"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1953 if (PySys_SetObject("argv", av) != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1954 Py_FatalError("can't assign sys.argv"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1955 Py_DECREF(av); |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1956 if (updatepath) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1957 sys_update_path(argc, argv); |
| 6 | 1958 } |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1959 |
|
61791
9db8c414921f
Merged revisions 81400 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1960 void |
|
9db8c414921f
Merged revisions 81400 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1961 PySys_SetArgv(int argc, wchar_t **argv) |
|
9db8c414921f
Merged revisions 81400 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1962 { |
|
85081
dd0d751cc7f1
Issue #16400: Add command line option for isolated mode.
Christian Heimes <christian@cheimes.de>
parents:
84795
diff
changeset
|
1963 PySys_SetArgvEx(argc, argv, Py_IsolatedFlag == 0); |
|
61791
9db8c414921f
Merged revisions 81400 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1964 } |
|
9db8c414921f
Merged revisions 81400 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1965 |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1966 /* Reimplementation of PyFile_WriteString() no calling indirectly |
|
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1967 PyErr_CheckSignals(): avoid the call to PyObject_Str(). */ |
|
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1968 |
|
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1969 static int |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1970 sys_pyfile_write_unicode(PyObject *unicode, PyObject *file) |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1971 { |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1972 PyObject *writer = NULL, *args = NULL, *result = NULL; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1973 int err; |
|
72925
7109f31300fb
Rename _Py_identifier to _Py_IDENTIFIER.
Martin v. Löwis <martin@v.loewis.de>
parents:
72848
diff
changeset
|
1974 _Py_IDENTIFIER(write); |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1975 |
|
62190
7ccc55811413
Merged revisions 81841 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61791
diff
changeset
|
1976 if (file == NULL) |
|
7ccc55811413
Merged revisions 81841 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61791
diff
changeset
|
1977 return -1; |
|
7ccc55811413
Merged revisions 81841 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61791
diff
changeset
|
1978 |
|
72848
81380082d216
Use identifier API for PyObject_GetAttrString.
Martin v. Löwis <martin@v.loewis.de>
parents:
72835
diff
changeset
|
1979 writer = _PyObject_GetAttrId(file, &PyId_write); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1980 if (writer == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1981 goto error; |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1982 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1983 args = PyTuple_Pack(1, unicode); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1984 if (args == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1985 goto error; |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1986 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1987 result = PyEval_CallObject(writer, args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1988 if (result == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1989 goto error; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1990 } else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1991 err = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1992 goto finally; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1993 } |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1994 |
|
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1995 error: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1996 err = -1; |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1997 finally: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1998 Py_XDECREF(writer); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1999 Py_XDECREF(args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2000 Py_XDECREF(result); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2001 return err; |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
2002 } |
|
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
2003 |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2004 static int |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2005 sys_pyfile_write(const char *text, PyObject *file) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2006 { |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2007 PyObject *unicode = NULL; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2008 int err; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2009 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2010 if (file == NULL) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2011 return -1; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2012 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2013 unicode = PyUnicode_FromString(text); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2014 if (unicode == NULL) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2015 return -1; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2016 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2017 err = sys_pyfile_write_unicode(unicode, file); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2018 Py_DECREF(unicode); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2019 return err; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2020 } |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2021 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2022 /* APIs to write to sys.stdout or sys.stderr using a printf-like interface. |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2023 Adapted from code submitted by Just van Rossum. |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2024 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2025 PySys_WriteStdout(format, ...) |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2026 PySys_WriteStderr(format, ...) |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2027 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2028 The first function writes to sys.stdout; the second to sys.stderr. When |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2029 there is a problem, they write to the real (C level) stdout or stderr; |
|
9328
81574e4646b4
Patches for mywrite() by Marc Lemburg: save/restore the error state
Guido van Rossum <guido@python.org>
parents:
8840
diff
changeset
|
2030 no exceptions are raised. |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2031 |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
2032 PyErr_CheckSignals() is not called to avoid the execution of the Python |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2033 signal handlers: they may raise a new exception whereas sys_write() |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2034 ignores all exceptions. |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
2035 |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2036 Both take a printf-style format string as their first argument followed |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2037 by a variable length argument list determined by the format string. |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2038 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2039 *** WARNING *** |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2040 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2041 The format should limit the total size of the formatted output string to |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2042 1000 bytes. In particular, this means that no unrestricted "%s" formats |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2043 should occur; these should be limited using "%.<N>s where <N> is a |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2044 decimal number calculated so that <N> plus the maximum size of other |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2045 formatted text does not exceed 1000 bytes. Also watch out for "%f", |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2046 which can print hundreds of digits for very large numbers. |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2047 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2048 */ |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2049 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2050 static void |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2051 sys_write(char *name, FILE *fp, const char *format, va_list va) |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2052 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2053 PyObject *file; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2054 PyObject *error_type, *error_value, *error_traceback; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2055 char buffer[1001]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2056 int written; |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2057 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2058 PyErr_Fetch(&error_type, &error_value, &error_traceback); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2059 file = PySys_GetObject(name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2060 written = PyOS_vsnprintf(buffer, sizeof(buffer), format, va); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2061 if (sys_pyfile_write(buffer, file) != 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2062 PyErr_Clear(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2063 fputs(buffer, fp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2064 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2065 if (written < 0 || (size_t)written >= sizeof(buffer)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2066 const char *truncated = "... truncated"; |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2067 if (sys_pyfile_write(truncated, file) != 0) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2068 fputs(truncated, fp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2069 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2070 PyErr_Restore(error_type, error_value, error_traceback); |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2071 } |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2072 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2073 void |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2074 PySys_WriteStdout(const char *format, ...) |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2075 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2076 va_list va; |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2077 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2078 va_start(va, format); |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2079 sys_write("stdout", stdout, format, va); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2080 va_end(va); |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2081 } |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2082 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2083 void |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2084 PySys_WriteStderr(const char *format, ...) |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2085 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2086 va_list va; |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2087 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2088 va_start(va, format); |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2089 sys_write("stderr", stderr, format, va); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
2090 va_end(va); |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
2091 } |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2092 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2093 static void |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2094 sys_format(char *name, FILE *fp, const char *format, va_list va) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2095 { |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2096 PyObject *file, *message; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2097 PyObject *error_type, *error_value, *error_traceback; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2098 char *utf8; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2099 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2100 PyErr_Fetch(&error_type, &error_value, &error_traceback); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2101 file = PySys_GetObject(name); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2102 message = PyUnicode_FromFormatV(format, va); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2103 if (message != NULL) { |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2104 if (sys_pyfile_write_unicode(message, file) != 0) { |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2105 PyErr_Clear(); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2106 utf8 = _PyUnicode_AsString(message); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2107 if (utf8 != NULL) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2108 fputs(utf8, fp); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2109 } |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2110 Py_DECREF(message); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2111 } |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2112 PyErr_Restore(error_type, error_value, error_traceback); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2113 } |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2114 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2115 void |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2116 PySys_FormatStdout(const char *format, ...) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2117 { |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2118 va_list va; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2119 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2120 va_start(va, format); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2121 sys_format("stdout", stdout, format, va); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2122 va_end(va); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2123 } |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2124 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2125 void |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2126 PySys_FormatStderr(const char *format, ...) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2127 { |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2128 va_list va; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2129 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2130 va_start(va, format); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2131 sys_format("stderr", stderr, format, va); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2132 va_end(va); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2133 } |
