Skip to content

Adds missing return type to collect_traces function #442

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions returns/primitives/tracing.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import types
from contextlib import contextmanager
from inspect import FrameInfo, stack
from typing import List, Optional
from typing import Iterator, List, Optional

from returns.result import _Failure


@contextmanager
def collect_traces():
def collect_traces() -> Iterator[None]:
"""
Context Manager/Decorator to active traces collect to the Failures.

Expand Down Expand Up @@ -39,7 +38,7 @@ def collect_traces():
unpatched_get_trace = getattr(_Failure, '_get_trace') # noqa: B009
substitute_get_trace = types.MethodType(_get_trace, _Failure)
setattr(_Failure, '_get_trace', substitute_get_trace) # noqa: B010
try:
try: # noqa: WPS501
yield
finally:
setattr(_Failure, '_get_trace', unpatched_get_trace) # noqa: B010
Expand All @@ -65,3 +64,6 @@ class on Monkey Patching promoted by
"""
current_stack = stack()
return current_stack[2:]


collect_traces = contextmanager(collect_traces) # type: ignore
13 changes: 13 additions & 0 deletions typesafety/test_primitives/test_tracing/test_collect_traces.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
- case: collect_traces_context_manager_return_type_hint
disable_cache: true
main: |
from returns.primitives.tracing import collect_traces

reveal_type(collect_traces) # N: Revealed type is 'def () -> typing.Iterator[None]'

- case: collect_traces_context_manager_return_type
disable_cache: true
main: |
from returns.primitives.tracing import collect_traces

reveal_type(collect_traces()) # N: Revealed type is 'typing.Iterator[None]'