2017-01-10 Tue

[別の年の同じ日: 2002 2004 2007 2008 2009 2011 2014

pypi から hash を含まない URL でパッケージをダウンロードする はてぶ

久しぶりに Python 関連のパッケージを作ろうとしたところ、
パッケージのダウンロード URL が以前とは変わっていて、
ハッシュを含む形式なっていた。

これだとバージョンを上げる度にダウンロード URL を確認し変更する必要があって面倒臭い。
うまくやる方法はないものかとぐぐったら以下のページが見つかった。

pypa / pypi / 課題 / #438 - Backwards-compatible un-hashed package paths — Bitbucket
https://bitbucket.org/pypa/pypi/issues/438/backwards-compatible-un-hashed-package

以前は

/packages/{python version}/{name[0]}/{name}/{filename}


という形式で、これが以下のように変わっている。

/packages/{hash[:2]}/{hash[2:4]}/{hash[4:]}/{filename}


この hash 部分は以下のようになっているらしい。

blake2b(file_content, digest_size=32).hexdigest().lower()


当然のように、パッケージをメンテナンスしている人達からは annoying だと不評なようで、
従来の形式でパッケージを取得できる pypi.io が用意され、

https://pypi.io/packages/{python version}/{name[0]}/{name}/{filename}


という URL でダウンロードできるようになっている。