mirror of
https://github.com/python/cpython.git
synced 2024-11-23 09:54:58 +08:00
gh-126451: Register contextvars.Context to collections.abc.Mapping (#126452)
Co-authored-by: sobolevn <mail@sobolevn.me> Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com> Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
This commit is contained in:
parent
b9082958ef
commit
5dc36dc565
@ -1,4 +1,8 @@
|
|||||||
|
import _collections_abc
|
||||||
from _contextvars import Context, ContextVar, Token, copy_context
|
from _contextvars import Context, ContextVar, Token, copy_context
|
||||||
|
|
||||||
|
|
||||||
__all__ = ('Context', 'ContextVar', 'Token', 'copy_context')
|
__all__ = ('Context', 'ContextVar', 'Token', 'copy_context')
|
||||||
|
|
||||||
|
|
||||||
|
_collections_abc.Mapping.register(Context)
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import collections.abc
|
||||||
import concurrent.futures
|
import concurrent.futures
|
||||||
import contextvars
|
import contextvars
|
||||||
import functools
|
import functools
|
||||||
@ -350,6 +351,19 @@ class ContextTest(unittest.TestCase):
|
|||||||
|
|
||||||
ctx1.run(ctx1_fun)
|
ctx1.run(ctx1_fun)
|
||||||
|
|
||||||
|
def test_context_isinstance(self):
|
||||||
|
ctx = contextvars.Context()
|
||||||
|
self.assertIsInstance(ctx, collections.abc.Mapping)
|
||||||
|
self.assertTrue(issubclass(contextvars.Context, collections.abc.Mapping))
|
||||||
|
|
||||||
|
mapping_methods = (
|
||||||
|
'__contains__', '__eq__', '__getitem__', '__iter__', '__len__',
|
||||||
|
'__ne__', 'get', 'items', 'keys', 'values',
|
||||||
|
)
|
||||||
|
for name in mapping_methods:
|
||||||
|
with self.subTest(name=name):
|
||||||
|
self.assertTrue(callable(getattr(ctx, name)))
|
||||||
|
|
||||||
@isolated_context
|
@isolated_context
|
||||||
@threading_helper.requires_working_threading()
|
@threading_helper.requires_working_threading()
|
||||||
def test_context_threads_1(self):
|
def test_context_threads_1(self):
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
Register the :class:`contextvars.Context` type to
|
||||||
|
:class:`collections.abc.Mapping`.
|
Loading…
Reference in New Issue
Block a user