1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
|
"""Tests for missing-raises-doc and missing-raises-type-doc for Google style docstrings"""
# pylint: disable=function-redefined, invalid-name, undefined-variable, missing-function-docstring
# pylint: disable=unused-argument, import-outside-toplevel, import-error, try-except-raise, too-few-public-methods
def test_find_missing_google_raises(self): # [missing-raises-doc]
"""This is a Google docstring.
Raises:
NameError: Never
"""
raise RuntimeError("hi")
raise NameError("hi") # [unreachable]
def test_find_google_attr_raises_exact_exc(self):
"""This is a google docstring.
Raises:
re.error: Sometimes
"""
import re
raise re.error("hi")
def test_find_google_attr_raises_substr_exc(self):
"""This is a google docstring.
Raises:
re.error: Sometimes
"""
from re import error
raise error("hi")
def test_find_valid_missing_google_attr_raises(self): # [missing-raises-doc]
"""This is a google docstring.
Raises:
re.anothererror: Sometimes
"""
from re import error
raise error("hi")
def test_find_invalid_missing_google_attr_raises(self):
"""This is a google docstring.
pylint allows this to pass since the comparison between Raises and
raise are based on the class name, not the qualified name.
Raises:
bogusmodule.error: Sometimes
"""
from re import error
raise error("hi")
def test_google_raises_local_reference(self):
"""This is a google docstring.
pylint allows this to pass since the comparison between Raises and
raise are based on the class name, not the qualified name.
Raises:
.LocalException: Always
"""
from neighbor_module import LocalException
raise LocalException("hi")
def test_find_all_google_raises(self):
"""This is a Google docstring.
Raises:
RuntimeError: Always
NameError: Never
"""
raise RuntimeError("hi")
raise NameError("hi") # [unreachable]
def test_find_multiple_google_raises(self):
"""This is a Google docstring.
Raises:
RuntimeError: Always
NameError, OSError, ValueError: Never
"""
raise RuntimeError("hi")
raise NameError("hi") # [unreachable]
raise OSError(2, "abort!") # [unreachable]
raise ValueError("foo") # [unreachable]
def test_find_rethrown_google_raises(self): # [missing-raises-doc]
"""This is a Google docstring.
Raises:
NameError: Sometimes
"""
try:
fake_func()
except RuntimeError:
raise
raise NameError("hi")
def test_find_rethrown_google_multiple_raises(self): # [missing-raises-doc]
"""This is a Google docstring.
Raises:
NameError: Sometimes
"""
try:
fake_func()
except (RuntimeError, ValueError):
raise
raise NameError("hi")
def test_ignores_caught_google_raises(self):
"""This is a Google docstring.
Raises:
NameError: Sometimes
"""
try:
raise RuntimeError("hi")
except RuntimeError:
pass
raise NameError("hi")
class Foo:
"""test_finds_missing_raises_from_setter_google
Example of a setter having missing raises documentation in
the Google style docstring of the property
"""
@property
def foo_method(self): # [missing-raises-doc]
"""int: docstring
Include a "Raises" section so that this is identified
as a Google docstring and not a Numpy docstring.
Raises:
RuntimeError: Always
"""
raise RuntimeError()
return 10 # [unreachable]
@foo_method.setter
def foo_method(self, value):
print(self)
raise AttributeError()
class Foo:
"""test_finds_missing_raises_from_setter_google_2
Example of a setter having missing raises documentation in
its own Google style docstring of the property.
"""
@property
def foo_method(self):
"""int: docstring ...
Raises:
RuntimeError: Always
"""
raise RuntimeError()
return 10 # [unreachable]
@foo_method.setter
def foo_method(self, value): # [missing-raises-doc]
"""setter docstring ...
Raises:
RuntimeError: Never
"""
print(self)
if True: # [using-constant-test]
raise AttributeError()
raise RuntimeError()
|