improvements to defer
This commit is contained in:
Vendored
+7
-2
@@ -2,7 +2,6 @@ import sys
|
||||
from typing import Any, Callable, ParamSpec, TypeVar
|
||||
|
||||
from defer._defer import _Defer
|
||||
from defer.sugar._parse import _ParseDefer
|
||||
|
||||
P = ParamSpec("P")
|
||||
T = TypeVar("T")
|
||||
@@ -11,7 +10,7 @@ T = TypeVar("T")
|
||||
class Defer:
|
||||
def __call__(self, fn: Callable[P, T], *args: P.args, **kwargs: P.kwargs):
|
||||
if sys.gettrace() is None:
|
||||
sys.settrace(_ParseDefer.IDENTITY)
|
||||
sys.settrace(_DeferTrace())
|
||||
frame = sys._getframe(1)
|
||||
if not isinstance(frame.f_trace, _Defer):
|
||||
frame.f_trace = _Defer(frame.f_trace)
|
||||
@@ -21,3 +20,9 @@ class Defer:
|
||||
def __contains__(self, fn: Any):
|
||||
breakpoint()
|
||||
self(fn)
|
||||
|
||||
|
||||
class _DeferTrace:
|
||||
"""Minimal no-op trace for when @defer is used but no other trace is active."""
|
||||
def __call__(self, frame, event, arg):
|
||||
return self
|
||||
Reference in New Issue
Block a user