+import _collections_abc
from _contextvars import Context, ContextVar, Token, copy_context
__all__ = ('Context', 'ContextVar', 'Token', 'copy_context')
+
+
+_collections_abc.Mapping.register(Context)
+import collections.abc
import concurrent.futures
import contextvars
import functools
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):