mirror of
https://github.com/python/cpython.git
synced 2025-08-23 10:16:01 +00:00
bpo-38979: fix ContextVar "__class_getitem__" method (GH-17497)
now contextvars.ContextVar "__class_getitem__" method returns ContextVar class, not None. https://bugs.python.org/issue38979 Automerge-Triggered-By: @asvetlov
This commit is contained in:
parent
00ada2c1d5
commit
28c91631c2
3 changed files with 9 additions and 6 deletions
|
@ -38,9 +38,6 @@ class ContextTest(unittest.TestCase):
|
||||||
|
|
||||||
self.assertNotEqual(hash(c), hash('aaa'))
|
self.assertNotEqual(hash(c), hash('aaa'))
|
||||||
|
|
||||||
def test_context_var_new_2(self):
|
|
||||||
self.assertIsNone(contextvars.ContextVar[int])
|
|
||||||
|
|
||||||
@isolated_context
|
@isolated_context
|
||||||
def test_context_var_repr_1(self):
|
def test_context_var_repr_1(self):
|
||||||
c = contextvars.ContextVar('a')
|
c = contextvars.ContextVar('a')
|
||||||
|
@ -361,6 +358,10 @@ class ContextTest(unittest.TestCase):
|
||||||
tp.shutdown()
|
tp.shutdown()
|
||||||
self.assertEqual(results, list(range(10)))
|
self.assertEqual(results, list(range(10)))
|
||||||
|
|
||||||
|
def test_contextvar_getitem(self):
|
||||||
|
clss = contextvars.ContextVar
|
||||||
|
self.assertEqual(clss[str], clss)
|
||||||
|
|
||||||
|
|
||||||
# HAMT Tests
|
# HAMT Tests
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Return class from ``ContextVar.__class_getitem__`` to simplify subclassing.
|
|
@ -1024,9 +1024,10 @@ _contextvars_ContextVar_reset(PyContextVar *self, PyObject *token)
|
||||||
|
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
contextvar_cls_getitem(PyObject *self, PyObject *args)
|
contextvar_cls_getitem(PyObject *self, PyObject *arg)
|
||||||
{
|
{
|
||||||
Py_RETURN_NONE;
|
Py_INCREF(self);
|
||||||
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyMemberDef PyContextVar_members[] = {
|
static PyMemberDef PyContextVar_members[] = {
|
||||||
|
@ -1039,7 +1040,7 @@ static PyMethodDef PyContextVar_methods[] = {
|
||||||
_CONTEXTVARS_CONTEXTVAR_SET_METHODDEF
|
_CONTEXTVARS_CONTEXTVAR_SET_METHODDEF
|
||||||
_CONTEXTVARS_CONTEXTVAR_RESET_METHODDEF
|
_CONTEXTVARS_CONTEXTVAR_RESET_METHODDEF
|
||||||
{"__class_getitem__", contextvar_cls_getitem,
|
{"__class_getitem__", contextvar_cls_getitem,
|
||||||
METH_VARARGS | METH_STATIC, NULL},
|
METH_O | METH_CLASS, NULL},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue