Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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)
10 changes: 10 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,15 @@ def ctx2_fun():

ctx1.run(ctx1_fun)

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

mapping_methods = ("__getitem__", "__iter__", "__len__", "__contains__", "keys",
"items", "values", "get", "__eq__", "__ne__")
for name in mapping_methods:
self.assertIn(name, dir(ctx))

@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