Einträge über python

Wo ist rst2man?

Der Fortran-Parser von ctags versteht bisher das protected-Attribut nicht, mit dem der schreibende Zugriff auf eine öffentliche Modulvariable von außerhalb des Moduls unterbunden werden kann. ctags liegt auf github, also war es kein Problem, den Parser soweit anzupassen, dass er beim Auftreten des Attributs zumindest die Variable weiterhin verarbeitet.

Problematisch wurde es allerdings, als ich den Parser lokal gebaut habe. Denn die manpage war nur sehr übersichtlich. In der Doku findet man dazu den Satz, dass für die Erstellung der manpage das Python-Tool rst2man benötigt wird. Aber woher bekommt man es? Es gehört wohl zu den docutils, aber pip install docutils hat es nicht installiert. Auch port install py-docutils hab nicht weitergeholfen. Im Netz habe ich dann den Hinweis für Mercurial-Entwickler gefunden, dass man sich das Sandbox-Archiv des docutils-Projekts laden soll. Aber auch dort ist es nicht enthalten. Schlussendlich habe ich das Tool direkt aus dem docutils-Repository geladen. Dort liegt es unterhalb des Ordners, der via pip installiert wird. Eventuell kann man das PyPi-Package so anpassen, dass rst2man mitinstalliert wird, aber ob das gewollt ist und wie das geht, weiß ich gerade nicht. Daher habe ich den pragmatisch und schnellen Weg gewählt.

Python iterator in nested types

Will man in Python einen Iterator für eine Container-Klasse erstellen, deren Elemente wiederum Instanzen der Container-Klasse sind, so kann dieser Iterator einfach so erstellt werden:

class Container:

    def __init__(self):
        self.list = []

    def __iter__(self):
        for element in self.list:
            if isinstance(element, Container):
                for subelement in element:
                    yield subelement
            else:
                yield element

As simple as that!