非推奨¶
Python 3.16 で削除予定¶
インポートシステム:
モジュールの
__spec__.loaderを設定せずに__loader__を設定することは非推奨です。 Python 3.16 では、インポートシステムや標準ライブラリは__loader__を設定しなくなり、その値も参照しなくなります。
-
書式コード
'u'(wchar_t) は、Python 3.3 からドキュメントで非推奨とされ、Python 3.13 からは実行時にも非推奨とされています。 Unicode 文字には、代わりに書式コード'w'(Py_UCS4) を使ってください。
-
asyncio.iscoroutinefunction()は非推奨となり、Python 3.16 で削除されます。 代わりにinspect.iscoroutinefunction()を使ってください。 (Jiahao Li と Kumar Aditya が gh-122875 で貢献しました。)asyncioのポリシーシステムは非推奨となり、Python 3.16 で削除されます。 具体的には、以下のクラスと関数が非推奨です:使いたいイベントループの実装を指定するには、
asyncio.run()またはasyncio.Runnerのloop_factoryを使ってください。例えば、Windows で
asyncio.SelectorEventLoopを使うには、次のようにします。import asyncio async def main(): ... asyncio.run(main(), loop_factory=asyncio.SelectorEventLoop)
(Kumar Aditya が gh-127949 で貢献しました。)
-
真偽値に対するビット単位の反転
~Trueや~Falseは、直感に反する意外な結果 (-2と-1) になるため、Python 3.12 から非推奨です。 真偽値の論理否定には、代わりにnot xを使ってください。 元の整数値のビット単位の反転が必要になるまれな場合には、明示的にintに変換してください (~int(x))。
-
functools.reduce()の Python 実装を、functionやsequenceをキーワード引数として指定して呼び出すことは、Python 3.14 から非推奨です。
-
strm引数を持つカスタムログハンドラーへの対応は非推奨となり、Python 3.16 で削除予定です。 代わりにstream引数を持つハンドラーを定義してください。 (Mariusz Felisiak が gh-115032 で貢献しました。)
-
mimetypes.MimeTypes.add_type()で有効な拡張子は、'.' で始まるものか空のものです。 ドットのない拡張子は非推奨となり、Python 3.16 ではValueErrorが発生します。 (Hugo van Kemenade が gh-75223 で貢献しました。)
-
ExecError例外は Python 3.14 から非推奨です。 Python 3.4 以降はshutilのどの関数でも使われておらず、現在はRuntimeErrorの別名になっています。
-
Class.get_methodsメソッドは Python 3.14 から非推奨です。
sys:_enablelegacywindowsfsencoding()関数は Python 3.13 から非推奨です。 代わりに環境変数PYTHONLEGACYWINDOWSFSENCODINGを使ってください。
-
sysconfig.expand_makefile_vars()関数は Python 3.14 から非推奨です。 代わりにsysconfig.get_paths()のvars引数を使ってください。
-
ドキュメント化されておらず、使われてもいない
TarFile.tarfile属性は Python 3.13 から非推奨です。
Python 3.17 で削除予定¶
-
年を含まず
%e(月内の日) を含む書式文字列でstrptime()を呼び出すこと。 これは Python 3.15 から非推奨です。 (Stan Ulbrych が gh-70647 で貢献しました。)
-
collections.abc.ByteStringは Python 3.17 で削除予定です。実行時に
objが バッファプロトコル を実装しているか調べるには、isinstance(obj, collections.abc.Buffer)を使ってください。 型アノテーションにはBufferを使うか、コードが対応する型を明示したユニオン (例えばbytes | bytearray | memoryview) を使ってください。ByteStringは当初、bytesとbytearrayの両方の上位型となる抽象クラスとして意図されていました。 しかし、この ABC はメソッドを一つも持たないため、あるオブジェクトがByteStringのインスタンスだと分かっても、そのオブジェクトに関する有用な情報は何も得られませんでした。memoryviewなど、他の一般的なバッファ型も、実行時にも静的型チェッカーによってもByteStringのサブタイプとして認識されることはありませんでした。
-
encodings.normalize_encoding()に非 ASCII のencoding名を渡すことは非推奨となり、Python 3.17 で削除予定です。 (Stan Ulbrych が gh-136702 で貢献しました。)
-
profileモジュールは非推奨となり、Python 3.17 で削除されます。 代わりに、互換性のある API を提供するprofiling.tracingを使ってください。 詳しくは PEP 799 を参照してください。 (Pablo Galindo と László Kiss Kollár が gh-138122 で貢献しました。)
-
webbrowser.MacOSXOSAScriptは非推奨となりました。 代わりにwebbrowser.MacOSを使ってください。 (gh-137586)
-
Python 3.14 より前は、従来のユニオンは非公開クラス
typing._UnionGenericAliasを使って実装されていました。 このクラスは実装上は不要になりましたが、後方互換性のために残されており、Python 3.17 で削除予定です。 非公開の実装の詳細に依存する代わりに、typing.get_origin()やtyping.get_args()など、ドキュメント化されたイントロスペクション用の補助関数を使ってください。Python 3.9 から非推奨となっている
typing.ByteStringは、Python 3.17 で削除予定です。実行時に
objが バッファプロトコル を実装しているか調べるには、isinstance(obj, collections.abc.Buffer)を使ってください。 型アノテーションにはBufferを使うか、コードが対応する型を明示したユニオン (例えばbytes | bytearray | memoryview) を使ってください。ByteStringは当初、bytesとbytearrayの両方の上位型となる抽象クラスとして意図されていました。 しかし、この ABC はメソッドを一つも持たないため、あるオブジェクトがByteStringのインスタンスだと分かっても、そのオブジェクトに関する有用な情報は何も得られませんでした。memoryviewなど、他の一般的なバッファ型も、実行時にも静的型チェッカーによってもByteStringのサブタイプとして認識されることはありませんでした。
-
Python 3.14 から非推奨となっている
tkinter.Variableのメソッドtrace_variable()、trace()(trace_variable()の別名)、trace_vdelete()、trace_vinfo()は、Python 3.17 で削除予定です。 代わりにtrace_add()、trace_remove()、trace_info()を使ってください。 (Serhiy Storchaka が gh-120220 で貢献しました。)
Python 3.18 で削除予定¶
Python 3.19 で削除予定¶
-
http.cookies.Morsel.js_output()は非推奨となり、Python 3.19 で削除されます。http.cookies.BaseCookie.js_output()は非推奨となり、Python 3.19 で削除されます。
-
IMAP4.fileの変更は非推奨となり、Python 3.19 で削除予定です。 このプロパティは現在使われておらず、値を変更しても現在のファイルは自動的には閉じられません。Python 3.14 より前は、このプロパティは
IMAP4の対応するread()メソッドとreadline()メソッドの実装に使われていましたが、それ以降は使われていません。
Python 3.20 で削除予定¶
struct.Structの__new__()メソッドをformat引数なしで呼び出すことは非推奨となり、Python 3.20 で削除されます。 初期化済みのStructオブジェクトで__init__()メソッドを呼び出すことも非推奨となり、Python 3.20 で削除されます。(Sergey B Kirpichev と Serhiy Storchaka が gh-143715 で貢献しました。)
以下の標準ライブラリモジュールの
__version__、version、VERSION属性は非推奨となり、Python 3.20 で削除されます。 代わりにsys.version_infoを使ってください。ctypes.macholibdecimal(代わりにdecimal.SPEC_VERSIONを使ってください)logging(__date__も非推奨)xml.sax.expatreader
(Hugo van Kemenade と Stan Ulbrych が gh-76007 で貢献しました。)
PEP 829 で定義された非推奨事項:
name.pthファイルにimport行がある場合は警告が出ます。name.pthファイルは、デフォルトではロケールのエンコーディングでデコードされなくなります。utf-8-sigでエンコードされて いなければなりません。
(Barry Warsaw が gh-148641 で貢献しました。)
ast:抽象 AST ノード (
ast.ASTやast.exprなど) のインスタンスを作成することは非推奨となり、Python 3.20 ではエラーになります。
-
実行時チェック可能なプロトコルクラスを継承していても、
runtime_checkable()で明示的にデコレートされていないプロトコルクラスに対し、isinstance()やissubclass()でチェックすることは非推奨です。 Python 3.20 ではTypeErrorが発生します。(Bartosz Sławecki が gh-132604 で貢献しました。)
将来のバージョンで削除予定¶
以下の API は将来削除されますが、現時点では削除時期は決まっていません。
-
引数グループの入れ子と、相互排他的なグループの入れ子は非推奨です。
add_argument_group()に、ドキュメント化されていないキーワード引数prefix_charsを渡すことは非推奨になりました。argparse.FileType型コンバーターは非推奨です。
-
ジェネレーター:
throw(type, exc, tb)とathrow(type, exc, tb)というシグネチャは非推奨です。 代わりに、引数が一つのthrow(exc)とathrow(exc)を使ってください。現在の Python は、
0in x、1or x、0if 1else 2のように数値リテラルの直後にキーワードが続く記法を受け付けます。 そのため、[0x1for x in y]のような紛らわしく曖昧な式も書けます ([0x1 for x in y]とも[0x1f or x in y]とも解釈できます)。 数値リテラルの直後にand、else、for、if、in、is、orのいずれかが続く場合は、構文上の警告が発生します。 将来のリリースでは構文エラーになります。 (gh-87999)Support for
__index__()and__int__()method returning non-int type: these methods will be required to return an instance of a strict subclass ofint.__float__()メソッドがfloatの厳密なサブクラスのインスタンスを返すことへの対応:今後はfloat自体のインスタンスを返すことが必須になります。__complex__()メソッドがcomplexの厳密なサブクラスのインスタンスを返すことへの対応:今後はcomplex自体のインスタンスを返すことが必須になります。complex()コンストラクターのreal引数やimag引数に複素数を渡すことは非推奨になりました。 複素数は単独の位置引数としてのみ渡してください。 (Serhiy Storchaka が gh-109218 で貢献しました。)
calendar:定数calendar.Januaryとcalendar.Februaryは非推奨となり、calendar.JANUARYとcalendar.FEBRUARYに置き換えられました。 (Prince Roshan が gh-103636 で貢献しました。)codecs:codecs.open()の代わりにopen()を使ってください。 (gh-133038)codeobject.co_lnotab:代わりにcodeobject.co_lines()メソッドを使ってください。-
utcnow():datetime.datetime.now(tz=datetime.UTC)を使ってください。utcfromtimestamp():datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC)を使ってください。
gettext:複数形を選択するための値は整数でなければなりません。-
cache_from_source()のdebug_overrideパラメータは非推奨です。 代わりにoptimizationパラメータを使ってください。
-
EntryPointsのタプルインターフェース。戻り値として暗黙的に
Noneを返すこと。
logging:warn()メソッドは Python 3.3 から非推奨です。 代わりにwarning()を使ってください。mailbox:StringIO による入力とテキストモードの使用は非推奨です。 代わりに BytesIO とバイナリモードを使ってください。os: Callingos.register_at_fork()in a multi-threaded process.os.path:os.path.commonprefix()は非推奨です。 パスの共通の先頭部分を求めるにはos.path.commonpath()を使ってください。os.path.commonprefix()は、名前と所属するモジュールが誤解を招くため非推奨になります。 この関数はパス操作用のモジュールに含まれていますが、パスの先頭部分を扱う用途では安全に使えません。 そのため、この関数を使うと Python プログラムにパストラバーサルの脆弱性を誤って持ち込みやすくなります。pydoc.ErrorDuringImport:exc_infoパラメータにタプルを渡すことは非推奨です。 例外インスタンスを使ってください。re:正規表現内の番号によるグループ参照とグループ名に、より厳しい規則が適用されるようになりました。 番号による参照には ASCII の数字の並びだけを使えます。 bytes パターンと置換文字列のグループ名には、ASCII の英字、数字、アンダースコアだけを使えます。 (Serhiy Storchaka が gh-91760 で貢献しました。)shutil:rmtree()のonerrorパラメータは Python 3.12 で非推奨になりました。 代わりにonexcパラメータを使ってください。sslのオプションとプロトコル:プロトコル引数を指定せずに
ssl.SSLContextを作成することは非推奨です。ssl.SSLContext:set_npn_protocols()とselected_npn_protocol()は非推奨です。 代わりに ALPN を使ってください。ssl.OP_NO_SSL*オプションssl.OP_NO_TLS*オプションssl.PROTOCOL_SSLv3ssl.PROTOCOL_TLSssl.PROTOCOL_TLSv1ssl.PROTOCOL_TLSv1_1ssl.PROTOCOL_TLSv1_2ssl.TLSVersion.SSLv3ssl.TLSVersion.TLSv1ssl.TLSVersion.TLSv1_1
threadingのメソッド:threading.Condition.notifyAll():notify_all()を使ってください。threading.Event.isSet():is_set()を使ってください。threading.Thread.isDaemon()、threading.Thread.setDaemon():threading.Thread.daemon属性を使ってください。threading.Thread.getName()、threading.Thread.setName():threading.Thread.name属性を使ってください。threading.currentThread():threading.current_thread()を使ってください。threading.activeCount():threading.active_count()を使ってください。
内部クラス
typing._UnionGenericAliasは、typing.Unionの実装には使われなくなりました。 この非公開クラスを使っているユーザーとの互換性を保つため、少なくとも Python 3.17 までは互換性を維持するための実装が提供されます。 (Jelle Zijlstra が gh-105499 で貢献しました。)unittest.IsolatedAsyncioTestCase:テストケースからNone以外の値を返すことは非推奨です。urllib.parseの非推奨の関数:代わりにurlparse()を使ってください。splitattr()splithost()splitnport()splitpasswd()splitport()splitquery()splittag()splittype()splituser()splitvalue()to_bytes()
wsgiref:SimpleHandler.stdout.write()は、渡されたデータの一部だけを書き込んで終了してはいけません。xml.etree.ElementTree:Elementの真偽値を調べることは非推奨です。 将来のリリースでは、常にTrueを返すようになります。 代わりにlen(elem)やelem is not Noneを使って明示的に判定してください。sys._clear_type_cache()は非推奨です。 代わりにsys._clear_internal_caches()を使ってください。
ソフト非推奨¶
ソフト非推奨 の API を削除する予定はありません。
re.match()とre.Pattern.match()は ソフト非推奨 となり、代わりに新しい APIre.prefixmatch()とre.Pattern.prefixmatch()を使うことが推奨されます。 これらは、より明確な別名として追加されました。 Zen of Python の 「暗黙的であるより明示的であるほうがよい」 という指針に従い、match の意味に関する混乱を減らすことを意図しています。 他の言語の正規表現ライブラリの多くでは、Python が一貫して search と呼んできた操作を match という名前の API で提供しています。従来の名前
match()は30年以上コードで使われているため、削除する予定は ありません。 古いバージョンの Python に対応するコードでは、引き続きmatch()を使ってください。 新しいコードではprefixmatch()を使うことを推奨します。 prefixmatch() と match() の違い を参照してください。(Gregory P. Smith が gh-86519 で、Hugo van Kemenade が gh-148100 で貢献しました。)
structモジュールの書式型コード'F'と'D'の使用は ソフト非推奨 となり、代わりに2文字の形式'Zf'と'Zd'を使うことが推奨されます。 (Sergey B Kirpichev が gh-121249 で貢献しました。)
C API deprecations¶
Python 3.15 で削除予定¶
PyImport_ImportModuleNoBlock():代わりにPyImport_ImportModule()を使ってください。PyWeakref_GetObject()とPyWeakref_GET_OBJECT():代わりにPyWeakref_GetRef()を使ってください。 pythoncapi-compat プロジェクト を使うと、Python 3.12 以前でもPyWeakref_GetRef()を利用できます。PyUnicode_AsDecodedObject():代わりにPyCodec_Decode()を使ってください。PyUnicode_AsDecodedUnicode():代わりにPyCodec_Decode()を使ってください。 一部のコーデック (例えば "base64") は、bytesなどstr以外の型を返す場合があることに注意してください。PyUnicode_AsEncodedObject():代わりにPyCodec_Encode()を使ってください。PyUnicode_AsEncodedUnicode(): UsePyCodec_Encode()instead; Note that some codecs (for example, "base64") may return a type other thanbytes, such asstr.Python 3.13 で非推奨となった Python 初期化関数:
Py_GetPath():代わりにPyConfig_Get("module_search_paths")(sys.path) を使ってください。Py_GetPrefix():代わりにPyConfig_Get("base_prefix")(sys.base_prefix) を使ってください。 仮想環境 に対応する必要がある場合は、PyConfig_Get("prefix")(sys.prefix) を使ってください。Py_GetExecPrefix():代わりにPyConfig_Get("base_exec_prefix")(sys.base_exec_prefix) を使ってください。 仮想環境 に対応する必要がある場合は、PyConfig_Get("exec_prefix")(sys.exec_prefix) を使ってください。Py_GetProgramFullPath():代わりにPyConfig_Get("executable")(sys.executable) を使ってください。Py_GetProgramName():代わりにPyConfig_Get("executable")(sys.executable) を使ってください。Py_GetPythonHome():代わりにPyConfig_Get("home")または環境変数PYTHONHOMEを使ってください。
pythoncapi-compat プロジェクト を使うと、Python 3.13 以前でも
PyConfig_Get()を利用できます。Python 3.11 で非推奨となった、Python の初期化を設定する関数:
PySys_SetArgvEx():代わりにPyConfig.argvを設定してください。PySys_SetArgv():代わりにPyConfig.argvを設定してください。Py_SetProgramName():代わりにPyConfig.program_nameを設定してください。Py_SetPythonHome():代わりにPyConfig.homeを設定してください。PySys_ResetWarnOptions():代わりにsys.warnoptionsとwarnings.filtersをクリアしてください。
代わりに
PyConfigとPy_InitializeFromConfig()API を使ってください。グローバルな設定変数:
Py_DebugFlag:代わりにPyConfig.parser_debugまたはPyConfig_Get("parser_debug")を使ってください。Py_VerboseFlag:代わりにPyConfig.verboseまたはPyConfig_Get("verbose")を使ってください。Py_QuietFlag:代わりにPyConfig.quietまたはPyConfig_Get("quiet")を使ってください。Py_InteractiveFlag:代わりにPyConfig.interactiveまたはPyConfig_Get("interactive")を使ってください。Py_InspectFlag:代わりにPyConfig.inspectまたはPyConfig_Get("inspect")を使ってください。Py_OptimizeFlag:代わりにPyConfig.optimization_levelまたはPyConfig_Get("optimization_level")を使ってください。Py_NoSiteFlag:代わりにPyConfig.site_importまたはPyConfig_Get("site_import")を使ってください。Py_BytesWarningFlag:代わりにPyConfig.bytes_warningまたはPyConfig_Get("bytes_warning")を使ってください。Py_FrozenFlag:代わりにPyConfig.pathconfig_warningsまたはPyConfig_Get("pathconfig_warnings")を使ってください。Py_IgnoreEnvironmentFlag:代わりにPyConfig.use_environmentまたはPyConfig_Get("use_environment")を使ってください。Py_DontWriteBytecodeFlag:代わりにPyConfig.write_bytecodeまたはPyConfig_Get("write_bytecode")を使ってください。Py_NoUserSiteDirectory:代わりにPyConfig.user_site_directoryまたはPyConfig_Get("user_site_directory")を使ってください。Py_UnbufferedStdioFlag:代わりにPyConfig.buffered_stdioまたはPyConfig_Get("buffered_stdio")を使ってください。Py_HashRandomizationFlag:代わりにPyConfig.use_hash_seedとPyConfig.hash_seedまたはPyConfig_Get("hash_seed")を使ってください。Py_IsolatedFlag:代わりにPyConfig.isolatedまたはPyConfig_Get("isolated")を使ってください。Py_LegacyWindowsFSEncodingFlag:代わりにPyPreConfig.legacy_windows_fs_encodingまたはPyConfig_Get("legacy_windows_fs_encoding")を使ってください。Py_LegacyWindowsStdioFlag:代わりにPyConfig.legacy_windows_stdioまたはPyConfig_Get("legacy_windows_stdio")を使ってください。Py_FileSystemDefaultEncoding、Py_HasFileSystemDefaultEncoding:代わりにPyConfig.filesystem_encodingまたはPyConfig_Get("filesystem_encoding")を使ってください。Py_FileSystemDefaultEncodeErrors:代わりにPyConfig.filesystem_errorsまたはPyConfig_Get("filesystem_errors")を使ってください。Py_UTF8Mode:代わりにPyPreConfig.utf8_modeまたはPyConfig_Get("utf8_mode")を使ってください。 (Py_PreInitialize()を参照)
これらのオプションを設定するには、
PyConfigとPy_InitializeFromConfig()API を使ってください。 実行時に値を取得するにはPyConfig_Get()を使えます。
Python 3.16 で削除予定¶
同梱されている
libmpdec。
Python 3.18 で削除予定¶
以下の非公開関数は非推奨となり、Python 3.18 で削除予定です:
_PyBytes_Join():PyBytes_Join()を使ってください。_PyDict_GetItemStringWithError():PyDict_GetItemStringRef()を使ってください。_PyDict_Pop():PyDict_Pop()を使ってください。_PyLong_Sign():PyLong_GetSign()を使ってください。_PyLong_FromDigits()と_PyLong_New():PyLongWriter_Create()を使ってください。_PyThreadState_UncheckedGet():PyThreadState_GetUnchecked()を使ってください。_PyUnicode_AsString():PyUnicode_AsUTF8()を使ってください。_PyUnicodeWriter_Init():_PyUnicodeWriter_Init(&writer)をwriter = PyUnicodeWriter_Create(0)に置き換えてください。_PyUnicodeWriter_Finish():_PyUnicodeWriter_Finish(&writer)をPyUnicodeWriter_Finish(writer)に置き換えてください。_PyUnicodeWriter_Dealloc():_PyUnicodeWriter_Dealloc(&writer)をPyUnicodeWriter_Discard(writer)に置き換えてください。_PyUnicodeWriter_WriteChar():_PyUnicodeWriter_WriteChar(&writer, ch)をPyUnicodeWriter_WriteChar(writer, ch)に置き換えてください。_PyUnicodeWriter_WriteStr():_PyUnicodeWriter_WriteStr(&writer, str)をPyUnicodeWriter_WriteStr(writer, str)に置き換えてください。_PyUnicodeWriter_WriteSubstring():_PyUnicodeWriter_WriteSubstring(&writer, str, start, end)をPyUnicodeWriter_WriteSubstring(writer, str, start, end)に置き換えてください。_PyUnicodeWriter_WriteASCIIString(): replace_PyUnicodeWriter_WriteASCIIString(&writer, str, size)withPyUnicodeWriter_WriteASCII(writer, str, size)._PyUnicodeWriter_WriteLatin1String(): replace_PyUnicodeWriter_WriteLatin1String(&writer, str, size)by decoding the string withPyUnicode_DecodeLatin1(), writing the result withPyUnicodeWriter_WriteStr(), and releasing the result withPy_DECREF()._PyUnicodeWriter_Prepare():(代替なし)。_PyUnicodeWriter_PrepareKind():(代替なし)。_Py_HashPointer():Py_HashPointer()を使ってください。_Py_fopen_obj():Py_fopen()を使ってください。
pythoncapi-compat プロジェクト を使うと、Python 3.13 以前でもこれらの新しい公開関数を利用できます。 (Victor Stinner が gh-128863 で貢献しました。)
Python 3.19 で削除予定¶
PEP 456 の、Python を組み込む側で文字列のハッシュ方式を定義するためのサポート。
Python 3.20 で削除予定¶
_PyObject_CallMethodId()、_PyObject_GetAttrId()、_PyUnicode_FromId()は 3.15 から非推奨となり、3.20 で削除されます。 代わりにPyUnicode_InternFromString()の結果をモジュール状態にキャッシュしてから、PyObject_CallMethod()またはPyObject_GetAttr()を呼び出してください。 (Victor Stinner が gh-141049 で貢献しました。)PyComplexObjectのcvalフィールド (gh-128813)。 Python の複素数と C のPy_complex表現の相互変換には、PyComplex_AsCComplex()とPyComplex_FromCComplex()を使ってください。マクロ
Py_MATH_PIlとPy_MATH_El。
将来のバージョンで削除予定¶
以下の API は非推奨となり、削除される予定ですが、現時点では削除時期は決まっていません。
Py_TPFLAGS_HAVE_FINALIZE:Python 3.8 以降では不要です。PyErr_Fetch():代わりにPyErr_GetRaisedException()を使ってください。PyErr_NormalizeException():代わりにPyErr_GetRaisedException()を使ってください。PyErr_Restore():代わりにPyErr_SetRaisedException()を使ってください。PyModule_GetFilename():代わりにPyModule_GetFilenameObject()を使ってください。PyOS_AfterFork():代わりにPyOS_AfterFork_Child()を使ってください。PySlice_GetIndicesEx():代わりにPySlice_Unpack()とPySlice_AdjustIndices()を使ってください。PyUnicode_READY():Python 3.12 以降では不要です。PyErr_Display():代わりにPyErr_DisplayException()を使ってください。_PyErr_ChainExceptions():代わりに_PyErr_ChainExceptions1()を使ってください。PyBytesObject.ob_shashメンバー:代わりにPyObject_Hash()を呼び出してください。スレッドローカルストレージ (TLS) API:
PyThread_create_key(): UsePyThread_tss_alloc()instead.PyThread_delete_key():代わりにPyThread_tss_free()を使ってください。PyThread_set_key_value():代わりにPyThread_tss_set()を使ってください。PyThread_get_key_value():代わりにPyThread_tss_get()を使ってください。PyThread_delete_key_value(): UsePyThread_tss_delete()instead.PyThread_ReInitTLS():Python 3.7 以降では不要です。