Seite 1 von 1

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

Verfasst: Donnerstag 4. August 2011, 15:30
von jens
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:

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

Verfasst: Mittwoch 31. August 2011, 16:32
von jens
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,
    ...
)

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

Verfasst: Mittwoch 31. August 2011, 17:01
von 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.

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

Verfasst: Donnerstag 1. September 2011, 07:28
von jens
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)...

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

Verfasst: Freitag 2. September 2011, 00:23
von 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.

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

Verfasst: Freitag 2. September 2011, 07:43
von jens
Ich hab es extra so gestaltet, das ein installieren des Paketes auch ohne python-creole geht. Ist halt nur für PyPi gedacht.