Comment faire fonctionner la description Markdown de PyPi ?
J'ai téléchargé un package sur PyPi en utilisant :
python setup.py register -r pypi
python setup.py sdist upload -r pypi
J'essaie de modifier la description, j'ai écrit ( veuillez ne pas modifier la mise en forme du morceau de code suivant, je l'ai fait exprès pour illustrer mon problème ):
**my plugin**
This plugin enables you to... For example:
```python
@attr(section='MySection', id=1)
def test_function(self):
"""
Bla bla bla
"""
pass
```
Cependant, le texte apparaît tel quel, sans la mise en forme Markdown. Qu'est-ce que je fais mal?
Solution du problème
Depuis le 16 mars 2018, PyPI.org alias Warehouse prend (enfin) en charge Markdown dans les descriptions longues. Warehouse a remplacé l'ancienne implémentation PyPI héritée en avril 2018.
Vous devez:
Assurez-vous qu'il
setuptools
est mis à niveau vers la version 38.6.0 ou une version plus récenteAssurez-vous qu'il
twine
est mis à niveau vers la version 1.11.0 ou une version plus récenteAssurez-vous qu'il
wheel
est mis à niveau vers la version 0.31.0 ou une version plus récenteAjoutez un nouveau champ nommé
long_description_content_type
à votresetup()
appel, et réglez-le sur'text/markdown'
:setup(
long_description="""# Markdown supported!\n\n* Cheer\n* Celebrate\n""",
long_description_content_type='text/markdown',
#....
)Voir PEP 566 - Métadonnées pour les progiciels Python 2.1.
Utilisez
twine
pour télécharger vos distributions sur PyPI :$ python setup.py sdist bdist_wheel # adjust as needed
$ twine upload dist/*
L'ancienne infrastructure PyPI héritée ne rendrait pas Markdown, seule la nouvelle infrastructure Warehouse le fait. L'infrastructure héritée a maintenant disparu (au 30/04/2018).
Actuellement, PyPI utilise cmarkgfm
comme moteur de rendu Markdown, via la readme_renderer
bibliothèque (utilisant readme_renderer.markdown.render(long_description)
pour produire une sortie HTML). Cela signifie que vos documents de démarquage s'afficheront exactement de la même manière que sur GitHub ; c'est essentiellement le même moteur de rendu.
Vous pouvez valider votre package long_description
avec la twine check
commande ( twine
1.12.0 ou plus récent).
L'ancienne réponse <2018-03-16 suit ci-dessous.
Note: this is the old, now outdated answer, as of 2018-03-16 Markdown is supported provided you use the right tools, see above.
PyPI does not support Markdown, so your README will not be rendered into HTML.
Si vous voulez un README rendu, restez avec reStructuredText; l' introduction de Sphinx à reStructuredText est un bon point de départ.
Vous souhaitez probablement installer le docutils
package afin de pouvoir tester votre document localement; vous voulez exécuter le rst2html.py
script inclus sur votre README pour voir quelles erreurs sont produites, le cas échéant. Votre échantillon spécifique contient trop d'erreurs :
$ bin/rst2html.py test.rst > /tmp/test.html
test.rst:7: (ERROR/3) Unexpected indentation.
test.rst:3: (WARNING/2) Inline literal start-string without end-string.
test.rst:3: (WARNING/2) Inline interpreted text or phrase reference start-string without end-string.
test.rst:11: (WARNING/2) Block quote ends without a blank line; unexpected unindent.
test.rst:11: (WARNING/2) Inline literal start-string without end-string.
test.rst:11: (WARNING/2) Inline interpreted text or phrase reference start-string without end-string.
Votre bloc de code utilise les extensions Markdown de Github, qui sont totalement fausses pour reStructuredText. Vous pouvez utiliser un bloc de code reST (probablement, si la version PyPI de docutils est suffisamment récente):
.. code-block:: python
@attr(section='MySection', type='functional+', module='MyModule', id=1)
def test_function(self):
"""
This is the original docstring
"""
pass
Pour tester cela localement, vous devrez également installer Pygments.
Il existe une demande de fonctionnalité avec une demande d'extraction pour ajouter la prise en charge de Markdown, si vous êtes intéressé.
Commentaires
Enregistrer un commentaire