Skip to content

Commit 17c71c9

Browse files
authored
Merge branch 'master' into bep-016
2 parents f00ca2b + 373da35 commit 17c71c9

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

tools/schemacode/src/bidsschematools/render/tsv.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
from markdown_it import MarkdownIt
88
from tabulate import tabulate
99

10-
from ..utils import filter_warnings, in_context
10+
from ..utils import WarningsFilter, in_context
1111
from .utils import propagate_fence_exception
1212

1313

14-
@in_context(filter_warnings(["error"]))
1514
@propagate_fence_exception
15+
@in_context(WarningsFilter(["error"]))
1616
def fence(
1717
source: str,
1818
language: str,

tools/schemacode/src/bidsschematools/utils.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import os
77
import sys
88
import warnings
9-
from contextlib import contextmanager
109
from functools import wraps
1110

1211
from . import data
@@ -179,14 +178,20 @@ def wrapper(*args, **kwargs):
179178
return decorator
180179

181180

182-
@contextmanager
183-
def filter_warnings(*filters):
181+
class WarningsFilter:
184182
"""Context manager to apply warning filters.
185183
186184
Arguments are lists of positional arguments to :func:`warnings.filterwarnings`.
187185
"""
188186

189-
with warnings.catch_warnings():
190-
for filt in filters:
187+
def __init__(self, *filters):
188+
self.filters = filters
189+
190+
def __enter__(self):
191+
self.catcher = warnings.catch_warnings()
192+
self.catcher.__enter__()
193+
for filt in self.filters:
191194
warnings.filterwarnings(*filt)
192-
yield
195+
196+
def __exit__(self, exc_type, exc_value, traceback):
197+
self.catcher.__exit__(exc_type, exc_value, traceback)

0 commit comments

Comments
 (0)