# Pending Removal in Future Versions

The following APIs are deprecated and will be removed, although there is currently no date scheduled for their removal.

- `Py_TPFLAGS_HAVE_FINALIZE`: unneeded since Python 3.8.

- `PyErr_Fetch()`: use `PyErr_GetRaisedException()` instead.

- `PyErr_NormalizeException()`: use `PyErr_GetRaisedException()` instead.

- `PyErr_Restore()`: use `PyErr_SetRaisedException()` instead.

- `PyModule_GetFilename()`: use `PyModule_GetFilenameObject()` instead.

- `PyOS_AfterFork()`: use `PyOS_AfterFork_Child()` instead.

- `PySlice_GetIndicesEx()`: use `PySlice_Unpack()` and `PySlice_AdjustIndices()` instead.

- `PyUnicode_AsDecodedObject()`: use `PyCodec_Decode()` instead.

- `PyUnicode_AsDecodedUnicode()`: use `PyCodec_Decode()` instead.

- `PyUnicode_AsEncodedObject()`: use `PyCodec_Encode()` instead.

- `PyUnicode_AsEncodedUnicode()`: use `PyCodec_Encode()` instead.

- `PyUnicode_READY()`: unneeded since Python 3.12

- `PyErr_Display()`: use `PyErr_DisplayException()` instead.

- `_PyErr_ChainExceptions()`: use `_PyErr_ChainExceptions1` instead.

- `PyBytesObject.ob_shash` member: call `PyObject_Hash()` instead.

- `PyDictObject.ma_version_tag` member.

- Thread Local Storage (TLS) API:

  - `PyThread_create_key()`: use `PyThread_tss_alloc()` instead.

  - `PyThread_delete_key()`: use `PyThread_tss_free()` instead.

  - `PyThread_set_key_value()`: use `PyThread_tss_set()` instead.

  - `PyThread_get_key_value()`: use `PyThread_tss_get()` instead.

  - `PyThread_delete_key_value()`: use `PyThread_tss_delete()` instead.

  - `PyThread_ReInitTLS()`: unneeded since Python 3.7.