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.
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])
--- /dev/null
+Implement contextvars.ContextVar.name attribute.
Py_RETURN_NONE;
}
+static PyMemberDef PyContextVar_members[] = {
+ {"name", T_OBJECT, offsetof(PyContextVar, var_name), READONLY},
+ {NULL}
+};
static PyMethodDef PyContextVar_methods[] = {
_CONTEXTVARS_CONTEXTVAR_GET_METHODDEF
"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,