非推奨
******


Python 3.16 で削除予定
======================

* インポートシステム：

  * モジュールの "__spec__.loader" を設定せずに "__loader__" を設定す
    ることは非推奨です。 Python 3.16 では、インポートシステムや標準ラ
    イブラリは "__loader__" を設定しなくなり、その値も参照しなくなりま
    す。

* "array":

  * 書式コード "'u'" ("wchar_t") は、Python 3.3 からドキュメントで非推
    奨とされ、Python 3.13 からは実行時にも非推奨とされています。
    Unicode 文字には、代わりに書式コード "'w'" ("Py_UCS4") を使ってく
    ださい。

* "asyncio":

  * "asyncio.iscoroutinefunction()" は非推奨となり、Python 3.16 で削除
    されます。 代わりに "inspect.iscoroutinefunction()" を使ってくださ
    い。 (Jiahao Li と Kumar Aditya が gh-122875 で貢献しました。)

  * "asyncio" のポリシーシステムは非推奨となり、Python 3.16 で削除され
    ます。 具体的には、以下のクラスと関数が非推奨です：

    * "asyncio.AbstractEventLoopPolicy"

    * "asyncio.DefaultEventLoopPolicy"

    * "asyncio.WindowsSelectorEventLoopPolicy"

    * "asyncio.WindowsProactorEventLoopPolicy"

    * "asyncio.get_event_loop_policy()"

    * "asyncio.set_event_loop_policy()"

    使いたいイベントループの実装を指定するには、"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 で貢献しました。)

* "builtins":

  * 真偽値に対するビット単位の反転 "~True" や "~False" は、直感に反す
    る意外な結果 ("-2" と "-1") になるため、Python 3.12 から非推奨です
    。 真偽値の論理否定には、代わりに "not x" を使ってください。 元の
    整数値のビット単位の反転が必要になるまれな場合には、明示的に "int"
    に変換してください ("~int(x)")。

* "functools":

  * "functools.reduce()" の Python 実装を、"function" や "sequence" を
    キーワード引数として指定して呼び出すことは、Python 3.14 から非推奨
    です。

* "logging":

  * "strm" 引数を持つカスタムログハンドラーへの対応は非推奨となり、
    Python 3.16 で削除予定です。 代わりに "stream" 引数を持つハンドラ
    ーを定義してください。 (Mariusz Felisiak が gh-115032 で貢献しまし
    た。)

* "mimetypes":

  * "mimetypes.MimeTypes.add_type()" で有効な拡張子は、'.' で始まるも
    のか空のものです。 ドットのない拡張子は非推奨となり、Python 3.16
    では "ValueError" が発生します。 (Hugo van Kemenade が gh-75223 で
    貢献しました。)

* "shutil":

  * "ExecError" 例外は Python 3.14 から非推奨です。 Python 3.4 以降は
    "shutil" のどの関数でも使われておらず、現在は "RuntimeError" の別
    名になっています。

* "symtable":

  * "Class.get_methods" メソッドは Python 3.14 から非推奨です。

* "sys":

  * "_enablelegacywindowsfsencoding()" 関数は Python 3.13 から非推奨で
    す。 代わりに環境変数 "PYTHONLEGACYWINDOWSFSENCODING" を使ってくだ
    さい。

* "sysconfig":

  * "sysconfig.expand_makefile_vars()" 関数は Python 3.14 から非推奨で
    す。 代わりに "sysconfig.get_paths()" の "vars" 引数を使ってくださ
    い。

* "tarfile":

  * ドキュメント化されておらず、使われてもいない "TarFile.tarfile" 属
    性は Python 3.13 から非推奨です。


Python 3.17 で削除予定
======================

* "datetime":

  * 年を含まず "%e" (月内の日) を含む書式文字列で "strptime()" を呼び
    出すこと。 これは Python 3.15 から非推奨です。 (Stan Ulbrych が
    gh-70647 で貢献しました。)

* "collections.abc":

  * "collections.abc.ByteString" は Python 3.17 で削除予定です。

    実行時に "obj" が バッファプロトコル を実装しているか調べるには、
    "isinstance(obj, collections.abc.Buffer)" を使ってください。 型ア
    ノテーションには "Buffer" を使うか、コードが対応する型を明示したユ
    ニオン (例えば "bytes | bytearray | memoryview") を使ってください
    。

    "ByteString" は当初、"bytes" と "bytearray" の両方の上位型となる抽
    象クラスとして意図されていました。 しかし、この ABC はメソッドを一
    つも持たないため、あるオブジェクトが "ByteString" のインスタンスだ
    と分かっても、そのオブジェクトに関する有用な情報は何も得られません
    でした。 "memoryview" など、他の一般的なバッファ型も、実行時にも静
    的型チェッカーによっても "ByteString" のサブタイプとして認識される
    ことはありませんでした。

    詳しくは **PEP 688** を参照してください。 (Shantanu Jain が
    gh-91896 で貢献しました。)

* "encodings":

  * "encodings.normalize_encoding()" に非 ASCII の "encoding" 名を渡す
    ことは非推奨となり、Python 3.17 で削除予定です。 (Stan Ulbrych が
    gh-136702 で貢献しました。)

* "profile":

  * "profile" モジュールは非推奨となり、Python 3.17 で削除されます。
    代わりに、互換性のある API を提供する "profiling.tracing" を使って
    ください。 詳しくは **PEP 799** を参照してください。 (Pablo
    Galindo と László Kiss Kollár が gh-138122 で貢献しました。)

* "webbrowser":

  * "webbrowser.MacOSXOSAScript" は非推奨となりました。 代わりに
    "webbrowser.MacOS" を使ってください。 (gh-137586)

* "typing":

  * 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" のサブタイプとして認識される
    ことはありませんでした。

    詳しくは **PEP 688** を参照してください。 (Shantanu Jain が
    gh-91896 で貢献しました。)

* "tkinter":

  * 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 で削除予定
======================

* ファイルディスクリプタが必要なところでは、真偽値を受け付けなくなりま
  す。 (Serhiy Storchaka が gh-82626 で貢献しました。)

* "decimal":

  * "Decimal" の標準外でドキュメント化されていない書式指定子 "'N'" は
    、Python 3.13 から非推奨です。 これは "decimal" モジュールの C 実
    装だけでサポートされています。 (Serhiy Storchaka が gh-89902 で貢
    献しました。)

* **PEP 829** で定義された非推奨事項：

  * "*name*.pth" ファイルの "import" 行は、警告なしで無視されます。

  (Barry Warsaw が gh-148641 で貢献しました。)


Python 3.19 で削除予定
======================

* "ctypes":

  * Windows 以外のプラットフォームで、"_layout_" を設定せずに "_pack_"
    を設定することで、暗黙的に MSVC 互換の構造体レイアウトに切り替える
    こと。

* "hashlib":

  * "hashlib" のさまざまな実装では、"new()" や、"md5()"、"sha256()" な
    どのハッシュ名を直接使ったコンストラクターに、省略可能な初期データ
    を "data=" または "string=" というキーワード引数で渡すこともできま
    した。

    キーワード引数名 "string" のサポートは非推奨となり、Python 3.19 で
    削除予定です。

    Python 3.13 より前は、ハッシュ関数のバックエンド実装によっては、キ
    ーワードパラメータ "string" が正しくサポートされていませんでした。
    後方互換性を最大限に保つには、初期データは位置引数として渡してくだ
    さい。

* "http.cookies":

  * "http.cookies.Morsel.js_output()" は非推奨となり、Python 3.19 で削
    除されます。

  * "http.cookies.BaseCookie.js_output()" は非推奨となり、Python 3.19
    で削除されます。

* "imaplib":

  * "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" を使ってください。

  * "argparse"

  * "csv"

  * "ctypes"

  * "ctypes.macholib"

  * "decimal" (代わりに "decimal.SPEC_VERSION" を使ってください)

  * "http.server"

  * "imaplib"

  * "ipaddress"

  * "json"

  * "logging" ("__date__" も非推奨)

  * "optparse"

  * "pickle"

  * "platform"

  * "re"

  * "socketserver"

  * "tabnanny"

  * "tarfile"

  * "tkinter.font"

  * "tkinter.ttk"

  * "wsgiref.simple_server"

  * "xml.etree.ElementTree"

  * "xml.sax.expatreader"

  * "xml.sax.handler"

  * "zlib"

  (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 ではエラーになります。

* "typing":

  * 実行時チェック可能なプロトコルクラスを継承していても、
    "runtime_checkable()" で明示的にデコレートされていないプロトコルク
    ラスに対し、"isinstance()" や "issubclass()" でチェックすることは
    非推奨です。 Python 3.20 では "TypeError" が発生します。

    (Bartosz Sławecki が gh-132604 で貢献しました。)


将来のバージョンで削除予定
==========================

以下の API は将来削除されますが、現時点では削除時期は決まっていません
。

* "argparse":

  * 引数グループの入れ子と、相互排他的なグループの入れ子は非推奨です。

  * "add_argument_group()" に、ドキュメント化されていないキーワード引
    数 "prefix_chars" を渡すことは非推奨になりました。

  * "argparse.FileType" 型コンバーターは非推奨です。

* "builtins":

  * ジェネレーター："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 of "int".

  * "__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()" メソッドを
  使ってください。

* "datetime":

  * "utcnow()"："datetime.datetime.now(tz=datetime.UTC)" を使ってくだ
    さい。

  * "utcfromtimestamp()"："datetime.datetime.fromtimestamp(timestamp,
    tz=datetime.UTC)" を使ってください。

* "gettext"：複数形を選択するための値は整数でなければなりません。

* "importlib":

  * "cache_from_source()" の "debug_override" パラメータは非推奨です。
    代わりに "optimization" パラメータを使ってください。

* "importlib.metadata":

  * "EntryPoints" のタプルインターフェース。

  * 戻り値として暗黙的に "None" を返すこと。

* "logging"："warn()" メソッドは Python 3.3 から非推奨です。 代わりに
  "warning()" を使ってください。

* "mailbox"：StringIO による入力とテキストモードの使用は非推奨です。
  代わりに BytesIO とバイナリモードを使ってください。

* "os": Calling "os.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_SSLv3"

  * "ssl.PROTOCOL_TLS"

  * "ssl.PROTOCOL_TLSv1"

  * "ssl.PROTOCOL_TLSv1_1"

  * "ssl.PROTOCOL_TLSv1_2"

  * "ssl.TLSVersion.SSLv3"

  * "ssl.TLSVersion.TLSv1"

  * "ssl.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.Text" (gh-92332).

* 内部クラス "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()" は *ソフト非推奨* となり、代わ
  りに新しい API "re.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()": Use "PyCodec_Encode()" instead; Note
  that some codecs (for example, "base64") may return a type other
  than "bytes", such as "str".

* 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)" with
    "PyUnicodeWriter_WriteASCII(writer, str, size)".

  * "_PyUnicodeWriter_WriteLatin1String()": replace
    "_PyUnicodeWriter_WriteLatin1String(&writer, str, size)" by
    decoding the string with "PyUnicode_DecodeLatin1()", writing the
    result with "PyUnicodeWriter_WriteStr()", and releasing the result
    with "Py_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()": Use "PyThread_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()": Use "PyThread_tss_delete()"
    instead.

  * "PyThread_ReInitTLS()"：Python 3.7 以降では不要です。
