core/stats: exclude contextmanagers from guess_stats
This commit is contained in:
parent
fb2b3e07de
commit
70bf51a125
2 changed files with 12 additions and 2 deletions
|
@ -409,6 +409,10 @@ def stat(
|
||||||
) -> Stats:
|
) -> Stats:
|
||||||
if callable(func):
|
if callable(func):
|
||||||
fr = func()
|
fr = func()
|
||||||
|
if hasattr(fr, '__enter__') and hasattr(fr, '__exit__'):
|
||||||
|
# context managers has Iterable type, but they aren't data providers
|
||||||
|
# sadly doesn't look like there is a way to tell from typing annotations
|
||||||
|
return {}
|
||||||
fname = func.__name__
|
fname = func.__name__
|
||||||
else:
|
else:
|
||||||
# meh. means it's just a list.. not sure how to generate a name then
|
# meh. means it's just a list.. not sure how to generate a name then
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
"""
|
"""
|
||||||
Helper 'module' for test_guess_stats
|
Helper 'module' for test_guess_stats
|
||||||
"""
|
"""
|
||||||
|
from contextlib import contextmanager
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Iterable, Sequence
|
from typing import Iterable, Sequence, Iterator
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
@ -28,3 +28,9 @@ def iter_data() -> Iterable[Item]:
|
||||||
for path in inputs():
|
for path in inputs():
|
||||||
for i in range(3):
|
for i in range(3):
|
||||||
yield Item(id=str(i), dt=dt + timedelta(days=i), source=path)
|
yield Item(id=str(i), dt=dt + timedelta(days=i), source=path)
|
||||||
|
|
||||||
|
|
||||||
|
@contextmanager
|
||||||
|
def some_contextmanager() -> Iterator[str]:
|
||||||
|
# this shouldn't end up in guess_stats because context manager is not a data provider
|
||||||
|
yield 'hello'
|
||||||
|
|
Loading…
Add table
Reference in a new issue