README.creole on-the-fly in ReSt convertieren für PyPi

Code-Stücke können hier veröffentlicht werden.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

In python-creole gibt es nun einen html -> ReStructuredText converter...

Es wird zwar nur ein kleinerer Teil von ReSt unterstützt, aber das ganze ist für folgendes schon brauchbar:

Die PyPi info seite eines Pakets nutzt ja die long_description aus der setup.py
Dummerweise muß die in ReStructuredText geschrieben werden und ReSt ist IMHO nicht gerade benutzerfreundlich ;)

Also: README.creole in creole schreiben (wird dann auch auf github schön als html convertiert) und dann in der setup.py on-the-fly in ReSt convertieren für PyPi...

Kann dann z.B. so aussehen:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf-8

"""
    distutils setup example
    ~~~~~~~~~~~~~~~~~~~~~~~
"""

import os
import sys

from setuptools import setup, find_packages

from creole import creole2html, html2rest


PACKAGE_ROOT = os.path.dirname(os.path.abspath(__file__))


def get_long_description():
    try:
        f = file(os.path.join(PACKAGE_ROOT, "README.creole"), "r")
        desc_creole = f.read()
        f.close()

        desc_creole = unicode(desc_creole, 'utf-8').strip()

        desc_html = creole2html(desc_creole)
        long_description = html2rest(desc_html)
    except Exception, err:
        if len(sys.argv) > 1 and sys.argv[1] in ("--long-description", "sdist"):
            raise
        long_description = "[Error: %s]" % err

    return long_description


setup(
    ...
    long_description=get_long_description(),
    ...
)
siehe auch: https://code.google.com/p/python-creole/wiki/UseInSetup

Ich nutzte das in python-creole, siehe:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hab in v0.8.1 die Sache umgebaut, sodas man in seiner setup.py nicht mehr so viel code haben muß... Kann dann so aussehen:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf-8

"""
    distutils setup example
    ~~~~~~~~~~~~~~~~~~~~~~~
"""

import os
import sys
from setuptools import setup, find_packages


PACKAGE_ROOT = os.path.dirname(os.path.abspath(__file__))


# convert creole to ReSt on-the-fly, see also:
# https://code.google.com/p/python-creole/wiki/UseInSetup
try:
    from creole.setup_utils import get_long_description
except ImportError:
    if "register" in sys.argv or "sdist" in sys.argv or "--long-description" in sys.argv:
        etype, evalue, etb = sys.exc_info()
        evalue = etype("%s - Please install python-creole >= v0.8 -  e.g.: pip install python-creole" % evalue)
        raise etype, evalue, etb
    long_description = None
else:
    long_description = get_long_description(PACKAGE_ROOT)


setup(
    ...
    long_description = long_description,
    ...
)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
lunar

Nur als Anmerkung: GitHub unterstützt ReST auch. Ich bin mir zwar sicher, dass Du das weißt, aber Deinen ersten Beitrag kann auch auch so verstehen, als würde GitHub nur Creole unterstützen.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Da hast du recht. In erster Linie geht es mir darum, ReSt zu vermeiden und was einfaches zu nutzten ;) ReSt ist IMHO recht kompliziert und fehleranfällig (weil ich Fehler mache)...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
deets

Also eine Abhaengigkeit die schon *vor* der Installation besteht - das gab's bei TurboGears auch mal, und war ein grosser Fehler. Hat immer nur zu Aerger gefuehrt. Und ob fuer sowas simples wie die long_description jetzt nun wirklich ReST komplizierter ist, wage ich ja zu bezweifeln. Aber das ist natuerlich Ansichtssache.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich hab es extra so gestaltet, das ein installieren des Paketes auch ohne python-creole geht. Ist halt nur für PyPi gedacht.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten