mirror of https://github.com/python/cpython
bpo-46864: Deprecate PyBytesObject.ob_shash. (GH-31598)
This commit is contained in:
parent
6927632492
commit
2d8b764210
|
@ -985,6 +985,9 @@ Deprecated
|
||||||
<init-config>` instead (:pep:`587`).
|
<init-config>` instead (:pep:`587`).
|
||||||
(Contributed by Victor Stinner in :issue:`44113`.)
|
(Contributed by Victor Stinner in :issue:`44113`.)
|
||||||
|
|
||||||
|
* Deprecate the ``ob_shash`` member of the :c:type:`PyBytesObject`. Use :c:func:`PyObject_Hash` instead.
|
||||||
|
(Contributed by Inada Naoki in :issue:`46864`.)
|
||||||
|
|
||||||
Removed
|
Removed
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
PyObject_VAR_HEAD
|
PyObject_VAR_HEAD
|
||||||
Py_hash_t ob_shash;
|
Py_DEPRECATED(3.11) Py_hash_t ob_shash;
|
||||||
char ob_sval[1];
|
char ob_sval[1];
|
||||||
|
|
||||||
/* Invariants:
|
/* Invariants:
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Deprecate ``PyBytesObject.ob_shash``. It will be removed in Python 3.13.
|
|
@ -105,7 +105,10 @@ _PyBytes_FromSize(Py_ssize_t size, int use_calloc)
|
||||||
return PyErr_NoMemory();
|
return PyErr_NoMemory();
|
||||||
}
|
}
|
||||||
_PyObject_InitVar((PyVarObject*)op, &PyBytes_Type, size);
|
_PyObject_InitVar((PyVarObject*)op, &PyBytes_Type, size);
|
||||||
|
_Py_COMP_DIAG_PUSH
|
||||||
|
_Py_COMP_DIAG_IGNORE_DEPR_DECLS
|
||||||
op->ob_shash = -1;
|
op->ob_shash = -1;
|
||||||
|
_Py_COMP_DIAG_POP
|
||||||
if (!use_calloc) {
|
if (!use_calloc) {
|
||||||
op->ob_sval[size] = '\0';
|
op->ob_sval[size] = '\0';
|
||||||
}
|
}
|
||||||
|
@ -169,7 +172,10 @@ PyBytes_FromString(const char *str)
|
||||||
return PyErr_NoMemory();
|
return PyErr_NoMemory();
|
||||||
}
|
}
|
||||||
_PyObject_InitVar((PyVarObject*)op, &PyBytes_Type, size);
|
_PyObject_InitVar((PyVarObject*)op, &PyBytes_Type, size);
|
||||||
|
_Py_COMP_DIAG_PUSH
|
||||||
|
_Py_COMP_DIAG_IGNORE_DEPR_DECLS
|
||||||
op->ob_shash = -1;
|
op->ob_shash = -1;
|
||||||
|
_Py_COMP_DIAG_POP
|
||||||
memcpy(op->ob_sval, str, size+1);
|
memcpy(op->ob_sval, str, size+1);
|
||||||
return (PyObject *) op;
|
return (PyObject *) op;
|
||||||
}
|
}
|
||||||
|
@ -1446,7 +1452,10 @@ bytes_repeat(PyBytesObject *a, Py_ssize_t n)
|
||||||
return PyErr_NoMemory();
|
return PyErr_NoMemory();
|
||||||
}
|
}
|
||||||
_PyObject_InitVar((PyVarObject*)op, &PyBytes_Type, size);
|
_PyObject_InitVar((PyVarObject*)op, &PyBytes_Type, size);
|
||||||
|
_Py_COMP_DIAG_PUSH
|
||||||
|
_Py_COMP_DIAG_IGNORE_DEPR_DECLS
|
||||||
op->ob_shash = -1;
|
op->ob_shash = -1;
|
||||||
|
_Py_COMP_DIAG_POP
|
||||||
op->ob_sval[size] = '\0';
|
op->ob_sval[size] = '\0';
|
||||||
if (Py_SIZE(a) == 1 && n > 0) {
|
if (Py_SIZE(a) == 1 && n > 0) {
|
||||||
memset(op->ob_sval, a->ob_sval[0] , n);
|
memset(op->ob_sval, a->ob_sval[0] , n);
|
||||||
|
@ -1562,11 +1571,14 @@ bytes_richcompare(PyBytesObject *a, PyBytesObject *b, int op)
|
||||||
static Py_hash_t
|
static Py_hash_t
|
||||||
bytes_hash(PyBytesObject *a)
|
bytes_hash(PyBytesObject *a)
|
||||||
{
|
{
|
||||||
|
_Py_COMP_DIAG_PUSH
|
||||||
|
_Py_COMP_DIAG_IGNORE_DEPR_DECLS
|
||||||
if (a->ob_shash == -1) {
|
if (a->ob_shash == -1) {
|
||||||
/* Can't fail */
|
/* Can't fail */
|
||||||
a->ob_shash = _Py_HashBytes(a->ob_sval, Py_SIZE(a));
|
a->ob_shash = _Py_HashBytes(a->ob_sval, Py_SIZE(a));
|
||||||
}
|
}
|
||||||
return a->ob_shash;
|
return a->ob_shash;
|
||||||
|
_Py_COMP_DIAG_POP
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject*
|
static PyObject*
|
||||||
|
@ -2868,8 +2880,11 @@ bytes_subtype_new(PyTypeObject *type, PyObject *tmp)
|
||||||
if (pnew != NULL) {
|
if (pnew != NULL) {
|
||||||
memcpy(PyBytes_AS_STRING(pnew),
|
memcpy(PyBytes_AS_STRING(pnew),
|
||||||
PyBytes_AS_STRING(tmp), n+1);
|
PyBytes_AS_STRING(tmp), n+1);
|
||||||
|
_Py_COMP_DIAG_PUSH
|
||||||
|
_Py_COMP_DIAG_IGNORE_DEPR_DECLS
|
||||||
((PyBytesObject *)pnew)->ob_shash =
|
((PyBytesObject *)pnew)->ob_shash =
|
||||||
((PyBytesObject *)tmp)->ob_shash;
|
((PyBytesObject *)tmp)->ob_shash;
|
||||||
|
_Py_COMP_DIAG_POP
|
||||||
}
|
}
|
||||||
return pnew;
|
return pnew;
|
||||||
}
|
}
|
||||||
|
@ -3051,7 +3066,10 @@ _PyBytes_Resize(PyObject **pv, Py_ssize_t newsize)
|
||||||
sv = (PyBytesObject *) *pv;
|
sv = (PyBytesObject *) *pv;
|
||||||
Py_SET_SIZE(sv, newsize);
|
Py_SET_SIZE(sv, newsize);
|
||||||
sv->ob_sval[newsize] = '\0';
|
sv->ob_sval[newsize] = '\0';
|
||||||
|
_Py_COMP_DIAG_PUSH
|
||||||
|
_Py_COMP_DIAG_IGNORE_DEPR_DECLS
|
||||||
sv->ob_shash = -1; /* invalidate cached hash value */
|
sv->ob_shash = -1; /* invalidate cached hash value */
|
||||||
|
_Py_COMP_DIAG_POP
|
||||||
return 0;
|
return 0;
|
||||||
error:
|
error:
|
||||||
*pv = 0;
|
*pv = 0;
|
||||||
|
|
Loading…
Reference in New Issue