mode.locals
¶
Proxy objects.
Proxies¶
Proxy objects are lazy and pass all method calls and attribute accesses to an underlying object.
There are mixins/roles for many of the generic classes, and these can be combined to create proxies.
For example to create a proxy to a class that both implements the mutable mapping interface and is an async context manager:
def create_real():
print('CREATING X')
return X()
class XProxy(MutableMappingRole, AsyncContextManagerRole):
...
x = XProxy(create_real)
Evaluation¶
By default the callable passed to Proxy
will be evaluated
every time it is needed, so in the example above a new
X will be created every time you access the underlying object:
>>> x['foo'] = 'value'
CREATING X
>>> x['foo']
CREATING X
'value'
>>> X['foo']
CREATING X
'value'
>>> # evaluates twice, once for async with then for __getitem__:
>>> async with x:
... x['foo']
CREATING X
CREATING X
'value'
If you want the creation of the object to be lazy (created
when first needed), you can pass the cache=True argument to Proxy
:
>>> x = XProxy(create_real, cache=True)
>>> # Now only evaluates the first time it is needed.
>>> x['foo'] = 'value'
CREATING X
>>> x['foo']
'value'
>>> X['foo']
'value'
>>> async with x:
... x['foo']
'value'
-
class
mode.locals.
LocalStack
¶ LocalStack.
Manage state per coroutine (also thread safe).
Most famously used probably in Flask to keep track of the current request object.
-
push
(obj: T) → Generator[[None, None], None]¶ Push a new item to the stack.
-
push_without_automatic_cleanup
(obj: T) → None¶
-
pop
() → Optional[T]¶ Remove the topmost item from the stack.
Note
Will return the old value or None if the stack was already empty.
-
property
stack
¶
-
property
top
¶ Return the topmost item on the stack.
Does not remove it from the stack.
Note
If the stack is empty,
None
is returned.
-
-
class
mode.locals.
Proxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to another object.
-
class
mode.locals.
AwaitableRole
¶ Role/Mixin for
typing.Awaitable
proxy methods.
-
class
mode.locals.
AwaitableProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.Awaitable
object.
-
class
mode.locals.
CoroutineRole
¶ Role/Mixin for
typing.Coroutine
proxy methods.-
send
(value: T_contra) → T_co¶ Send a value into the coroutine. Return next yielded value or raise StopIteration.
-
throw
(typ: Type[BaseException], val: Optional[BaseException] = None, tb: traceback = None) → T_co¶ Raise an exception in the coroutine. Return next yielded value or raise StopIteration.
-
close
() → None¶ Raise GeneratorExit inside coroutine.
-
-
class
mode.locals.
CoroutineProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.Coroutine
object.
-
class
mode.locals.
AsyncIterableRole
¶ Role/Mixin for
typing.AsyncIterable
proxy methods.
-
class
mode.locals.
AsyncIterableProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.AsyncIterable
object.
-
class
mode.locals.
AsyncIteratorRole
¶ Role/Mixin for
typing.AsyncIterator
proxy methods.
-
class
mode.locals.
AsyncIteratorProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.AsyncIterator
object.
-
class
mode.locals.
AsyncGeneratorRole
¶ Role/Mixin for
typing.AsyncGenerator
proxy methods.-
asend
(value: T_contra) → Awaitable[T_co]¶ Send a value into the asynchronous generator. Return next yielded value or raise StopAsyncIteration.
-
athrow
(typ: Type[BaseException], val: Optional[BaseException] = None, tb: traceback = None) → Awaitable[T_co]¶ Raise an exception in the asynchronous generator. Return next yielded value or raise StopAsyncIteration.
-
aclose
() → Awaitable[None]¶ Raise GeneratorExit inside coroutine.
-
-
class
mode.locals.
AsyncGeneratorProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.AsyncGenerator
object.
-
class
mode.locals.
SequenceRole
¶ Role/Mixin for
typing.Sequence
proxy methods.-
index
(value[, start[, stop]]) → integer -- return first index of value.¶ Raises ValueError if the value is not present.
Supporting start and stop arguments is optional, but recommended.
-
count
(value) → integer -- return number of occurrences of value¶
-
-
class
mode.locals.
SequenceProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.Sequence
object.
-
class
mode.locals.
MutableSequenceRole
¶ Role/Mixin for
typing.MutableSequence
proxy methods.-
insert
(index: int, object: T) → None¶ S.insert(index, value) – insert value before index
-
append
(obj: T) → None¶ S.append(value) – append value to the end of the sequence
-
extend
(iterable: Iterable[T]) → None¶ S.extend(iterable) – extend sequence by appending elements from the iterable
-
reverse
() → None¶ S.reverse() – reverse IN PLACE
-
pop
([index]) → item -- remove and return item at index (default last).¶ Raise IndexError if list is empty or index is out of range.
-
remove
(object: T) → None¶ S.remove(value) – remove first occurrence of value. Raise ValueError if the value is not present.
-
-
class
mode.locals.
MutableSequenceProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.MutableSequence
object.
-
class
mode.locals.
SetRole
¶ Role/Mixin for
typing.AbstractSet
proxy methods.-
isdisjoint
(s: Iterable[Any]) → bool¶ Return True if two sets have a null intersection.
-
-
class
mode.locals.
SetProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.AbstractSet
object.
-
class
mode.locals.
MutableSetRole
¶ Role/Mixin for
typing.MutableSet
proxy methods.-
add
(x: T) → None¶ Add an element.
-
discard
(x: T) → None¶ Remove an element. Do not raise an exception if absent.
-
clear
() → None¶ This is slow (creates N new iterators!) but effective.
-
pop
() → T¶ Return the popped value. Raise KeyError if empty.
-
remove
(element: T) → None¶ Remove an element. If not a member, raise a KeyError.
-
-
class
mode.locals.
MutableSetProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.MutableSet
object.
-
class
mode.locals.
ContextManagerRole
¶ Role/Mixin for
typing.ContextManager
proxy methods.
-
class
mode.locals.
ContextManagerProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.ContextManager
object.
-
class
mode.locals.
AsyncContextManagerRole
¶ Role/Mixin for
typing.AsyncContextManager
proxy methods.
-
class
mode.locals.
AsyncContextManagerProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.AsyncContextManager
object.
-
class
mode.locals.
MappingRole
¶ Role/Mixin for
typing.Mapping
proxy methods.-
get
(k[, d]) → D[k] if k in D, else d. d defaults to None.¶
-
items
() → a set-like object providing a view on D's items¶
-
keys
() → a set-like object providing a view on D's keys¶
-
values
() → an object providing a view on D's values¶
-
-
class
mode.locals.
MappingProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.Mapping
object.
-
class
mode.locals.
MutableMappingRole
¶ Role/Mixin for
typing.MutableMapping
proxy methods.-
clear
() → None. Remove all items from D.¶
-
pop
(k[, d]) → v, remove specified key and return the corresponding value.¶ If key is not found, d is returned if given, otherwise KeyError is raised.
-
popitem
() → (k, v), remove and return some (key, value) pair¶ as a 2-tuple; but raise KeyError if D is empty.
-
setdefault
(k[, d]) → D.get(k,d), also set D[k]=d if k not in D¶
-
update
([E, ]**F) → None. Update D from mapping/iterable E and F.¶ If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v
-
-
class
mode.locals.
MutableMappingProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.MutableMapping
object.
-
class
mode.locals.
CallableRole
¶ Role/Mixin for
typing.Callable
proxy methods.
-
class
mode.locals.
CallableProxy
(local: Callable[..., T], args: Tuple = None, kwargs: Dict = None, name: str = None, cache: bool = False, __doc__: str = None)¶ Proxy to
typing.Callable
object.
-
mode.locals.
maybe_evaluate
(obj: Any) → Any¶ Attempt to evaluate promise, even if obj is not a promise.