Mercurial > cpython-lru_cache-weakref
annotate Python/exceptions.c @ 25635:a94f272e600d 2.2
Backport my checkin of revision 2.264 of Python/compile.c:
Clamp code objects' tp_compare result to [-1, 1].
Bugfix candidate.
| author | Michael W. Hudson <mwh@python.net> |
|---|---|
| date | Mon, 07 Oct 2002 11:30:07 +0000 |
| parents | 2bfe44c4dacb |
| children |
| rev | line source |
|---|---|
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1 /* This module provides the suite of standard class-based exceptions for |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
2 * Python's builtin module. This is a complete C implementation of what, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
3 * in Python 1.5.2, was contained in the exceptions.py module. The problem |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
4 * there was that if exceptions.py could not be imported for some reason, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
5 * the entire interpreter would abort. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
6 * |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
7 * By moving the exceptions into C and statically linking, we can guarantee |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
8 * that the standard exceptions will always be available. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
9 * |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
10 * history: |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
11 * 98-08-19 fl created (for pyexe) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
12 * 00-02-08 fl updated for 1.5.2 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
13 * 26-May-2000 baw vetted for Python 1.6 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
14 * |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
15 * written by Fredrik Lundh |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
16 * modifications, additions, cleanups, and proofreading by Barry Warsaw |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
17 * |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
18 * Copyright (c) 1998-2000 by Secret Labs AB. All rights reserved. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
19 */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
20 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
21 #include "Python.h" |
|
13996
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
22 #include "osdefs.h" |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
23 |
|
13565
e558eb228a46
Worm around MSVC6 error on single string literal > 2Kb.
Tim Peters <tim.peters@gmail.com>
parents:
13539
diff
changeset
|
24 /* Caution: MS Visual C++ 6 errors if a single string literal exceeds |
|
e558eb228a46
Worm around MSVC6 error on single string literal > 2Kb.
Tim Peters <tim.peters@gmail.com>
parents:
13539
diff
changeset
|
25 * 2Kb. So the module docstring has been broken roughly in half, using |
|
e558eb228a46
Worm around MSVC6 error on single string literal > 2Kb.
Tim Peters <tim.peters@gmail.com>
parents:
13539
diff
changeset
|
26 * compile-time literal concatenation. |
|
e558eb228a46
Worm around MSVC6 error on single string literal > 2Kb.
Tim Peters <tim.peters@gmail.com>
parents:
13539
diff
changeset
|
27 */ |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
28 static char |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
29 module__doc__[] = |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
30 "Python's standard exception class hierarchy.\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
31 \n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
32 Before Python 1.5, the standard exceptions were all simple string objects.\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
33 In Python 1.5, the standard exceptions were converted to classes organized\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
34 into a relatively flat hierarchy. String-based standard exceptions were\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
35 optional, or used as a fallback if some problem occurred while importing\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
36 the exception module. With Python 1.6, optional string-based standard\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
37 exceptions were removed (along with the -X command line flag).\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
38 \n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
39 The class exceptions were implemented in such a way as to be almost\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
40 completely backward compatible. Some tricky uses of IOError could\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
41 potentially have broken, but by Python 1.6, all of these should have\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
42 been fixed. As of Python 1.6, the class-based standard exceptions are\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
43 now implemented in C, and are guaranteed to exist in the Python\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
44 interpreter.\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
45 \n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
46 Here is a rundown of the class hierarchy. The classes found here are\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
47 inserted into both the exceptions module and the `built-in' module. It is\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
48 recommended that user defined class based exceptions be derived from the\n\ |
|
13565
e558eb228a46
Worm around MSVC6 error on single string literal > 2Kb.
Tim Peters <tim.peters@gmail.com>
parents:
13539
diff
changeset
|
49 `Exception' class, although this is currently not enforced.\n" |
|
e558eb228a46
Worm around MSVC6 error on single string literal > 2Kb.
Tim Peters <tim.peters@gmail.com>
parents:
13539
diff
changeset
|
50 /* keep string pieces "small" */ |
|
e558eb228a46
Worm around MSVC6 error on single string literal > 2Kb.
Tim Peters <tim.peters@gmail.com>
parents:
13539
diff
changeset
|
51 "\n\ |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
52 Exception\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
53 |\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
54 +-- SystemExit\n\ |
|
17597
32e7d0898eab
Iterators phase 1. This comprises:
Guido van Rossum <guido@python.org>
parents:
17518
diff
changeset
|
55 +-- StopIteration\n\ |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
56 +-- StandardError\n\ |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
57 | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
58 | +-- KeyboardInterrupt\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
59 | +-- ImportError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
60 | +-- EnvironmentError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
61 | | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
62 | | +-- IOError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
63 | | +-- OSError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
64 | | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
65 | | +-- WindowsError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
66 | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
67 | +-- EOFError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
68 | +-- RuntimeError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
69 | | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
70 | | +-- NotImplementedError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
71 | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
72 | +-- NameError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
73 | | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
74 | | +-- UnboundLocalError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
75 | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
76 | +-- AttributeError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
77 | +-- SyntaxError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
78 | | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
79 | | +-- IndentationError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
80 | | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
81 | | +-- TabError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
82 | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
83 | +-- TypeError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
84 | +-- AssertionError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
85 | +-- LookupError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
86 | | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
87 | | +-- IndexError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
88 | | +-- KeyError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
89 | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
90 | +-- ArithmeticError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
91 | | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
92 | | +-- OverflowError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
93 | | +-- ZeroDivisionError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
94 | | +-- FloatingPointError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
95 | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
96 | +-- ValueError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
97 | | |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
98 | | +-- UnicodeError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
99 | |\n\ |
|
20279
8b3ea7335c1b
weakref.ReferenceError becomes a built-in exception now that weak ref objects
Fred Drake <fdrake@acm.org>
parents:
19433
diff
changeset
|
100 | +-- ReferenceError\n\ |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
101 | +-- SystemError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
102 | +-- MemoryError\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
103 |\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
104 +---Warning\n\ |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
105 |\n\ |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
106 +-- UserWarning\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
107 +-- DeprecationWarning\n\ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
108 +-- SyntaxWarning\n\ |
|
19433
5d81c6bff306
Introduce OverflowWarning -- to be issued when short int operations
Guido van Rossum <guido@python.org>
parents:
18933
diff
changeset
|
109 +-- OverflowWarning\n\ |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
110 +-- RuntimeWarning"; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
111 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
112 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
113 /* Helper function for populating a dictionary with method wrappers. */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
114 static int |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
115 populate_methods(PyObject *klass, PyObject *dict, PyMethodDef *methods) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
116 { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
117 if (!methods) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
118 return 0; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
119 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
120 while (methods->ml_name) { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
121 /* get a wrapper for the built-in function */ |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
122 PyObject *func = PyCFunction_New(methods, NULL); |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
123 PyObject *meth; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
124 int status; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
125 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
126 if (!func) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
127 return -1; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
128 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
129 /* turn the function into an unbound method */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
130 if (!(meth = PyMethod_New(func, NULL, klass))) { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
131 Py_DECREF(func); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
132 return -1; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
133 } |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
134 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
135 /* add method to dictionary */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
136 status = PyDict_SetItemString(dict, methods->ml_name, meth); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
137 Py_DECREF(meth); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
138 Py_DECREF(func); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
139 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
140 /* stop now if an error occurred, otherwise do the next method */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
141 if (status) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
142 return status; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
143 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
144 methods++; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
145 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
146 return 0; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
147 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
148 |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
149 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
150 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
151 /* This function is used to create all subsequent exception classes. */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
152 static int |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
153 make_class(PyObject **klass, PyObject *base, |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
154 char *name, PyMethodDef *methods, |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
155 char *docstr) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
156 { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
157 PyObject *dict = PyDict_New(); |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
158 PyObject *str = NULL; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
159 int status = -1; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
160 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
161 if (!dict) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
162 return -1; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
163 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
164 /* If an error occurs from here on, goto finally instead of explicitly |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
165 * returning NULL. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
166 */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
167 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
168 if (docstr) { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
169 if (!(str = PyString_FromString(docstr))) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
170 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
171 if (PyDict_SetItemString(dict, "__doc__", str)) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
172 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
173 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
174 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
175 if (!(*klass = PyErr_NewException(name, base, dict))) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
176 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
177 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
178 if (populate_methods(*klass, dict, methods)) { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
179 Py_DECREF(*klass); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
180 *klass = NULL; |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
181 goto finally; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
182 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
183 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
184 status = 0; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
185 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
186 finally: |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
187 Py_XDECREF(dict); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
188 Py_XDECREF(str); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
189 return status; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
190 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
191 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
192 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
193 /* Use this for *args signatures, otherwise just use PyArg_ParseTuple() */ |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
194 static PyObject * |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
195 get_self(PyObject *args) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
196 { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
197 PyObject *self = PyTuple_GetItem(args, 0); |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
198 if (!self) { |
|
13620
5b727ab37092
Spelling fixes supplied by Rob W. W. Hooft. All these are fixes in either
Thomas Wouters <thomas@python.org>
parents:
13576
diff
changeset
|
199 /* Watch out for being called to early in the bootstrapping process */ |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
200 if (PyExc_TypeError) { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
201 PyErr_SetString(PyExc_TypeError, |
| 15318 | 202 "unbound method must be called with instance as first argument"); |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
203 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
204 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
205 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
206 return self; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
207 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
208 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
209 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
210 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
211 /* Notes on bootstrapping the exception classes. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
212 * |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
213 * First thing we create is the base class for all exceptions, called |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
214 * appropriately enough: Exception. Creation of this class makes no |
|
13182
1e302d996d58
replace constant 1 with symbolic constant METH_VARARGS
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
12968
diff
changeset
|
215 * assumptions about the existence of any other exception class -- except |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
216 * for TypeError, which can conditionally exist. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
217 * |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
218 * Next, StandardError is created (which is quite simple) followed by |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
219 * TypeError, because the instantiation of other exceptions can potentially |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
220 * throw a TypeError. Once these exceptions are created, all the others |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
221 * can be created in any order. See the static exctable below for the |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
222 * explicit bootstrap order. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
223 * |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
224 * All classes after Exception can be created using PyErr_NewException(). |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
225 */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
226 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
227 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
228 Exception__doc__[] = "Common base class for all exceptions."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
229 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
230 |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
231 static PyObject * |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
232 Exception__init__(PyObject *self, PyObject *args) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
233 { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
234 int status; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
235 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
236 if (!(self = get_self(args))) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
237 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
238 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
239 /* set args attribute */ |
|
13576
61e4c29d53d8
replace PyXXX_Length calls with PyXXX_Size calls
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
13565
diff
changeset
|
240 /* XXX size is only a hint */ |
|
61e4c29d53d8
replace PyXXX_Length calls with PyXXX_Size calls
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
13565
diff
changeset
|
241 args = PySequence_GetSlice(args, 1, PySequence_Size(args)); |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
242 if (!args) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
243 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
244 status = PyObject_SetAttrString(self, "args", args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
245 Py_DECREF(args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
246 if (status < 0) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
247 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
248 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
249 Py_INCREF(Py_None); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
250 return Py_None; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
251 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
252 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
253 |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
254 static PyObject * |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
255 Exception__str__(PyObject *self, PyObject *args) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
256 { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
257 PyObject *out; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
258 |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
259 if (!PyArg_ParseTuple(args, "O:__str__", &self)) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
260 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
261 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
262 args = PyObject_GetAttrString(self, "args"); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
263 if (!args) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
264 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
265 |
|
13576
61e4c29d53d8
replace PyXXX_Length calls with PyXXX_Size calls
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
13565
diff
changeset
|
266 switch (PySequence_Size(args)) { |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
267 case 0: |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
268 out = PyString_FromString(""); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
269 break; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
270 case 1: |
|
13484
67fd19d74528
Exception__str__(): In case 1, be sure to decref the tmp local
Barry Warsaw <barry@python.org>
parents:
13453
diff
changeset
|
271 { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
272 PyObject *tmp = PySequence_GetItem(args, 0); |
|
13484
67fd19d74528
Exception__str__(): In case 1, be sure to decref the tmp local
Barry Warsaw <barry@python.org>
parents:
13453
diff
changeset
|
273 if (tmp) { |
|
67fd19d74528
Exception__str__(): In case 1, be sure to decref the tmp local
Barry Warsaw <barry@python.org>
parents:
13453
diff
changeset
|
274 out = PyObject_Str(tmp); |
|
67fd19d74528
Exception__str__(): In case 1, be sure to decref the tmp local
Barry Warsaw <barry@python.org>
parents:
13453
diff
changeset
|
275 Py_DECREF(tmp); |
|
67fd19d74528
Exception__str__(): In case 1, be sure to decref the tmp local
Barry Warsaw <barry@python.org>
parents:
13453
diff
changeset
|
276 } |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
277 else |
|
13484
67fd19d74528
Exception__str__(): In case 1, be sure to decref the tmp local
Barry Warsaw <barry@python.org>
parents:
13453
diff
changeset
|
278 out = NULL; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
279 break; |
|
13484
67fd19d74528
Exception__str__(): In case 1, be sure to decref the tmp local
Barry Warsaw <barry@python.org>
parents:
13453
diff
changeset
|
280 } |
|
25371
2bfe44c4dacb
Backported 1.39 and 1.40 from trunk:
Guido van Rossum <guido@python.org>
parents:
22121
diff
changeset
|
281 case -1: |
|
2bfe44c4dacb
Backported 1.39 and 1.40 from trunk:
Guido van Rossum <guido@python.org>
parents:
22121
diff
changeset
|
282 PyErr_Clear(); |
|
2bfe44c4dacb
Backported 1.39 and 1.40 from trunk:
Guido van Rossum <guido@python.org>
parents:
22121
diff
changeset
|
283 /* Fall through */ |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
284 default: |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
285 out = PyObject_Str(args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
286 break; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
287 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
288 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
289 Py_DECREF(args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
290 return out; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
291 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
292 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
293 |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
294 static PyObject * |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
295 Exception__getitem__(PyObject *self, PyObject *args) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
296 { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
297 PyObject *out; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
298 PyObject *index; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
299 |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
300 if (!PyArg_ParseTuple(args, "OO:__getitem__", &self, &index)) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
301 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
302 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
303 args = PyObject_GetAttrString(self, "args"); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
304 if (!args) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
305 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
306 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
307 out = PyObject_GetItem(args, index); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
308 Py_DECREF(args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
309 return out; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
310 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
311 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
312 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
313 static PyMethodDef |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
314 Exception_methods[] = { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
315 /* methods for the Exception class */ |
|
13182
1e302d996d58
replace constant 1 with symbolic constant METH_VARARGS
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
12968
diff
changeset
|
316 { "__getitem__", Exception__getitem__, METH_VARARGS}, |
|
1e302d996d58
replace constant 1 with symbolic constant METH_VARARGS
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
12968
diff
changeset
|
317 { "__str__", Exception__str__, METH_VARARGS}, |
|
1e302d996d58
replace constant 1 with symbolic constant METH_VARARGS
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
12968
diff
changeset
|
318 { "__init__", Exception__init__, METH_VARARGS}, |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
319 { NULL, NULL } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
320 }; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
321 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
322 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
323 static int |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
324 make_Exception(char *modulename) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
325 { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
326 PyObject *dict = PyDict_New(); |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
327 PyObject *str = NULL; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
328 PyObject *name = NULL; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
329 int status = -1; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
330 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
331 if (!dict) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
332 return -1; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
333 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
334 /* If an error occurs from here on, goto finally instead of explicitly |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
335 * returning NULL. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
336 */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
337 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
338 if (!(str = PyString_FromString(modulename))) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
339 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
340 if (PyDict_SetItemString(dict, "__module__", str)) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
341 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
342 Py_DECREF(str); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
343 if (!(str = PyString_FromString(Exception__doc__))) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
344 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
345 if (PyDict_SetItemString(dict, "__doc__", str)) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
346 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
347 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
348 if (!(name = PyString_FromString("Exception"))) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
349 goto finally; |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
350 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
351 if (!(PyExc_Exception = PyClass_New(NULL, dict, name))) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
352 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
353 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
354 /* Now populate the dictionary with the method suite */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
355 if (populate_methods(PyExc_Exception, dict, Exception_methods)) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
356 /* Don't need to reclaim PyExc_Exception here because that'll |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
357 * happen during interpreter shutdown. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
358 */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
359 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
360 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
361 status = 0; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
362 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
363 finally: |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
364 Py_XDECREF(dict); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
365 Py_XDECREF(str); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
366 Py_XDECREF(name); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
367 return status; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
368 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
369 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
370 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
371 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
372 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
373 StandardError__doc__[] = "Base class for all standard Python exceptions."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
374 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
375 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
376 TypeError__doc__[] = "Inappropriate argument type."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
377 |
|
17597
32e7d0898eab
Iterators phase 1. This comprises:
Guido van Rossum <guido@python.org>
parents:
17518
diff
changeset
|
378 static char |
|
32e7d0898eab
Iterators phase 1. This comprises:
Guido van Rossum <guido@python.org>
parents:
17518
diff
changeset
|
379 StopIteration__doc__[] = "Signal the end from iterator.next()."; |
|
32e7d0898eab
Iterators phase 1. This comprises:
Guido van Rossum <guido@python.org>
parents:
17518
diff
changeset
|
380 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
381 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
382 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
383 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
384 SystemExit__doc__[] = "Request to exit from the interpreter."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
385 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
386 |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
387 static PyObject * |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
388 SystemExit__init__(PyObject *self, PyObject *args) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
389 { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
390 PyObject *code; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
391 int status; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
392 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
393 if (!(self = get_self(args))) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
394 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
395 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
396 /* Set args attribute. */ |
|
13576
61e4c29d53d8
replace PyXXX_Length calls with PyXXX_Size calls
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
13565
diff
changeset
|
397 if (!(args = PySequence_GetSlice(args, 1, PySequence_Size(args)))) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
398 return NULL; |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
399 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
400 status = PyObject_SetAttrString(self, "args", args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
401 if (status < 0) { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
402 Py_DECREF(args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
403 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
404 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
405 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
406 /* set code attribute */ |
|
13576
61e4c29d53d8
replace PyXXX_Length calls with PyXXX_Size calls
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
13565
diff
changeset
|
407 switch (PySequence_Size(args)) { |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
408 case 0: |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
409 Py_INCREF(Py_None); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
410 code = Py_None; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
411 break; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
412 case 1: |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
413 code = PySequence_GetItem(args, 0); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
414 break; |
|
25371
2bfe44c4dacb
Backported 1.39 and 1.40 from trunk:
Guido van Rossum <guido@python.org>
parents:
22121
diff
changeset
|
415 case -1: |
|
2bfe44c4dacb
Backported 1.39 and 1.40 from trunk:
Guido van Rossum <guido@python.org>
parents:
22121
diff
changeset
|
416 PyErr_Clear(); |
|
2bfe44c4dacb
Backported 1.39 and 1.40 from trunk:
Guido van Rossum <guido@python.org>
parents:
22121
diff
changeset
|
417 /* Fall through */ |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
418 default: |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
419 Py_INCREF(args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
420 code = args; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
421 break; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
422 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
423 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
424 status = PyObject_SetAttrString(self, "code", code); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
425 Py_DECREF(code); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
426 Py_DECREF(args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
427 if (status < 0) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
428 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
429 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
430 Py_INCREF(Py_None); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
431 return Py_None; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
432 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
433 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
434 |
|
17518
f939ce52a734
Make some private symbols static.
Guido van Rossum <guido@python.org>
parents:
16852
diff
changeset
|
435 static PyMethodDef SystemExit_methods[] = { |
|
13182
1e302d996d58
replace constant 1 with symbolic constant METH_VARARGS
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
12968
diff
changeset
|
436 { "__init__", SystemExit__init__, METH_VARARGS}, |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
437 {NULL, NULL} |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
438 }; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
439 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
440 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
441 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
442 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
443 KeyboardInterrupt__doc__[] = "Program interrupted by user."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
444 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
445 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
446 ImportError__doc__[] = |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
447 "Import can't find module, or can't find name in module."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
448 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
449 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
450 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
451 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
452 EnvironmentError__doc__[] = "Base class for I/O related errors."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
453 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
454 |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
455 static PyObject * |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
456 EnvironmentError__init__(PyObject *self, PyObject *args) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
457 { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
458 PyObject *item0 = NULL; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
459 PyObject *item1 = NULL; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
460 PyObject *item2 = NULL; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
461 PyObject *subslice = NULL; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
462 PyObject *rtnval = NULL; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
463 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
464 if (!(self = get_self(args))) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
465 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
466 |
|
13576
61e4c29d53d8
replace PyXXX_Length calls with PyXXX_Size calls
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
13565
diff
changeset
|
467 if (!(args = PySequence_GetSlice(args, 1, PySequence_Size(args)))) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
468 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
469 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
470 if (PyObject_SetAttrString(self, "args", args) || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
471 PyObject_SetAttrString(self, "errno", Py_None) || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
472 PyObject_SetAttrString(self, "strerror", Py_None) || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
473 PyObject_SetAttrString(self, "filename", Py_None)) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
474 { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
475 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
476 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
477 |
|
13576
61e4c29d53d8
replace PyXXX_Length calls with PyXXX_Size calls
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
13565
diff
changeset
|
478 switch (PySequence_Size(args)) { |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
479 case 3: |
|
13453
d6198e703602
EnvironmentError__init__(): The two case clauses were missing
Barry Warsaw <barry@python.org>
parents:
13283
diff
changeset
|
480 /* Where a function has a single filename, such as open() or some |
|
d6198e703602
EnvironmentError__init__(): The two case clauses were missing
Barry Warsaw <barry@python.org>
parents:
13283
diff
changeset
|
481 * of the os module functions, PyErr_SetFromErrnoWithFilename() is |
|
d6198e703602
EnvironmentError__init__(): The two case clauses were missing
Barry Warsaw <barry@python.org>
parents:
13283
diff
changeset
|
482 * called, giving a third argument which is the filename. But, so |
|
d6198e703602
EnvironmentError__init__(): The two case clauses were missing
Barry Warsaw <barry@python.org>
parents:
13283
diff
changeset
|
483 * that old code using in-place unpacking doesn't break, e.g.: |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
484 * |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
485 * except IOError, (errno, strerror): |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
486 * |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
487 * we hack args so that it only contains two items. This also |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
488 * means we need our own __str__() which prints out the filename |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
489 * when it was supplied. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
490 */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
491 item0 = PySequence_GetItem(args, 0); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
492 item1 = PySequence_GetItem(args, 1); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
493 item2 = PySequence_GetItem(args, 2); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
494 if (!item0 || !item1 || !item2) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
495 goto finally; |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
496 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
497 if (PyObject_SetAttrString(self, "errno", item0) || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
498 PyObject_SetAttrString(self, "strerror", item1) || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
499 PyObject_SetAttrString(self, "filename", item2)) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
500 { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
501 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
502 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
503 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
504 subslice = PySequence_GetSlice(args, 0, 2); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
505 if (!subslice || PyObject_SetAttrString(self, "args", subslice)) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
506 goto finally; |
|
13453
d6198e703602
EnvironmentError__init__(): The two case clauses were missing
Barry Warsaw <barry@python.org>
parents:
13283
diff
changeset
|
507 break; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
508 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
509 case 2: |
|
13453
d6198e703602
EnvironmentError__init__(): The two case clauses were missing
Barry Warsaw <barry@python.org>
parents:
13283
diff
changeset
|
510 /* Used when PyErr_SetFromErrno() is called and no filename |
|
d6198e703602
EnvironmentError__init__(): The two case clauses were missing
Barry Warsaw <barry@python.org>
parents:
13283
diff
changeset
|
511 * argument is given. |
|
d6198e703602
EnvironmentError__init__(): The two case clauses were missing
Barry Warsaw <barry@python.org>
parents:
13283
diff
changeset
|
512 */ |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
513 item0 = PySequence_GetItem(args, 0); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
514 item1 = PySequence_GetItem(args, 1); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
515 if (!item0 || !item1) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
516 goto finally; |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
517 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
518 if (PyObject_SetAttrString(self, "errno", item0) || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
519 PyObject_SetAttrString(self, "strerror", item1)) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
520 { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
521 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
522 } |
|
13453
d6198e703602
EnvironmentError__init__(): The two case clauses were missing
Barry Warsaw <barry@python.org>
parents:
13283
diff
changeset
|
523 break; |
|
25371
2bfe44c4dacb
Backported 1.39 and 1.40 from trunk:
Guido van Rossum <guido@python.org>
parents:
22121
diff
changeset
|
524 |
|
2bfe44c4dacb
Backported 1.39 and 1.40 from trunk:
Guido van Rossum <guido@python.org>
parents:
22121
diff
changeset
|
525 case -1: |
|
2bfe44c4dacb
Backported 1.39 and 1.40 from trunk:
Guido van Rossum <guido@python.org>
parents:
22121
diff
changeset
|
526 PyErr_Clear(); |
|
2bfe44c4dacb
Backported 1.39 and 1.40 from trunk:
Guido van Rossum <guido@python.org>
parents:
22121
diff
changeset
|
527 break; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
528 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
529 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
530 Py_INCREF(Py_None); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
531 rtnval = Py_None; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
532 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
533 finally: |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
534 Py_DECREF(args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
535 Py_XDECREF(item0); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
536 Py_XDECREF(item1); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
537 Py_XDECREF(item2); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
538 Py_XDECREF(subslice); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
539 return rtnval; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
540 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
541 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
542 |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
543 static PyObject * |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
544 EnvironmentError__str__(PyObject *self, PyObject *args) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
545 { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
546 PyObject *originalself = self; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
547 PyObject *filename; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
548 PyObject *serrno; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
549 PyObject *strerror; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
550 PyObject *rtnval = NULL; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
551 |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
552 if (!PyArg_ParseTuple(args, "O:__str__", &self)) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
553 return NULL; |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
554 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
555 filename = PyObject_GetAttrString(self, "filename"); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
556 serrno = PyObject_GetAttrString(self, "errno"); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
557 strerror = PyObject_GetAttrString(self, "strerror"); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
558 if (!filename || !serrno || !strerror) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
559 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
560 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
561 if (filename != Py_None) { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
562 PyObject *fmt = PyString_FromString("[Errno %s] %s: %s"); |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
563 PyObject *repr = PyObject_Repr(filename); |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
564 PyObject *tuple = PyTuple_New(3); |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
565 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
566 if (!fmt || !repr || !tuple) { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
567 Py_XDECREF(fmt); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
568 Py_XDECREF(repr); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
569 Py_XDECREF(tuple); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
570 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
571 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
572 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
573 PyTuple_SET_ITEM(tuple, 0, serrno); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
574 PyTuple_SET_ITEM(tuple, 1, strerror); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
575 PyTuple_SET_ITEM(tuple, 2, repr); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
576 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
577 rtnval = PyString_Format(fmt, tuple); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
578 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
579 Py_DECREF(fmt); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
580 Py_DECREF(tuple); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
581 /* already freed because tuple owned only reference */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
582 serrno = NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
583 strerror = NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
584 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
585 else if (PyObject_IsTrue(serrno) && PyObject_IsTrue(strerror)) { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
586 PyObject *fmt = PyString_FromString("[Errno %s] %s"); |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
587 PyObject *tuple = PyTuple_New(2); |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
588 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
589 if (!fmt || !tuple) { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
590 Py_XDECREF(fmt); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
591 Py_XDECREF(tuple); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
592 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
593 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
594 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
595 PyTuple_SET_ITEM(tuple, 0, serrno); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
596 PyTuple_SET_ITEM(tuple, 1, strerror); |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
597 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
598 rtnval = PyString_Format(fmt, tuple); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
599 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
600 Py_DECREF(fmt); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
601 Py_DECREF(tuple); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
602 /* already freed because tuple owned only reference */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
603 serrno = NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
604 strerror = NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
605 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
606 else |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
607 /* The original Python code said: |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
608 * |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
609 * return StandardError.__str__(self) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
610 * |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
611 * but there is no StandardError__str__() function; we happen to |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
612 * know that's just a pass through to Exception__str__(). |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
613 */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
614 rtnval = Exception__str__(originalself, args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
615 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
616 finally: |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
617 Py_XDECREF(filename); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
618 Py_XDECREF(serrno); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
619 Py_XDECREF(strerror); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
620 return rtnval; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
621 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
622 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
623 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
624 static |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
625 PyMethodDef EnvironmentError_methods[] = { |
|
13182
1e302d996d58
replace constant 1 with symbolic constant METH_VARARGS
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
12968
diff
changeset
|
626 {"__init__", EnvironmentError__init__, METH_VARARGS}, |
|
1e302d996d58
replace constant 1 with symbolic constant METH_VARARGS
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
12968
diff
changeset
|
627 {"__str__", EnvironmentError__str__, METH_VARARGS}, |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
628 {NULL, NULL} |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
629 }; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
630 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
631 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
632 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
633 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
634 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
635 IOError__doc__[] = "I/O operation failed."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
636 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
637 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
638 OSError__doc__[] = "OS system call failed."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
639 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
640 #ifdef MS_WINDOWS |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
641 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
642 WindowsError__doc__[] = "MS-Windows OS system call failed."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
643 #endif /* MS_WINDOWS */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
644 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
645 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
646 EOFError__doc__[] = "Read beyond end of file."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
647 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
648 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
649 RuntimeError__doc__[] = "Unspecified run-time error."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
650 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
651 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
652 NotImplementedError__doc__[] = |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
653 "Method or function hasn't been implemented yet."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
654 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
655 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
656 NameError__doc__[] = "Name not found globally."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
657 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
658 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
659 UnboundLocalError__doc__[] = |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
660 "Local name referenced but not bound to a value."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
661 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
662 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
663 AttributeError__doc__[] = "Attribute not found."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
664 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
665 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
666 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
667 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
668 SyntaxError__doc__[] = "Invalid syntax."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
669 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
670 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
671 static int |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
672 SyntaxError__classinit__(PyObject *klass) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
673 { |
|
14054
e8301612e7d8
SyntaxError__classinit__(): Slight reorg for simplicity.
Barry Warsaw <barry@python.org>
parents:
14013
diff
changeset
|
674 int retval = 0; |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
675 PyObject *emptystring = PyString_FromString(""); |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
676 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
677 /* Additional class-creation time initializations */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
678 if (!emptystring || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
679 PyObject_SetAttrString(klass, "msg", emptystring) || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
680 PyObject_SetAttrString(klass, "filename", Py_None) || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
681 PyObject_SetAttrString(klass, "lineno", Py_None) || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
682 PyObject_SetAttrString(klass, "offset", Py_None) || |
|
22121
d4406fbfcb4e
Patch #50002: Display line information for bad \x escapes:
Martin v. Löwis <martin@v.loewis.de>
parents:
21072
diff
changeset
|
683 PyObject_SetAttrString(klass, "text", Py_None) || |
|
d4406fbfcb4e
Patch #50002: Display line information for bad \x escapes:
Martin v. Löwis <martin@v.loewis.de>
parents:
21072
diff
changeset
|
684 PyObject_SetAttrString(klass, "print_file_and_line", Py_None)) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
685 { |
|
14054
e8301612e7d8
SyntaxError__classinit__(): Slight reorg for simplicity.
Barry Warsaw <barry@python.org>
parents:
14013
diff
changeset
|
686 retval = -1; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
687 } |
|
14054
e8301612e7d8
SyntaxError__classinit__(): Slight reorg for simplicity.
Barry Warsaw <barry@python.org>
parents:
14013
diff
changeset
|
688 Py_XDECREF(emptystring); |
|
e8301612e7d8
SyntaxError__classinit__(): Slight reorg for simplicity.
Barry Warsaw <barry@python.org>
parents:
14013
diff
changeset
|
689 return retval; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
690 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
691 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
692 |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
693 static PyObject * |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
694 SyntaxError__init__(PyObject *self, PyObject *args) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
695 { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
696 PyObject *rtnval = NULL; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
697 int lenargs; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
698 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
699 if (!(self = get_self(args))) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
700 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
701 |
|
13576
61e4c29d53d8
replace PyXXX_Length calls with PyXXX_Size calls
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
13565
diff
changeset
|
702 if (!(args = PySequence_GetSlice(args, 1, PySequence_Size(args)))) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
703 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
704 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
705 if (PyObject_SetAttrString(self, "args", args)) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
706 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
707 |
|
13576
61e4c29d53d8
replace PyXXX_Length calls with PyXXX_Size calls
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
13565
diff
changeset
|
708 lenargs = PySequence_Size(args); |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
709 if (lenargs >= 1) { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
710 PyObject *item0 = PySequence_GetItem(args, 0); |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
711 int status; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
712 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
713 if (!item0) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
714 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
715 status = PyObject_SetAttrString(self, "msg", item0); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
716 Py_DECREF(item0); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
717 if (status) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
718 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
719 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
720 if (lenargs == 2) { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
721 PyObject *info = PySequence_GetItem(args, 1); |
|
16852
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
722 PyObject *filename = NULL, *lineno = NULL; |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
723 PyObject *offset = NULL, *text = NULL; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
724 int status = 1; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
725 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
726 if (!info) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
727 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
728 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
729 filename = PySequence_GetItem(info, 0); |
|
16852
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
730 if (filename != NULL) { |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
731 lineno = PySequence_GetItem(info, 1); |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
732 if (lineno != NULL) { |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
733 offset = PySequence_GetItem(info, 2); |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
734 if (offset != NULL) { |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
735 text = PySequence_GetItem(info, 3); |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
736 if (text != NULL) { |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
737 status = |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
738 PyObject_SetAttrString(self, "filename", filename) |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
739 || PyObject_SetAttrString(self, "lineno", lineno) |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
740 || PyObject_SetAttrString(self, "offset", offset) |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
741 || PyObject_SetAttrString(self, "text", text); |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
742 Py_DECREF(text); |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
743 } |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
744 Py_DECREF(offset); |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
745 } |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
746 Py_DECREF(lineno); |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
747 } |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
748 Py_DECREF(filename); |
|
847844248c6f
SyntaxError__init__(): Be a little more robust when picking apart the
Fred Drake <fdrake@acm.org>
parents:
16837
diff
changeset
|
749 } |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
750 Py_DECREF(info); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
751 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
752 if (status) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
753 goto finally; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
754 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
755 Py_INCREF(Py_None); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
756 rtnval = Py_None; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
757 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
758 finally: |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
759 Py_DECREF(args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
760 return rtnval; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
761 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
762 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
763 |
|
13996
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
764 /* This is called "my_basename" instead of just "basename" to avoid name |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
765 conflicts with glibc; basename is already prototyped if _GNU_SOURCE is |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
766 defined, and Python does define that. */ |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
767 static char * |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
768 my_basename(char *name) |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
769 { |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
770 char *cp = name; |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
771 char *result = name; |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
772 |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
773 if (name == NULL) |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
774 return "???"; |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
775 while (*cp != '\0') { |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
776 if (*cp == SEP) |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
777 result = cp + 1; |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
778 ++cp; |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
779 } |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
780 return result; |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
781 } |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
782 |
|
d8069efcd76e
my_basename(): Removes the leading path components from a path name,
Fred Drake <fdrake@acm.org>
parents:
13991
diff
changeset
|
783 |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
784 static PyObject * |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
785 SyntaxError__str__(PyObject *self, PyObject *args) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
786 { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
787 PyObject *msg; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
788 PyObject *str; |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
789 PyObject *filename, *lineno, *result; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
790 |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
791 if (!PyArg_ParseTuple(args, "O:__str__", &self)) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
792 return NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
793 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
794 if (!(msg = PyObject_GetAttrString(self, "msg"))) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
795 return NULL; |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
796 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
797 str = PyObject_Str(msg); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
798 Py_DECREF(msg); |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
799 result = str; |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
800 |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
801 /* XXX -- do all the additional formatting with filename and |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
802 lineno here */ |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
803 |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
804 if (PyString_Check(str)) { |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
805 int have_filename = 0; |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
806 int have_lineno = 0; |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
807 char *buffer = NULL; |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
808 |
|
14013
6c7fa523726f
SyntaxError__str__(): Fix two memory problems discovered by Insure.
Barry Warsaw <barry@python.org>
parents:
13996
diff
changeset
|
809 if ((filename = PyObject_GetAttrString(self, "filename")) != NULL) |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
810 have_filename = PyString_Check(filename); |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
811 else |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
812 PyErr_Clear(); |
|
14013
6c7fa523726f
SyntaxError__str__(): Fix two memory problems discovered by Insure.
Barry Warsaw <barry@python.org>
parents:
13996
diff
changeset
|
813 |
|
6c7fa523726f
SyntaxError__str__(): Fix two memory problems discovered by Insure.
Barry Warsaw <barry@python.org>
parents:
13996
diff
changeset
|
814 if ((lineno = PyObject_GetAttrString(self, "lineno")) != NULL) |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
815 have_lineno = PyInt_Check(lineno); |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
816 else |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
817 PyErr_Clear(); |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
818 |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
819 if (have_filename || have_lineno) { |
|
14013
6c7fa523726f
SyntaxError__str__(): Fix two memory problems discovered by Insure.
Barry Warsaw <barry@python.org>
parents:
13996
diff
changeset
|
820 int bufsize = PyString_GET_SIZE(str) + 64; |
|
6c7fa523726f
SyntaxError__str__(): Fix two memory problems discovered by Insure.
Barry Warsaw <barry@python.org>
parents:
13996
diff
changeset
|
821 if (have_filename) |
|
6c7fa523726f
SyntaxError__str__(): Fix two memory problems discovered by Insure.
Barry Warsaw <barry@python.org>
parents:
13996
diff
changeset
|
822 bufsize += PyString_GET_SIZE(filename); |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
823 |
|
21072
639c0a3ae8dc
Use PyOS_snprintf instead of sprintf.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20279
diff
changeset
|
824 buffer = PyMem_MALLOC(bufsize); |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
825 if (buffer != NULL) { |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
826 if (have_filename && have_lineno) |
|
21072
639c0a3ae8dc
Use PyOS_snprintf instead of sprintf.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20279
diff
changeset
|
827 PyOS_snprintf(buffer, bufsize, "%s (%s, line %ld)", |
|
639c0a3ae8dc
Use PyOS_snprintf instead of sprintf.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20279
diff
changeset
|
828 PyString_AS_STRING(str), |
|
639c0a3ae8dc
Use PyOS_snprintf instead of sprintf.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20279
diff
changeset
|
829 my_basename(PyString_AS_STRING(filename)), |
|
639c0a3ae8dc
Use PyOS_snprintf instead of sprintf.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20279
diff
changeset
|
830 PyInt_AsLong(lineno)); |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
831 else if (have_filename) |
|
21072
639c0a3ae8dc
Use PyOS_snprintf instead of sprintf.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20279
diff
changeset
|
832 PyOS_snprintf(buffer, bufsize, "%s (%s)", |
|
639c0a3ae8dc
Use PyOS_snprintf instead of sprintf.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20279
diff
changeset
|
833 PyString_AS_STRING(str), |
|
639c0a3ae8dc
Use PyOS_snprintf instead of sprintf.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20279
diff
changeset
|
834 my_basename(PyString_AS_STRING(filename))); |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
835 else if (have_lineno) |
|
21072
639c0a3ae8dc
Use PyOS_snprintf instead of sprintf.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20279
diff
changeset
|
836 PyOS_snprintf(buffer, bufsize, "%s (line %ld)", |
|
639c0a3ae8dc
Use PyOS_snprintf instead of sprintf.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20279
diff
changeset
|
837 PyString_AS_STRING(str), |
|
639c0a3ae8dc
Use PyOS_snprintf instead of sprintf.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20279
diff
changeset
|
838 PyInt_AsLong(lineno)); |
|
14013
6c7fa523726f
SyntaxError__str__(): Fix two memory problems discovered by Insure.
Barry Warsaw <barry@python.org>
parents:
13996
diff
changeset
|
839 |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
840 result = PyString_FromString(buffer); |
|
14013
6c7fa523726f
SyntaxError__str__(): Fix two memory problems discovered by Insure.
Barry Warsaw <barry@python.org>
parents:
13996
diff
changeset
|
841 PyMem_FREE(buffer); |
|
6c7fa523726f
SyntaxError__str__(): Fix two memory problems discovered by Insure.
Barry Warsaw <barry@python.org>
parents:
13996
diff
changeset
|
842 |
|
13991
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
843 if (result == NULL) |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
844 result = str; |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
845 else |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
846 Py_DECREF(str); |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
847 } |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
848 } |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
849 Py_XDECREF(filename); |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
850 Py_XDECREF(lineno); |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
851 } |
|
7834a113ce24
SyntaxError__str__(): Do more formatting of the exception here, rather
Fred Drake <fdrake@acm.org>
parents:
13973
diff
changeset
|
852 return result; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
853 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
854 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
855 |
|
17518
f939ce52a734
Make some private symbols static.
Guido van Rossum <guido@python.org>
parents:
16852
diff
changeset
|
856 static PyMethodDef SyntaxError_methods[] = { |
|
13182
1e302d996d58
replace constant 1 with symbolic constant METH_VARARGS
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
12968
diff
changeset
|
857 {"__init__", SyntaxError__init__, METH_VARARGS}, |
|
1e302d996d58
replace constant 1 with symbolic constant METH_VARARGS
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
12968
diff
changeset
|
858 {"__str__", SyntaxError__str__, METH_VARARGS}, |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
859 {NULL, NULL} |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
860 }; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
861 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
862 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
863 |
|
15590
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
864 /* Exception doc strings */ |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
865 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
866 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
867 AssertionError__doc__[] = "Assertion failed."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
868 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
869 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
870 LookupError__doc__[] = "Base class for lookup errors."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
871 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
872 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
873 IndexError__doc__[] = "Sequence index out of range."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
874 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
875 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
876 KeyError__doc__[] = "Mapping key not found."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
877 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
878 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
879 ArithmeticError__doc__[] = "Base class for arithmetic errors."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
880 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
881 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
882 OverflowError__doc__[] = "Result too large to be represented."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
883 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
884 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
885 ZeroDivisionError__doc__[] = |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
886 "Second argument to a division or modulo operation was zero."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
887 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
888 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
889 FloatingPointError__doc__[] = "Floating point operation failed."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
890 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
891 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
892 ValueError__doc__[] = "Inappropriate argument value (of correct type)."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
893 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
894 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
895 UnicodeError__doc__[] = "Unicode related error."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
896 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
897 static char |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
898 SystemError__doc__[] = "Internal error in the Python interpreter.\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
899 \n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
900 Please report this to the Python maintainer, along with the traceback,\n\ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
901 the Python version, and the hardware/OS platform and version."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
902 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
903 static char |
|
20279
8b3ea7335c1b
weakref.ReferenceError becomes a built-in exception now that weak ref objects
Fred Drake <fdrake@acm.org>
parents:
19433
diff
changeset
|
904 ReferenceError__doc__[] = "Weak ref proxy used after referent went away."; |
|
8b3ea7335c1b
weakref.ReferenceError becomes a built-in exception now that weak ref objects
Fred Drake <fdrake@acm.org>
parents:
19433
diff
changeset
|
905 |
|
8b3ea7335c1b
weakref.ReferenceError becomes a built-in exception now that weak ref objects
Fred Drake <fdrake@acm.org>
parents:
19433
diff
changeset
|
906 static char |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
907 MemoryError__doc__[] = "Out of memory."; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
908 |
|
13539
feab677269e0
Create two new exceptions: IndentationError and TabError. These are
Fred Drake <fdrake@acm.org>
parents:
13484
diff
changeset
|
909 static char |
|
feab677269e0
Create two new exceptions: IndentationError and TabError. These are
Fred Drake <fdrake@acm.org>
parents:
13484
diff
changeset
|
910 IndentationError__doc__[] = "Improper indentation."; |
|
feab677269e0
Create two new exceptions: IndentationError and TabError. These are
Fred Drake <fdrake@acm.org>
parents:
13484
diff
changeset
|
911 |
|
feab677269e0
Create two new exceptions: IndentationError and TabError. These are
Fred Drake <fdrake@acm.org>
parents:
13484
diff
changeset
|
912 static char |
|
feab677269e0
Create two new exceptions: IndentationError and TabError. These are
Fred Drake <fdrake@acm.org>
parents:
13484
diff
changeset
|
913 TabError__doc__[] = "Improper mixture of spaces and tabs."; |
|
feab677269e0
Create two new exceptions: IndentationError and TabError. These are
Fred Drake <fdrake@acm.org>
parents:
13484
diff
changeset
|
914 |
|
15590
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
915 /* Warning category docstrings */ |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
916 |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
917 static char |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
918 Warning__doc__[] = "Base class for warning categories."; |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
919 |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
920 static char |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
921 UserWarning__doc__[] = "Base class for warnings generated by user code."; |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
922 |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
923 static char |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
924 DeprecationWarning__doc__[] = |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
925 "Base class for warnings about deprecated features."; |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
926 |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
927 static char |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
928 SyntaxWarning__doc__[] = "Base class for warnings about dubious syntax."; |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
929 |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
930 static char |
|
19433
5d81c6bff306
Introduce OverflowWarning -- to be issued when short int operations
Guido van Rossum <guido@python.org>
parents:
18933
diff
changeset
|
931 OverflowWarning__doc__[] = "Base class for warnings about numeric overflow."; |
|
5d81c6bff306
Introduce OverflowWarning -- to be issued when short int operations
Guido van Rossum <guido@python.org>
parents:
18933
diff
changeset
|
932 |
|
5d81c6bff306
Introduce OverflowWarning -- to be issued when short int operations
Guido van Rossum <guido@python.org>
parents:
18933
diff
changeset
|
933 static char |
|
15590
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
934 RuntimeWarning__doc__[] = |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
935 "Base class for warnings about dubious runtime behavior."; |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
936 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
937 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
938 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
939 /* module global functions */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
940 static PyMethodDef functions[] = { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
941 /* Sentinel */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
942 {NULL, NULL} |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
943 }; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
944 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
945 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
946 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
947 /* Global C API defined exceptions */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
948 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
949 PyObject *PyExc_Exception; |
|
17597
32e7d0898eab
Iterators phase 1. This comprises:
Guido van Rossum <guido@python.org>
parents:
17518
diff
changeset
|
950 PyObject *PyExc_StopIteration; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
951 PyObject *PyExc_StandardError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
952 PyObject *PyExc_ArithmeticError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
953 PyObject *PyExc_LookupError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
954 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
955 PyObject *PyExc_AssertionError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
956 PyObject *PyExc_AttributeError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
957 PyObject *PyExc_EOFError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
958 PyObject *PyExc_FloatingPointError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
959 PyObject *PyExc_EnvironmentError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
960 PyObject *PyExc_IOError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
961 PyObject *PyExc_OSError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
962 PyObject *PyExc_ImportError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
963 PyObject *PyExc_IndexError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
964 PyObject *PyExc_KeyError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
965 PyObject *PyExc_KeyboardInterrupt; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
966 PyObject *PyExc_MemoryError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
967 PyObject *PyExc_NameError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
968 PyObject *PyExc_OverflowError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
969 PyObject *PyExc_RuntimeError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
970 PyObject *PyExc_NotImplementedError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
971 PyObject *PyExc_SyntaxError; |
|
13539
feab677269e0
Create two new exceptions: IndentationError and TabError. These are
Fred Drake <fdrake@acm.org>
parents:
13484
diff
changeset
|
972 PyObject *PyExc_IndentationError; |
|
feab677269e0
Create two new exceptions: IndentationError and TabError. These are
Fred Drake <fdrake@acm.org>
parents:
13484
diff
changeset
|
973 PyObject *PyExc_TabError; |
|
20279
8b3ea7335c1b
weakref.ReferenceError becomes a built-in exception now that weak ref objects
Fred Drake <fdrake@acm.org>
parents:
19433
diff
changeset
|
974 PyObject *PyExc_ReferenceError; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
975 PyObject *PyExc_SystemError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
976 PyObject *PyExc_SystemExit; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
977 PyObject *PyExc_UnboundLocalError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
978 PyObject *PyExc_UnicodeError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
979 PyObject *PyExc_TypeError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
980 PyObject *PyExc_ValueError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
981 PyObject *PyExc_ZeroDivisionError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
982 #ifdef MS_WINDOWS |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
983 PyObject *PyExc_WindowsError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
984 #endif |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
985 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
986 /* Pre-computed MemoryError instance. Best to create this as early as |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
987 * possibly and not wait until a MemoryError is actually raised! |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
988 */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
989 PyObject *PyExc_MemoryErrorInst; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
990 |
|
15590
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
991 /* Predefined warning categories */ |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
992 PyObject *PyExc_Warning; |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
993 PyObject *PyExc_UserWarning; |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
994 PyObject *PyExc_DeprecationWarning; |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
995 PyObject *PyExc_SyntaxWarning; |
|
19433
5d81c6bff306
Introduce OverflowWarning -- to be issued when short int operations
Guido van Rossum <guido@python.org>
parents:
18933
diff
changeset
|
996 PyObject *PyExc_OverflowWarning; |
|
15590
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
997 PyObject *PyExc_RuntimeWarning; |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
998 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
999 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1000 |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
1001 /* mapping between exception names and their PyObject ** */ |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
1002 static struct { |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
1003 char *name; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
1004 PyObject **exc; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
1005 PyObject **base; /* NULL == PyExc_StandardError */ |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
1006 char *docstr; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
1007 PyMethodDef *methods; |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
1008 int (*classinit)(PyObject *); |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
1009 } exctable[] = { |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1010 /* |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1011 * The first three classes MUST appear in exactly this order |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1012 */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1013 {"Exception", &PyExc_Exception}, |
|
17597
32e7d0898eab
Iterators phase 1. This comprises:
Guido van Rossum <guido@python.org>
parents:
17518
diff
changeset
|
1014 {"StopIteration", &PyExc_StopIteration, &PyExc_Exception, |
|
32e7d0898eab
Iterators phase 1. This comprises:
Guido van Rossum <guido@python.org>
parents:
17518
diff
changeset
|
1015 StopIteration__doc__}, |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1016 {"StandardError", &PyExc_StandardError, &PyExc_Exception, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1017 StandardError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1018 {"TypeError", &PyExc_TypeError, 0, TypeError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1019 /* |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1020 * The rest appear in depth-first order of the hierarchy |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1021 */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1022 {"SystemExit", &PyExc_SystemExit, &PyExc_Exception, SystemExit__doc__, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1023 SystemExit_methods}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1024 {"KeyboardInterrupt", &PyExc_KeyboardInterrupt, 0, KeyboardInterrupt__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1025 {"ImportError", &PyExc_ImportError, 0, ImportError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1026 {"EnvironmentError", &PyExc_EnvironmentError, 0, EnvironmentError__doc__, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1027 EnvironmentError_methods}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1028 {"IOError", &PyExc_IOError, &PyExc_EnvironmentError, IOError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1029 {"OSError", &PyExc_OSError, &PyExc_EnvironmentError, OSError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1030 #ifdef MS_WINDOWS |
|
13973
4e28ca345cfe
Fix the parent of WindowsError - both the comments in this source file, and the previous exceptions.py have WindowsError as a sub-class of OSError.
Mark Hammond <mhammond@skippinet.com.au>
parents:
13657
diff
changeset
|
1031 {"WindowsError", &PyExc_WindowsError, &PyExc_OSError, |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1032 WindowsError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1033 #endif /* MS_WINDOWS */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1034 {"EOFError", &PyExc_EOFError, 0, EOFError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1035 {"RuntimeError", &PyExc_RuntimeError, 0, RuntimeError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1036 {"NotImplementedError", &PyExc_NotImplementedError, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1037 &PyExc_RuntimeError, NotImplementedError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1038 {"NameError", &PyExc_NameError, 0, NameError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1039 {"UnboundLocalError", &PyExc_UnboundLocalError, &PyExc_NameError, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1040 UnboundLocalError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1041 {"AttributeError", &PyExc_AttributeError, 0, AttributeError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1042 {"SyntaxError", &PyExc_SyntaxError, 0, SyntaxError__doc__, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1043 SyntaxError_methods, SyntaxError__classinit__}, |
|
13539
feab677269e0
Create two new exceptions: IndentationError and TabError. These are
Fred Drake <fdrake@acm.org>
parents:
13484
diff
changeset
|
1044 {"IndentationError", &PyExc_IndentationError, &PyExc_SyntaxError, |
|
feab677269e0
Create two new exceptions: IndentationError and TabError. These are
Fred Drake <fdrake@acm.org>
parents:
13484
diff
changeset
|
1045 IndentationError__doc__}, |
|
feab677269e0
Create two new exceptions: IndentationError and TabError. These are
Fred Drake <fdrake@acm.org>
parents:
13484
diff
changeset
|
1046 {"TabError", &PyExc_TabError, &PyExc_IndentationError, |
|
feab677269e0
Create two new exceptions: IndentationError and TabError. These are
Fred Drake <fdrake@acm.org>
parents:
13484
diff
changeset
|
1047 TabError__doc__}, |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1048 {"AssertionError", &PyExc_AssertionError, 0, AssertionError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1049 {"LookupError", &PyExc_LookupError, 0, LookupError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1050 {"IndexError", &PyExc_IndexError, &PyExc_LookupError, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1051 IndexError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1052 {"KeyError", &PyExc_KeyError, &PyExc_LookupError, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1053 KeyError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1054 {"ArithmeticError", &PyExc_ArithmeticError, 0, ArithmeticError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1055 {"OverflowError", &PyExc_OverflowError, &PyExc_ArithmeticError, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1056 OverflowError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1057 {"ZeroDivisionError", &PyExc_ZeroDivisionError, &PyExc_ArithmeticError, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1058 ZeroDivisionError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1059 {"FloatingPointError", &PyExc_FloatingPointError, &PyExc_ArithmeticError, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1060 FloatingPointError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1061 {"ValueError", &PyExc_ValueError, 0, ValueError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1062 {"UnicodeError", &PyExc_UnicodeError, &PyExc_ValueError, UnicodeError__doc__}, |
|
20279
8b3ea7335c1b
weakref.ReferenceError becomes a built-in exception now that weak ref objects
Fred Drake <fdrake@acm.org>
parents:
19433
diff
changeset
|
1063 {"ReferenceError", &PyExc_ReferenceError, 0, ReferenceError__doc__}, |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1064 {"SystemError", &PyExc_SystemError, 0, SystemError__doc__}, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1065 {"MemoryError", &PyExc_MemoryError, 0, MemoryError__doc__}, |
|
15590
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
1066 /* Warning categories */ |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
1067 {"Warning", &PyExc_Warning, &PyExc_Exception, Warning__doc__}, |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
1068 {"UserWarning", &PyExc_UserWarning, &PyExc_Warning, UserWarning__doc__}, |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
1069 {"DeprecationWarning", &PyExc_DeprecationWarning, &PyExc_Warning, |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
1070 DeprecationWarning__doc__}, |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
1071 {"SyntaxWarning", &PyExc_SyntaxWarning, &PyExc_Warning, SyntaxWarning__doc__}, |
|
19433
5d81c6bff306
Introduce OverflowWarning -- to be issued when short int operations
Guido van Rossum <guido@python.org>
parents:
18933
diff
changeset
|
1072 {"OverflowWarning", &PyExc_OverflowWarning, &PyExc_Warning, |
|
5d81c6bff306
Introduce OverflowWarning -- to be issued when short int operations
Guido van Rossum <guido@python.org>
parents:
18933
diff
changeset
|
1073 OverflowWarning__doc__}, |
|
15590
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
1074 {"RuntimeWarning", &PyExc_RuntimeWarning, &PyExc_Warning, |
|
1e756f93bf5d
Add definitions for standard warning category classes (PyExc_Warning
Guido van Rossum <guido@python.org>
parents:
15318
diff
changeset
|
1075 RuntimeWarning__doc__}, |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1076 /* Sentinel */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1077 {NULL} |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1078 }; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1079 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1080 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1081 |
|
16837
0e6a3da4f956
SF patch 404928: Support for next Cygwin gcc (2.95.2-8)
Tim Peters <tim.peters@gmail.com>
parents:
16164
diff
changeset
|
1082 DL_EXPORT(void) |
|
18933
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1083 _PyExc_Init(void) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1084 { |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
1085 char *modulename = "exceptions"; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1086 int modnamesz = strlen(modulename); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1087 int i; |
|
18933
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1088 PyObject *me, *mydict, *bltinmod, *bdict, *doc, *args; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1089 |
|
18933
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1090 me = Py_InitModule(modulename, functions); |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1091 if (me == NULL) |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1092 goto err; |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1093 mydict = PyModule_GetDict(me); |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1094 if (mydict == NULL) |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1095 goto err; |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1096 bltinmod = PyImport_ImportModule("__builtin__"); |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1097 if (bltinmod == NULL) |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1098 goto err; |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1099 bdict = PyModule_GetDict(bltinmod); |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1100 if (bdict == NULL) |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1101 goto err; |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1102 doc = PyString_FromString(module__doc__); |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1103 if (doc == NULL) |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1104 goto err; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1105 |
|
18933
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1106 i = PyDict_SetItemString(mydict, "__doc__", doc); |
|
13283
3e07a7315af5
init_exceptions(): Decref `doc' so it doesn't leak.
Barry Warsaw <barry@python.org>
parents:
13182
diff
changeset
|
1107 Py_DECREF(doc); |
|
18933
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1108 if (i < 0) { |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1109 err: |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1110 Py_FatalError("exceptions bootstrapping error."); |
|
18933
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1111 return; |
|
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1112 } |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1113 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1114 /* This is the base class of all exceptions, so make it first. */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1115 if (make_Exception(modulename) || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1116 PyDict_SetItemString(mydict, "Exception", PyExc_Exception) || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1117 PyDict_SetItemString(bdict, "Exception", PyExc_Exception)) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1118 { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1119 Py_FatalError("Base class `Exception' could not be created."); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1120 } |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
1121 |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1122 /* Now we can programmatically create all the remaining exceptions. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1123 * Remember to start the loop at 1 to skip Exceptions. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1124 */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1125 for (i=1; exctable[i].name; i++) { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1126 int status; |
|
13657
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
1127 char *cname = PyMem_NEW(char, modnamesz+strlen(exctable[i].name)+2); |
|
6a5314a6c2c2
Fix two instances of empty argument lists, and fix style
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
1128 PyObject *base; |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1129 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1130 (void)strcpy(cname, modulename); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1131 (void)strcat(cname, "."); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1132 (void)strcat(cname, exctable[i].name); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1133 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1134 if (exctable[i].base == 0) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1135 base = PyExc_StandardError; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1136 else |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1137 base = *exctable[i].base; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1138 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1139 status = make_class(exctable[i].exc, base, cname, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1140 exctable[i].methods, |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1141 exctable[i].docstr); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1142 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1143 PyMem_DEL(cname); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1144 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1145 if (status) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1146 Py_FatalError("Standard exception classes could not be created."); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1147 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1148 if (exctable[i].classinit) { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1149 status = (*exctable[i].classinit)(*exctable[i].exc); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1150 if (status) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1151 Py_FatalError("An exception class could not be initialized."); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1152 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1153 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1154 /* Now insert the class into both this module and the __builtin__ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1155 * module. |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1156 */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1157 if (PyDict_SetItemString(mydict, exctable[i].name, *exctable[i].exc) || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1158 PyDict_SetItemString(bdict, exctable[i].name, *exctable[i].exc)) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1159 { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1160 Py_FatalError("Module dictionary insertion problem."); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1161 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1162 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1163 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1164 /* Now we need to pre-allocate a MemoryError instance */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1165 args = Py_BuildValue("()"); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1166 if (!args || |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1167 !(PyExc_MemoryErrorInst = PyEval_CallObject(PyExc_MemoryError, args))) |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1168 { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1169 Py_FatalError("Cannot pre-allocate MemoryError instance\n"); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1170 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1171 Py_DECREF(args); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1172 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1173 /* We're done with __builtin__ */ |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1174 Py_DECREF(bltinmod); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1175 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1176 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1177 |
|
16837
0e6a3da4f956
SF patch 404928: Support for next Cygwin gcc (2.95.2-8)
Tim Peters <tim.peters@gmail.com>
parents:
16164
diff
changeset
|
1178 DL_EXPORT(void) |
|
18933
09df3254b49d
Merge of descr-branch back into trunk.
Tim Peters <tim.peters@gmail.com>
parents:
17597
diff
changeset
|
1179 _PyExc_Fini(void) |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1180 { |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1181 int i; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1182 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1183 Py_XDECREF(PyExc_MemoryErrorInst); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1184 PyExc_MemoryErrorInst = NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1185 |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1186 for (i=0; exctable[i].name; i++) { |
|
16164
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
1187 /* clear the class's dictionary, freeing up circular references |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
1188 * between the class and its methods. |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
1189 */ |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
1190 PyObject* cdict = PyObject_GetAttrString(*exctable[i].exc, "__dict__"); |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
1191 PyDict_Clear(cdict); |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
1192 Py_DECREF(cdict); |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
1193 |
|
2208a03d05a3
Leak pluggin', bug fixin' and better documentin'. Specifically,
Barry Warsaw <barry@python.org>
parents:
15590
diff
changeset
|
1194 /* Now decref the exception class */ |
|
12771
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1195 Py_XDECREF(*exctable[i].exc); |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1196 *exctable[i].exc = NULL; |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1197 } |
|
52c6ac2d16a8
The standard exception classes. Moved here from ../Modules/_exceptions.c
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1198 } |
