Add structured version info for modules wrapping external libraries
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 77.2k
- フォーク
- 35.9k
- PR マージ指標
- PR 指標を取得中
説明
Feature or enhancement
Several modules wrap an external library, but expose its version inconsistently: only a string, only a plain tuple, only the runtime or only the build-time version, or under a private name. gh-117404 established a pattern for zlib, bz2, lzma and compression.zstd: a string and a named tuple for the version the module was built against (XXX_VERSION, XXX_VERSION_INFO), and the same pair for the library actually loaded (xxx_version, xxx_version_info).
Other modules (existing names, with their types):
sqlite3— runtime:sqlite_version(str),sqlite_version_info(plain tuple, computed in Python from the string). No build-time version.pyexpat— runtime:EXPAT_VERSION(str, e.g.'expat_2.8.4'),version_info(plain tuple). No build-time version.decimal— runtime:__libmpdec_version__(str). No tuple, no build-time version. Matters more now that only the system libmpdec is used.readline— build-time:_READLINE_VERSION(int,0x0803). Runtime:_READLINE_RUNTIME_VERSION(int),_READLINE_LIBRARY_VERSION(str). All private;backend(str) tells readline from libedit.dbm.gnu— build-time: private_GDBM_VERSION(plain tuple). No runtime version (gdbm_versionis not exposed).dbm.ndbm— onlylibrary(str, the implementation name). No version.ctypes— nothing about libffi.uuid— nothing about libuuid.ssl— runtime:OPENSSL_VERSION(str),OPENSSL_VERSION_INFO(plain 5-tuple),OPENSSL_VERSION_NUMBER(int). Build-time: only private_OPENSSL_API_VERSION(plain 5-tuple). The existing names conflict with the scheme above (uppercase names for the runtime version).curses— runtime:ncurses_version(named tuple). No string, no build-time version. It is fine to keep only the named tuple.tkinter— build-time:_tkinter.TCL_VERSION,TK_VERSION(str, onlymajor.minor, e.g.'8.6'), andtkinter.TclVersion,TkVersion(float,8.6, derived from them). The runtime version cannot be obtained at import time without creating a Tcl interpreter; it is available asTcl().eval('info patchlevel').
Not all items need to be changed, and not all libraries provide both the compile-time and the runtime version. Sub-issues are opened for those that do.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず gh-117404 を読み、zlib、bz2、lzma、compression.zstd のバージョン API パターンと、この issue のモジュール一覧を比較します。関連する sub-issue を確認し、一貫したビルド時および実行時のバージョン情報を公開できるモジュールを判断します。選択した各モジュールに、既存の名前を壊さない合意済みの公開インターフェースがあれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- backend
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 38/100