Mercurial > cpython-lru_cache-weakref
annotate Lib/warnings.py @ 78069:a8aa77458e12 3.2
Add c_size_t and c_ssize_t to the ctypes summary table.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Thu, 12 Jul 2012 20:31:50 +0200 |
| parents | 8e57b5d8f58f |
| children | 7d69d04522e3 |
| rev | line source |
|---|---|
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 """Python part of the warnings subsystem.""" |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 |
|
27958
e07b21ea3c45
Fix bug 683658 - PyErr_Warn may cause import deadlock.
Mark Hammond <mhammond@skippinet.com.au>
parents:
25791
diff
changeset
|
3 # Note: function level imports should *not* be used |
|
e07b21ea3c45
Fix bug 683658 - PyErr_Warn may cause import deadlock.
Mark Hammond <mhammond@skippinet.com.au>
parents:
25791
diff
changeset
|
4 # in this module as it may cause import lock deadlock. |
|
e07b21ea3c45
Fix bug 683658 - PyErr_Warn may cause import deadlock.
Mark Hammond <mhammond@skippinet.com.au>
parents:
25791
diff
changeset
|
5 # See bug 683658. |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
6 import linecache |
|
41986
6464cc638faa
Merged revisions 55795-55816 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40775
diff
changeset
|
7 import sys |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 |
|
16889
0feb63490093
final round of __all__ lists (I hope) - skipped urllib2 because Moshe may be
Skip Montanaro <skip@pobox.com>
parents:
16858
diff
changeset
|
9 __all__ = ["warn", "showwarning", "formatwarning", "filterwarnings", |
|
49100
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
10 "resetwarnings", "catch_warnings"] |
|
16889
0feb63490093
final round of __all__ lists (I hope) - skipped urllib2 because Moshe may be
Skip Montanaro <skip@pobox.com>
parents:
16858
diff
changeset
|
11 |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
13 def showwarning(message, category, filename, lineno, file=None, line=None): |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 """Hook to write a warning to a file; replace if you like.""" |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 if file is None: |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 file = sys.stderr |
|
25204
2e7fe55c0e11
Ignore IOError exceptions when writing the message.
Mark Hammond <mhammond@skippinet.com.au>
parents:
23645
diff
changeset
|
17 try: |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
18 file.write(formatwarning(message, category, filename, lineno, line)) |
|
25204
2e7fe55c0e11
Ignore IOError exceptions when writing the message.
Mark Hammond <mhammond@skippinet.com.au>
parents:
23645
diff
changeset
|
19 except IOError: |
|
2e7fe55c0e11
Ignore IOError exceptions when writing the message.
Mark Hammond <mhammond@skippinet.com.au>
parents:
23645
diff
changeset
|
20 pass # the file (probably stderr) is invalid - this warning gets lost. |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
22 def formatwarning(message, category, filename, lineno, line=None): |
|
15853
a84b53ba90c4
- Added keyword argument 'append' to filterwarnings(); if true, this
Guido van Rossum <guido@python.org>
parents:
15611
diff
changeset
|
23 """Function to format a warning the standard way.""" |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 s = "%s:%s: %s: %s\n" % (filename, lineno, category.__name__, message) |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
25 line = linecache.getline(filename, lineno) if line is None else line |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 if line: |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
27 line = line.strip() |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
28 s += " %s\n" % line |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 return s |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 |
|
15853
a84b53ba90c4
- Added keyword argument 'append' to filterwarnings(); if true, this
Guido van Rossum <guido@python.org>
parents:
15611
diff
changeset
|
31 def filterwarnings(action, message="", category=Warning, module="", lineno=0, |
|
56002
fa91270b6087
Merged revisions 74821,74828-74831,74833,74835 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49533
diff
changeset
|
32 append=False): |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
33 """Insert an entry into the list of warnings filters (at the front). |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 |
|
56894
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
35 'action' -- one of "error", "ignore", "always", "default", "module", |
|
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
36 or "once" |
|
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
37 'message' -- a regex that the warning message must match |
|
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
38 'category' -- a class that the warning must be a subclass of |
|
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
39 'module' -- a regex that the module name must match |
|
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
40 'lineno' -- an integer line number, 0 matches all warnings |
|
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
41 'append' -- if true, append to the list of filters |
|
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
42 """ |
|
29114
4b0220260f62
defer re module imports to help improve interpreter startup
Skip Montanaro <skip@pobox.com>
parents:
27958
diff
changeset
|
43 import re |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 assert action in ("error", "ignore", "always", "default", "module", |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
29813
diff
changeset
|
45 "once"), "invalid action: %r" % (action,) |
|
43577
ace45b361e87
Patch# 1258 by Christian Heimes: kill basestring.
Guido van Rossum <guido@python.org>
parents:
41986
diff
changeset
|
46 assert isinstance(message, str), "message must be a string" |
|
41986
6464cc638faa
Merged revisions 55795-55816 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40775
diff
changeset
|
47 assert isinstance(category, type), "category must be a class" |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
48 assert issubclass(category, Warning), "category must be a Warning subclass" |
|
43577
ace45b361e87
Patch# 1258 by Christian Heimes: kill basestring.
Guido van Rossum <guido@python.org>
parents:
41986
diff
changeset
|
49 assert isinstance(module, str), "module must be a string" |
|
23645
e1e90b0f1f45
Remove uses of the string and types modules:
Walter Dörwald <walter@livinglogic.de>
parents:
23620
diff
changeset
|
50 assert isinstance(lineno, int) and lineno >= 0, \ |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 "lineno must be an int >= 0" |
|
15853
a84b53ba90c4
- Added keyword argument 'append' to filterwarnings(); if true, this
Guido van Rossum <guido@python.org>
parents:
15611
diff
changeset
|
52 item = (action, re.compile(message, re.I), category, |
|
a84b53ba90c4
- Added keyword argument 'append' to filterwarnings(); if true, this
Guido van Rossum <guido@python.org>
parents:
15611
diff
changeset
|
53 re.compile(module), lineno) |
|
a84b53ba90c4
- Added keyword argument 'append' to filterwarnings(); if true, this
Guido van Rossum <guido@python.org>
parents:
15611
diff
changeset
|
54 if append: |
|
a84b53ba90c4
- Added keyword argument 'append' to filterwarnings(); if true, this
Guido van Rossum <guido@python.org>
parents:
15611
diff
changeset
|
55 filters.append(item) |
|
a84b53ba90c4
- Added keyword argument 'append' to filterwarnings(); if true, this
Guido van Rossum <guido@python.org>
parents:
15611
diff
changeset
|
56 else: |
|
a84b53ba90c4
- Added keyword argument 'append' to filterwarnings(); if true, this
Guido van Rossum <guido@python.org>
parents:
15611
diff
changeset
|
57 filters.insert(0, item) |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
58 |
|
56002
fa91270b6087
Merged revisions 74821,74828-74831,74833,74835 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49533
diff
changeset
|
59 def simplefilter(action, category=Warning, lineno=0, append=False): |
|
29813
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
60 """Insert a simple entry into the list of warnings filters (at the front). |
|
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
61 |
|
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
62 A simple filter matches all modules and messages. |
|
56894
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
63 'action' -- one of "error", "ignore", "always", "default", "module", |
|
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
64 or "once" |
|
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
65 'category' -- a class that the warning must be a subclass of |
|
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
66 'lineno' -- an integer line number, 0 matches all warnings |
|
b085fd0611de
Merged revisions 75797 via svnmerge from
Georg Brandl <georg@python.org>
parents:
56002
diff
changeset
|
67 'append' -- if true, append to the list of filters |
|
29813
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
68 """ |
|
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
69 assert action in ("error", "ignore", "always", "default", "module", |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
29813
diff
changeset
|
70 "once"), "invalid action: %r" % (action,) |
|
29813
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
71 assert isinstance(lineno, int) and lineno >= 0, \ |
|
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
72 "lineno must be an int >= 0" |
|
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
73 item = (action, None, category, None, lineno) |
|
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
74 if append: |
|
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
75 filters.append(item) |
|
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
76 else: |
|
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
77 filters.insert(0, item) |
|
7be24cc6c28d
Change warnings to avoid importing re module during startup.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29114
diff
changeset
|
78 |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
79 def resetwarnings(): |
|
23076
0fce55675cbc
resetwarnings(): Remove extra space from docstring guts.
Tim Peters <tim.peters@gmail.com>
parents:
23075
diff
changeset
|
80 """Clear the list of warning filters, so that no filters are active.""" |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
81 filters[:] = [] |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
82 |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
83 class _OptionError(Exception): |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
84 """Exception used by option processing helpers.""" |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
85 pass |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
86 |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
87 # Helper to process -W options passed via sys.warnoptions |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
88 def _processoptions(args): |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
89 for arg in args: |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
90 try: |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
91 _setoption(arg) |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
39442
diff
changeset
|
92 except _OptionError as msg: |
|
40775
4cdf21a0dbbc
Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
93 print("Invalid -W option ignored:", msg, file=sys.stderr) |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
94 |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
95 # Helper for _processoptions() |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
96 def _setoption(arg): |
|
29114
4b0220260f62
defer re module imports to help improve interpreter startup
Skip Montanaro <skip@pobox.com>
parents:
27958
diff
changeset
|
97 import re |
|
15874
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
98 parts = arg.split(':') |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
99 if len(parts) > 5: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
29813
diff
changeset
|
100 raise _OptionError("too many fields (max 5): %r" % (arg,)) |
|
15874
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
101 while len(parts) < 5: |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
102 parts.append('') |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
103 action, message, category, module, lineno = [s.strip() |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
104 for s in parts] |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
105 action = _getaction(action) |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
106 message = re.escape(message) |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
107 category = _getcategory(category) |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
108 module = re.escape(module) |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
109 if module: |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
110 module = module + '$' |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
111 if lineno: |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
112 try: |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
113 lineno = int(lineno) |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
114 if lineno < 0: |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
115 raise ValueError |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
116 except (ValueError, OverflowError): |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
29813
diff
changeset
|
117 raise _OptionError("invalid lineno %r" % (lineno,)) |
|
15874
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
118 else: |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
119 lineno = 0 |
|
4c01ee0a8073
Whitespace normalization. Top level of Lib now fixed-point for reindent.py!
Tim Peters <tim.peters@gmail.com>
parents:
15853
diff
changeset
|
120 filterwarnings(action, message, category, module, lineno) |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
121 |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
122 # Helper for _setoption() |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
123 def _getaction(action): |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
124 if not action: |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
125 return "default" |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
126 if action == "all": return "always" # Alias |
|
34545
9d66fba78444
Replace list of constants with tuples of constants.
Raymond Hettinger <python@rcn.com>
parents:
34278
diff
changeset
|
127 for a in ('default', 'always', 'ignore', 'module', 'once', 'error'): |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
128 if a.startswith(action): |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
129 return a |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
29813
diff
changeset
|
130 raise _OptionError("invalid action: %r" % (action,)) |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
131 |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
132 # Helper for _setoption() |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
133 def _getcategory(category): |
|
29114
4b0220260f62
defer re module imports to help improve interpreter startup
Skip Montanaro <skip@pobox.com>
parents:
27958
diff
changeset
|
134 import re |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
135 if not category: |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
136 return Warning |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
137 if re.match("^[a-zA-Z0-9_]+$", category): |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
138 try: |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
139 cat = eval(category) |
|
15611
2fe7427591ea
Improve error messages for invalid warning arguments; don't raise
Guido van Rossum <guido@python.org>
parents:
15592
diff
changeset
|
140 except NameError: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
29813
diff
changeset
|
141 raise _OptionError("unknown warning category: %r" % (category,)) |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
142 else: |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
143 i = category.rfind(".") |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
144 module = category[:i] |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
145 klass = category[i+1:] |
|
15611
2fe7427591ea
Improve error messages for invalid warning arguments; don't raise
Guido van Rossum <guido@python.org>
parents:
15592
diff
changeset
|
146 try: |
|
2fe7427591ea
Improve error messages for invalid warning arguments; don't raise
Guido van Rossum <guido@python.org>
parents:
15592
diff
changeset
|
147 m = __import__(module, None, None, [klass]) |
|
2fe7427591ea
Improve error messages for invalid warning arguments; don't raise
Guido van Rossum <guido@python.org>
parents:
15592
diff
changeset
|
148 except ImportError: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
29813
diff
changeset
|
149 raise _OptionError("invalid module name: %r" % (module,)) |
|
15611
2fe7427591ea
Improve error messages for invalid warning arguments; don't raise
Guido van Rossum <guido@python.org>
parents:
15592
diff
changeset
|
150 try: |
|
2fe7427591ea
Improve error messages for invalid warning arguments; don't raise
Guido van Rossum <guido@python.org>
parents:
15592
diff
changeset
|
151 cat = getattr(m, klass) |
|
2fe7427591ea
Improve error messages for invalid warning arguments; don't raise
Guido van Rossum <guido@python.org>
parents:
15592
diff
changeset
|
152 except AttributeError: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
29813
diff
changeset
|
153 raise _OptionError("unknown warning category: %r" % (category,)) |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38453
diff
changeset
|
154 if not issubclass(cat, Warning): |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
29813
diff
changeset
|
155 raise _OptionError("invalid warning category: %r" % (category,)) |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
156 return cat |
|
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
157 |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
158 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
159 # Code typically replaced by _warnings |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
160 def warn(message, category=None, stacklevel=1): |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
161 """Issue a warning, or maybe ignore it or raise an exception.""" |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
162 # Check if message is already a Warning object |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
163 if isinstance(message, Warning): |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
164 category = message.__class__ |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
165 # Check category argument |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
166 if category is None: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
167 category = UserWarning |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
168 assert issubclass(category, Warning) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
169 # Get context information |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
170 try: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
171 caller = sys._getframe(stacklevel) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
172 except ValueError: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
173 globals = sys.__dict__ |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
174 lineno = 1 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
175 else: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
176 globals = caller.f_globals |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
177 lineno = caller.f_lineno |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
178 if '__name__' in globals: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
179 module = globals['__name__'] |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
180 else: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
181 module = "<string>" |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
182 filename = globals.get('__file__') |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
183 if filename: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
184 fnl = filename.lower() |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
185 if fnl.endswith((".pyc", ".pyo")): |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
186 filename = filename[:-1] |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
187 else: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
188 if module == "__main__": |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
189 try: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
190 filename = sys.argv[0] |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
191 except AttributeError: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
192 # embedded interpreters don't have sys.argv, see bug #839151 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
193 filename = '__main__' |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
194 if not filename: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
195 filename = module |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
196 registry = globals.setdefault("__warningregistry__", {}) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
197 warn_explicit(message, category, filename, lineno, module, registry, |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
198 globals) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
199 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
200 def warn_explicit(message, category, filename, lineno, |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
201 module=None, registry=None, module_globals=None): |
|
48371
605ab6f92838
Merged revisions 64549 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
46708
diff
changeset
|
202 lineno = int(lineno) |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
203 if module is None: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
204 module = filename or "<unknown>" |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
205 if module[-3:].lower() == ".py": |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
206 module = module[:-3] # XXX What about leading pathname? |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
207 if registry is None: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
208 registry = {} |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
209 if isinstance(message, Warning): |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
210 text = str(message) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
211 category = message.__class__ |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
212 else: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
213 text = message |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
214 message = category(message) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
215 key = (text, category, lineno) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
216 # Quick test for common case |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
217 if registry.get(key): |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
218 return |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
219 # Search the filters |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
220 for item in filters: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
221 action, msg, cat, mod, ln = item |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
222 if ((msg is None or msg.match(text)) and |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
223 issubclass(category, cat) and |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
224 (mod is None or mod.match(module)) and |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
225 (ln == 0 or lineno == ln)): |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
226 break |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
227 else: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
228 action = defaultaction |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
229 # Early exit actions |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
230 if action == "ignore": |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
231 registry[key] = 1 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
232 return |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
233 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
234 # Prime the linecache for formatting, in case the |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
235 # "file" is actually in a zipfile or something. |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
236 linecache.getlines(filename, module_globals) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
237 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
238 if action == "error": |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
239 raise message |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
240 # Other actions |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
241 if action == "once": |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
242 registry[key] = 1 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
243 oncekey = (text, category) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
244 if onceregistry.get(oncekey): |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
245 return |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
246 onceregistry[oncekey] = 1 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
247 elif action == "always": |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
248 pass |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
249 elif action == "module": |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
250 registry[key] = 1 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
251 altkey = (text, category, 0) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
252 if registry.get(altkey): |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
253 return |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
254 registry[altkey] = 1 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
255 elif action == "default": |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
256 registry[key] = 1 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
257 else: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
258 # Unrecognized actions are errors |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
259 raise RuntimeError( |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
260 "Unrecognized action (%r) in warnings.filters:\n %s" % |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
261 (action, item)) |
|
73165
8e57b5d8f58f
Closes #13258: Use callable() built-in in the standard library.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
65624
diff
changeset
|
262 if not callable(showwarning): |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46430
diff
changeset
|
263 raise TypeError("warnings.showwarning() must be set to a " |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46430
diff
changeset
|
264 "function or method") |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
265 # Print message and context |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
266 showwarning(message, category, filename, lineno) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
267 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
268 |
|
48952
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
269 class WarningMessage(object): |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
270 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
271 """Holds the result of a single showwarning() call.""" |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
272 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
273 _WARNING_DETAILS = ("message", "category", "filename", "lineno", "file", |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
274 "line") |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
275 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
276 def __init__(self, message, category, filename, lineno, file=None, |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
277 line=None): |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
278 local_values = locals() |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
279 for attr in self._WARNING_DETAILS: |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
280 setattr(self, attr, local_values[attr]) |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
281 self._category_name = category.__name__ if category else None |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
282 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
283 def __str__(self): |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
284 return ("{message : %r, category : %r, filename : %r, lineno : %s, " |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
285 "line : %r}" % (self.message, self._category_name, |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
286 self.filename, self.lineno, self.line)) |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
287 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
288 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
289 class catch_warnings(object): |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
290 |
|
49100
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
291 """A context manager that copies and restores the warnings filter upon |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
292 exiting the context. |
|
48952
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
293 |
|
49100
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
294 The 'record' argument specifies whether warnings should be captured by a |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
295 custom implementation of warnings.showwarning() and be appended to a list |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
296 returned by the context manager. Otherwise None is returned by the context |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
297 manager. The objects appended to the list are arguments whose attributes |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
298 mirror the arguments to showwarning(). |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
299 |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
300 The 'module' argument is to specify an alternative module to the module |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
301 named 'warnings' and imported under that name. This argument is only useful |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
302 when testing the warnings module itself. |
|
48952
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
303 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
304 """ |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
305 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
306 def __init__(self, *, record=False, module=None): |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
307 """Specify whether to record warnings and if an alternative module |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
308 should be used other than sys.modules['warnings']. |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
309 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
310 For compatibility with Python 3.0, please consider all arguments to be |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
311 keyword-only. |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
312 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
313 """ |
|
49100
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
314 self._record = record |
|
48952
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
315 self._module = sys.modules['warnings'] if module is None else module |
|
49533
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
316 self._entered = False |
|
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
317 |
|
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
318 def __repr__(self): |
|
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
319 args = [] |
|
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
320 if self._record: |
|
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
321 args.append("record=True") |
|
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
322 if self._module is not sys.modules['warnings']: |
|
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
323 args.append("module=%r" % self._module) |
|
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
324 name = type(self).__name__ |
|
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
325 return "%s(%s)" % (name, ", ".join(args)) |
|
48952
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
326 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
327 def __enter__(self): |
|
49533
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
328 if self._entered: |
|
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
329 raise RuntimeError("Cannot enter %r twice" % self) |
|
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
330 self._entered = True |
|
48952
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
331 self._filters = self._module.filters |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
332 self._module.filters = self._filters[:] |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
333 self._showwarning = self._module.showwarning |
|
49100
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
334 if self._record: |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
335 log = [] |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
336 def showwarning(*args, **kwargs): |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
337 log.append(WarningMessage(*args, **kwargs)) |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
338 self._module.showwarning = showwarning |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
339 return log |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
340 else: |
|
3e6e565ee30a
Merged revisions 66321 via svnmerge from
Brett Cannon <bcannon@gmail.com>
parents:
48952
diff
changeset
|
341 return None |
|
48952
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
342 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
343 def __exit__(self, *exc_info): |
|
49533
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
344 if not self._entered: |
|
ca72271c624c
forward port r66386
Benjamin Peterson <benjamin@python.org>
parents:
49100
diff
changeset
|
345 raise RuntimeError("Cannot exit %r without entering first" % self) |
|
48952
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
346 self._module.filters = self._filters |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
347 self._module.showwarning = self._showwarning |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
348 |
|
caa41e161b04
Merge in r66135. Doing also required removing a stale DeprecationWarning along
Brett Cannon <bcannon@gmail.com>
parents:
48699
diff
changeset
|
349 |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
350 # filters contains a sequence of filter 5-tuples |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
351 # The components of the 5-tuple are: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
352 # - an action: error, ignore, always, default, module, or once |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
353 # - a compiled regex that must match the warning message |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
354 # - a class representing the warning category |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
355 # - a compiled regex that must match the module that is being warned |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
356 # - a line number for the line being warning, or 0 to mean any line |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
357 # If either if the compiled regexs are None, match anything. |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
358 _warnings_defaults = False |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
359 try: |
|
64438
1b5ee6e845cd
_warnings exposed two variables with the name 'default_action' and
Brett Cannon <bcannon@gmail.com>
parents:
62582
diff
changeset
|
360 from _warnings import (filters, _defaultaction, _onceregistry, |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
361 warn, warn_explicit) |
|
64438
1b5ee6e845cd
_warnings exposed two variables with the name 'default_action' and
Brett Cannon <bcannon@gmail.com>
parents:
62582
diff
changeset
|
362 defaultaction = _defaultaction |
|
1b5ee6e845cd
_warnings exposed two variables with the name 'default_action' and
Brett Cannon <bcannon@gmail.com>
parents:
62582
diff
changeset
|
363 onceregistry = _onceregistry |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
364 _warnings_defaults = True |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
365 except ImportError: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
366 filters = [] |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
367 defaultaction = "default" |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
368 onceregistry = {} |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
369 |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
370 |
|
15592
52756f613c18
Python part of the warnings subsystem.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
371 # Module initialization |
|
31737
57965b2db20c
SF bug 917108: warnings.py does not define _test().
Tim Peters <tim.peters@gmail.com>
parents:
31515
diff
changeset
|
372 _processoptions(sys.warnoptions) |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
373 if not _warnings_defaults: |
|
62582
4893e4009f56
Merged revisions 77402,77505,77510 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56894
diff
changeset
|
374 silence = [ImportWarning, PendingDeprecationWarning] |
|
4893e4009f56
Merged revisions 77402,77505,77510 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56894
diff
changeset
|
375 silence.append(DeprecationWarning) |
|
4893e4009f56
Merged revisions 77402,77505,77510 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56894
diff
changeset
|
376 for cls in silence: |
|
4893e4009f56
Merged revisions 77402,77505,77510 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56894
diff
changeset
|
377 simplefilter("ignore", category=cls) |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
378 bytes_warning = sys.flags.bytes_warning |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
379 if bytes_warning > 1: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
380 bytes_action = "error" |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
381 elif bytes_warning: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
382 bytes_action = "default" |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
383 else: |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
384 bytes_action = "ignore" |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
385 simplefilter(bytes_action, category=BytesWarning, append=1) |
|
65624
39b9e9de372b
Add a new warning gategory, ResourceWarning, as discussed on python-dev. It is silent by default,
Georg Brandl <georg@python.org>
parents:
64438
diff
changeset
|
386 # resource usage warnings are enabled by default in pydebug mode |
|
39b9e9de372b
Add a new warning gategory, ResourceWarning, as discussed on python-dev. It is silent by default,
Georg Brandl <georg@python.org>
parents:
64438
diff
changeset
|
387 if hasattr(sys, 'gettotalrefcount'): |
|
39b9e9de372b
Add a new warning gategory, ResourceWarning, as discussed on python-dev. It is silent by default,
Georg Brandl <georg@python.org>
parents:
64438
diff
changeset
|
388 resource_action = "always" |
|
39b9e9de372b
Add a new warning gategory, ResourceWarning, as discussed on python-dev. It is silent by default,
Georg Brandl <georg@python.org>
parents:
64438
diff
changeset
|
389 else: |
|
39b9e9de372b
Add a new warning gategory, ResourceWarning, as discussed on python-dev. It is silent by default,
Georg Brandl <georg@python.org>
parents:
64438
diff
changeset
|
390 resource_action = "ignore" |
|
39b9e9de372b
Add a new warning gategory, ResourceWarning, as discussed on python-dev. It is silent by default,
Georg Brandl <georg@python.org>
parents:
64438
diff
changeset
|
391 simplefilter(resource_action, category=ResourceWarning, append=1) |
|
39b9e9de372b
Add a new warning gategory, ResourceWarning, as discussed on python-dev. It is silent by default,
Georg Brandl <georg@python.org>
parents:
64438
diff
changeset
|
392 |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43577
diff
changeset
|
393 del _warnings_defaults |
