Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Lib/contextvars.py
Original file line number Diff line number Diff line change
@@ -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)
12 changes: 12 additions & 0 deletions Lib/test/test_context.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import collections.abc
import concurrent.futures
import contextvars
import functools
Expand Down Expand Up @@ -350,6 +351,17 @@ def ctx2_fun():

ctx1.run(ctx1_fun)

def test_context_isinstance(self):
ctx = contextvars.Context()
self.assertIsInstance(ctx, collections.abc.Mapping)

mapping_methods = (
'__contains__', '__eq__', '__getitem__', '__iter__', '__len__',
'__ne__', 'get', 'items', 'keys', 'values',
)
for name in mapping_methods:
self.assertTrue(callable(getattr(ctx, name)))

@isolated_context
@threading_helper.requires_working_threading()
def test_context_threads_1(self):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Register the :class:`contextvars.Context` type to
:class:`collections.abc.Mapping`.
Loading