概要
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 の主な互換性要件
- Python 3.9 以上が必須 — numpy 2.0 で Python 3.8 サポート終了
- 依存ライブラリの numpy 2.x 対応バージョン:
opencv-python → 4.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 |
確認事項
TODO
概要
numpyの依存バージョンを 1.26 系から 2.x 系へアップグレードしたい。事前調査の結果をまとめる。
現在の状態
pyproject.toml/requirements.txt:numpy>=1.26.0,<2.0.0requires-python:>=3.8.github/workflows/test.yml): Python3.10.11.github/workflows/release.yml): Python3.8numpy 2.0 の主な互換性要件
opencv-python→ 4.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__.pyfastlabel/converters.pyfastlabel/utils/__init__.pyfastlabel/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.int32numpy 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.0requires-python>=3.8>=3.9以上opencv-python下限>=4.0.0>=4.10.0.github/workflows/release.ymlの Python3.83.9+(推奨3.10)pandas(extras)>=2.0.0>=2.2.2pyarrow(extras)>=14.0.0>=16.0.0確認事項
requires-pythonを>=3.9にするか、>=3.10にするかTODO
pyproject.toml/requirements.txtのnumpyバージョン制約更新requires-pythonの更新opencv-python下限引き上げ.github/workflows/release.ymlの Python バージョン更新