Python 3.10 の開発(お掃除)に参加しよう

訂正

昔から deprecate されているのにずっと生き残ってるヤツたちはクセモノのぞろいで、全然初心者向けではありませんでした。

代わりに、Docディレクトリを deprecated-removed::grep して、 3.10 で削除する予定になっているものを削除する方がずっと楽なので、そちらに挑戦してみてください。削除する手順は下の記事のままで大丈夫です。


Python 3.9 がベータに入り、masterブランチはPython 3.10の開発に入りました。

はっきりとした区分はないものの、Python 2.7との互換性のために長くdeprecated状態を維持していたメソッドの削除に踏み切るバージョンになりそうです。そこでこんなIssueを作ってみました。

Issue 41165: [Python 3.10] Remove APIs deprecated since Python 3.3 - Python tracker

新しいAPIを提案するよりもずっとハードルが低いはずなので、他の削除プルリクエストを参考にしてお掃除に参加してみませんか?

DeprecatedなAPIを削除する手順は次の通りです。

  1. (初めてプルリクエストを作る場合) CLA にサインする。
  2. ドキュメントでdeprecatedになったタイミングと、DeprecationWarningを出すようになったタイミングが十分(後述)に古いか確認する。
  3. 該当のAPIを削除する。該当のAPIからしか使っていなかったprivateメソッド等も同時に削除すること。
  4. テストも削除する
  5. NEWSエントリとwhat's newエントリを書く
  6. プルリクエストを送る

Pythonの最低deprecation期間は2バージョンですが、消すのを先延ばしにするデメリットが大きくない場合や古くから存在するAPIについては、それよりも長めのdeprecation期間があったほうがいいです。

既に Issue のコメントではPython 3.3時点でdeprecateされたものをリストアップしていますが、もう少し新しいdeprecationを探す場合も3.6までにdeprecationされてるものを選んだ方が「まだ消さないで」と言われるリスクは低いと思います。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。