@@ -108,6 +108,7 @@ def warns( # noqa: F811
108
108
expected_warning : Union [Type [Warning ], Tuple [Type [Warning ], ...]] = Warning ,
109
109
* args : Any ,
110
110
match : Optional [Union [str , Pattern [str ]]] = None ,
111
+ re_emit : bool = False ,
111
112
** kwargs : Any ,
112
113
) -> Union ["WarningsChecker" , Any ]:
113
114
r"""Assert that code raises a particular class of warning.
@@ -158,12 +159,14 @@ def warns( # noqa: F811
158
159
f"Unexpected keyword arguments passed to pytest.warns: { argnames } "
159
160
"\n Use context-manager form instead?"
160
161
)
161
- return WarningsChecker (expected_warning , match_expr = match , _ispytest = True )
162
+ return WarningsChecker (
163
+ expected_warning , match_expr = match , _ispytest = True , re_emit = re_emit
164
+ )
162
165
else :
163
166
func = args [0 ]
164
167
if not callable (func ):
165
168
raise TypeError (f"{ func !r} object (type: { type (func )} ) must be callable" )
166
- with WarningsChecker (expected_warning , _ispytest = True ):
169
+ with WarningsChecker (expected_warning , _ispytest = True , re_emit = re_emit ):
167
170
return func (* args [1 :], ** kwargs )
168
171
169
172
@@ -256,6 +259,7 @@ def __init__(
256
259
match_expr : Optional [Union [str , Pattern [str ]]] = None ,
257
260
* ,
258
261
_ispytest : bool = False ,
262
+ re_emit : bool = False ,
259
263
) -> None :
260
264
check_ispytest (_ispytest )
261
265
super ().__init__ (_ispytest = True )
@@ -276,6 +280,7 @@ def __init__(
276
280
277
281
self .expected_warning = expected_warning_tup
278
282
self .match_expr = match_expr
283
+ self .re_emit = re_emit
279
284
280
285
def __exit__ (
281
286
self ,
@@ -318,7 +323,8 @@ def re_emit(remove=None):
318
323
for r in self :
319
324
if issubclass (r .category , self .expected_warning ):
320
325
if re .compile (self .match_expr ).search (str (r .message )):
321
- re_emit (r )
326
+ if self .re_emit :
327
+ re_emit (r )
322
328
break
323
329
else :
324
330
fail (
@@ -328,4 +334,5 @@ def re_emit(remove=None):
328
334
Emitted warnings: { found_str ()} """
329
335
)
330
336
else :
331
- re_emit ()
337
+ if self .re_emit :
338
+ re_emit ()
0 commit comments