Skip to content

numpy を 2.x 系へアップグレードする #273

@rikunosuke

Description

@rikunosuke

概要

numpy の依存バージョンを 1.26 系から 2.x 系へアップグレードしたい。
事前調査の結果をまとめる。

現在の状態

  • pyproject.toml / requirements.txt: numpy>=1.26.0,<2.0.0
  • requires-python: >=3.8
  • CI (.github/workflows/test.yml): Python 3.10.11
  • Release (.github/workflows/release.yml): Python 3.8

numpy 2.0 の主な互換性要件

  1. Python 3.9 以上が必須 — numpy 2.0 で Python 3.8 サポート終了
  2. 依存ライブラリの numpy 2.x 対応バージョン:
    • opencv-python4.10.0+ で numpy 2 対応(現状下限は >=4.0.0)
    • Pillow>=10.0.0,<11.0.0 → 対応済み
    • pandas(robotics extra) → 2.2.2+ で対応(現状 >=2.0.0)
    • pyarrow(robotics extra) → 16.0+ で対応(現状 >=14.0.0)
    • geojson / requests / xmltodict / aiohttp → numpy 非依存

コードへの影響

numpy を使用しているのは下記 4 ファイルのみ:

  • fastlabel/__init__.py
  • fastlabel/converters.py
  • fastlabel/utils/__init__.py
  • fastlabel/utils/mask_image_util.py

使用 API: np.array, np.ndarray, np.dot, np.roll, np.abs, np.ravel, np.vstack, np.flipud, np.all, np.append, np.array_equal, np.integer, np.floating, np.uint8, np.int32

numpy 2.0 で削除された API(np.float_, np.int_, np.NaN, np.Inf, np.product, np.cumproduct, np.alltrue, np.sometrue, np.in1d, np.bool8, np.string_ 等)は 一切使用されていない。コード修正は基本不要の見込み。

アップグレード対象の変更点(案)

項目 現状 提案
numpy バージョン >=1.26.0,<2.0.0 >=2.0.0,<3.0.0
requires-python >=3.8 >=3.9 以上
opencv-python 下限 >=4.0.0 >=4.10.0
.github/workflows/release.yml の Python 3.8 3.9+(推奨 3.10)
pandas(extras) >=2.0.0 >=2.2.2
pyarrow(extras) >=14.0.0 >=16.0.0

確認事項

  • Python 3.8 サポートを切ることに問題ないか(numpy 2 の前提)
  • requires-python>=3.9 にするか、>=3.10 にするか
  • robotics extras(pandas / pyarrow)も同時に更新するか

TODO

  • pyproject.toml / requirements.txtnumpy バージョン制約更新
  • requires-python の更新
  • opencv-python 下限引き上げ
  • .github/workflows/release.yml の Python バージョン更新
  • (任意)robotics extras の更新
  • テスト実行による動作確認

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions