Browse Source
bpo-33985: Implement ContextVar.name attribute. (GH-7980)
pull/6481/head
Yury Selivanov
8 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with
15 additions and
2 deletions
-
Doc/library/contextvars.rst
-
Lib/test/test_context.py
-
Misc/NEWS.d/next/Core and Builtins/2018-06-27-18-56-41.bpo-33985.ILJ3Af.rst
-
Python/context.c
|
|
|
@ -48,6 +48,8 @@ Context Variables |
|
|
|
|
|
|
|
The name of the variable. This is a read-only property. |
|
|
|
|
|
|
|
.. versionadded:: 3.7.1 |
|
|
|
|
|
|
|
.. method:: get([default]) |
|
|
|
|
|
|
|
Return a value for the context variable for the current context. |
|
|
|
|
|
|
|
@ -30,8 +30,13 @@ class ContextTest(unittest.TestCase): |
|
|
|
with self.assertRaisesRegex(TypeError, 'must be a str'): |
|
|
|
contextvars.ContextVar(1) |
|
|
|
|
|
|
|
c = contextvars.ContextVar('a') |
|
|
|
self.assertNotEqual(hash(c), hash('a')) |
|
|
|
c = contextvars.ContextVar('aaa') |
|
|
|
self.assertEqual(c.name, 'aaa') |
|
|
|
|
|
|
|
with self.assertRaises(AttributeError): |
|
|
|
c.name = 'bbb' |
|
|
|
|
|
|
|
self.assertNotEqual(hash(c), hash('aaa')) |
|
|
|
|
|
|
|
def test_context_var_new_2(self): |
|
|
|
self.assertIsNone(contextvars.ContextVar[int]) |
|
|
|
|
|
|
|
@ -0,0 +1 @@ |
|
|
|
Implement contextvars.ContextVar.name attribute. |
|
|
|
@ -940,6 +940,10 @@ contextvar_cls_getitem(PyObject *self, PyObject *args) |
|
|
|
Py_RETURN_NONE; |
|
|
|
} |
|
|
|
|
|
|
|
static PyMemberDef PyContextVar_members[] = { |
|
|
|
{"name", T_OBJECT, offsetof(PyContextVar, var_name), READONLY}, |
|
|
|
{NULL} |
|
|
|
}; |
|
|
|
|
|
|
|
static PyMethodDef PyContextVar_methods[] = { |
|
|
|
_CONTEXTVARS_CONTEXTVAR_GET_METHODDEF |
|
|
|
@ -955,6 +959,7 @@ PyTypeObject PyContextVar_Type = { |
|
|
|
"ContextVar", |
|
|
|
sizeof(PyContextVar), |
|
|
|
.tp_methods = PyContextVar_methods, |
|
|
|
.tp_members = PyContextVar_members, |
|
|
|
.tp_dealloc = (destructor)contextvar_tp_dealloc, |
|
|
|
.tp_getattro = PyObject_GenericGetAttr, |
|
|
|
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, |
|
|
|
|