mirror of
https://github.com/python/cpython.git
synced 2024-11-23 01:45:25 +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
|
||||
|
||||
|
||||
__all__ = ('Context', 'ContextVar', 'Token', 'copy_context')
|
||||
|
||||
|
||||
_collections_abc.Mapping.register(Context)
|
||||
|
@ -1,3 +1,4 @@
|
||||
import collections.abc
|
||||
import concurrent.futures
|
||||
import contextvars
|
||||
import functools
|
||||
@ -350,6 +351,19 @@ class ContextTest(unittest.TestCase):
|
||||
|
||||
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
|
||||
@threading_helper.requires_working_threading()
|
||||
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