Skip to content

Conversation

@hukurou0
Copy link
Contributor

@hukurou0 hukurou0 commented Apr 18, 2024

SDKに影響のないversion範囲の指定をする際の根拠

geojson==2.5.0 -> geojson>=2.0.0,<4.0

Geojsonは地理空間データを扱うためのフォーマットであるGeoJSONをPythonで操作するためのライブラリである。
使っているメソッドがそのGeoJSONをパース、シリアライズする処理だけであった。
geojsonの2系と3系はRFC 7946にしたがって作られているため、2系と3系は使えると判断。4系にアップグレードされる際どうなるか分からないので、そこは範囲外
The GeoJSON Specification (RFC 7946)

xmltodict==0.12.0 -> 変更なし

XMLをPythonの辞書に変換することで、XMLデータの読み書きや操作を簡単にするライブラリ。最新versionは0.13.0であった。このアップデートにより、リストの要素をどのようにXMLタグに変換するかなどの仕様変更があり、後方互換性がない。時間をかけて現在のSDKにおいて互換性があるかの確認もできるが、versionの幅はあまり広がらないためそのままの方が良いと判断。SDKの使用パターンが分かれば範囲をもうける調査可能。

opencv-python==4.7.0.72 -> opencv-python>=4.0.0,<5.0.0

使っている関数はリリース初期からある基本的な関数であり、基本的にはどのバージョンでも動くと思われる。
以下のリリースノートで4.x.xでは、使っている関数に破壊的な変更がなさそうであることを確認し、versionの範囲を4.x.xに拡張。
https://github.com/opencv/opencv/wiki/ChangeLog

numpy>=1.21.2 -> numpy>=1.26.0

opencv-pythonの変更により、その依存関係から変更

requests==2.25.1 -> requests>=2.4.2,<3.0

jsonパラメータが追加された2.4.2以降を指定

@hukurou0 hukurou0 changed the title requirementsのversionni requirementsのversionに幅を持たせる Apr 18, 2024
@hukurou0
Copy link
Contributor Author

hukurou0 commented Apr 18, 2024

ライブラリ競合チェック

方法

下に貼る写真のように、依存関係のライブラリとそのバージョンの確認を行った。

requirements内の全てのversionについて調査するのは現実的でないため、requirementsに記載している範囲で最も古いモジュールについての依存ライブラリを見て競合が発生しうるライブラリをリストアップしました。その上で、競合の可能性がある、requestsとaiohttp、numpyとopencv-pythonについて深ぼって調べました。

numpyとopencv-python

opencv-pythonの指定範囲で最も新しいのは4.9.0.80であり、ここではnumpy>=1.26.0を求めているため、そのようにnumpyの範囲指定を変更

requestsとaiohttp

お互い通信のライブラリであり、内部依存ライブラリで競合が発生する可能性があり注意が必要。
aiohttpとrequestsで共通で内部依存ライブラリがidnaであり、aiohttp>=3.8.5で>=2.0を求めている。requestsの2.x.0のxを一つづつあげながらidnaを内部依存で使用し始めたところを探し、最初の使用箇所がが>=2.5,<2.6であったことからそれ以降でも競合は起こらないと判断

環境

  1. Python 3.9.6にてvenvモジュールを用いて仮想環境を設定
  2. requirementsに記載している範囲で最も古いモジュールをpip install

依存関係ライブラリ

requests

requests

aiohttp

aiohttp

geojson

geojson

xmltodict

xmltodict

numpy

numpy

pillow

pillow

opencv

opencv

@hukurou0
Copy link
Contributor Author

xmltodictについてはシリアライズする際の仕様がversionで異なっていたので、固定しておいた方が良いと考えて変更していません。

Copy link
Contributor

@Akkiy3314 Akkiy3314 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@tacorice tacorice merged commit 718de5b into main Apr 23, 2024
@tacorice tacorice deleted the update-requirements branch April 23, 2024 08:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants