新しいPyPIでMarkdownのドキュメントを使う

Aki Ariga
4 min readApr 17, 2018

--

長い間、Pythonでパッケージを作った場合、構造化されたドキュメントを使う場合は、reStructuredText (reST)でドキュメントを書く必要がありました。

ところが、aodag さんに教えてもらったのですが2018年2月にアクセプトされたPEP 566のおかげで、PyPIのドキュメントがtxtかreSTでなければいけないという制約が外れました。そこで、昨日新しくなったばかりのPyPIでMarkdownがレンダーできる方法を試してみました。

(必要に応じて)ライブラリをupgradeする

Markdownが扱えるようになったのは、setuptoolsのv38.6.0からです。古いバージョンだとMarkdownがレンダーされないので、合わせてpipとwheelをupgradeしておきました。

$ python -m pip install --upgrade pip
$ pip install --upgrade wheel
$ pip --version
pip 10.0.0 from c:\users\chezo\documents\source\tabula-py\venv\lib\site-packages\pip (python 3.6)
$ pip list
Package Version Location
----------------- ----------- --------------------------------------
(...snip...)
setuptools 38.1.0
(...snip...)
wheel 0.31.0

setup.pyを編集する

long_description_content_typeという項目をsetup.pyに追加することで、reST以外の形式を使えるようになります。Markdownであれば例えば以下のようになると思います。

long_description=open('README.md').read(),
long_description_content_type=”text/markdown”,

元々README.mdを読むようにしていたので、今回は long_description_content_type の行を追加するだけで済みました。

実際のPRはこちらです。

wheelを作ってtwineでアップロードする

後はいつもどおりwheelを作ってtwineでPyPIにアップロードしました。なお、

$ python setup.py bdist_wheel
$ twine upload dist/*
test.pypi.orgのMarkdownのドキュメントの様子

今回はこれだけのためにpatch versionを上げるのもなぁということで、test.pypi.orgにあげています。

参考文献

--

--

Aki Ariga

ML Engineer at Arm Treasure Data. Previously Cloudera. Love machine learning, data analysis, Ruby and Python.