... hab' ich mitzuteilen - L's blog

... with a touch of python - Didaktik der Informatik, Informatische Bildung, ...
Mon, 26 Sep 2005
Python und Typprüfung [ 03:02 Uhr ] [ 123 Worte ]

python Immer wieder wurde -- nicht zuletzt aus dem Ausbildungsbereich -- gefordert, dass es doch möglich sein sollte, unter Python auch eine saubere Typprüfung vorzunehmen. Die folgende Konstruktion funktioniert mit dem »decorator«, der ab Python 2.4 Bestandteil der Sprache ist: @typecheck(int, str, str) Diese Zeile -- vor die Funktionsdeklaration geschrieben -- sorgt dafür, dass beim Aufruf die Typen genau dieser Festlegung entsprechen.

Damit wird der Fehler TypeCheckException (für den formalen Parameter »a« wird explizit »int« gefordert) bei dem folgenden Codeschnipsel erkannt und angezeigt.

@typecheck(int, str, str)
def meine_funktion(a, b, c):
	pass
    
meine_funktion('5', 'x', 'y')

Das Modul »typecheck« ist über http://cheeseshop.python.org/pypi/typecheck/ zugänglich.

Mon, 19 Sep 2005
Umlaute mit Latin-1 aka iso-8859-1 [ 22:10 Uhr ] [ 277 Worte ]
python

Encoding - hinterher ist man (immer ?) klüger

Gestern wollte ich »mal eben« die Möglichkeit einbauen, dass Texte, die nach einem der »Dokumentationsstandard«s für Python formatiert sind, automatisch geparst und in die Blogdarstellung eingebunden werden.

reStructuredText

Das dazu notwendige Werkzeug rst.py ist für pyblosxom verfügbar. Der Einsatz des Werkzeugs wird wie üblich mit einem Eintrag in config.py eingeschaltet.

Sobald nun eine Datei die Endung »rst« hat, wird der Inhalt mit dem Parser als reStructuredText interpretiert und in die HTML-Darstellung umgewandelt.

Das klappte sofort. Allerdings erstelle ich die Dokumente nicht mit UTF-8, sondern (nach wie vor) als Latin-1-codiert.

Damit stellt sich ein Problem:

Wie kann rst.py erweitert werden, so dass auch die Codierung berücksichtigt wird?

Die Lösung ist - wenn man sie erst einmal gefunden hat - einfach. Das Dictionary overrides (es darf auch anders lauten) mit dem Inhalt:

overrides= {'input_encoding':'latin-1' , 'output_encoding': 'latin-1'}

wird angelegt und enthält die Einstellungen für die Codierung der Ein- und Ausgabedaten. Bei der Erstellung der html-Darstellung werden diese Daten als Parameter an publish_string aus dem Module docutils.core übergeben:

html = publish_string(story, writer_name='html', settings_overrides=overrides)

Die Möglichkeiten für die Verwendung und korrekte Einstellung der Parameter finden sich in der Dokumentation der API für die docutils

Geänderter Quellcode für rst.py

Damit Sie den Parser selbst sofort einsetzen können, stelle ich die geänderte Version zur Verfügung:

Sun, 18 Sep 2005
Quellcode zu Buchliste veröffentlicht [ 22:00 Uhr ] [ 52 Worte ]

python Die Ankündigung liegt nun schon(!) einen Tag zurück. Heute habe ich die Verzeichnisstruktur ein wenig erweitert, damit die Quellcodeschnipsel auch in einem eigenen Verzeichnis liegen:

Sat, 17 Sep 2005
Konfiguration - der Quellcode - buchliste.py [ 13:28 Uhr ] [ 241 Worte ]

python Nach Rückfrage gebe ich auf diesem Weg das zur Erstellung der Buchliste erstellte Python-Skript für Interessierte an. Dabei handelt es sich um eine modifizierte Variante von booklist.py von Will Guaraldi Version 1.7 - (09 December, 2004) http://www.bluesock.org/~willg/pyblosxom/

Um
buchliste.py
nutzen zu können, ist das Skript in das Plugin-Verzeichnis zu legen. Die Nutzung muss explizit in dem Skript
config.py
durch Hinzufügen
    py['load_plugins'] = [ ... , "buchliste", ... ]
eingeschaltet werden. Inhalte der kommentierten Buchliste sucht und findet das Skript in der Datei buecher.dat (der Dateiname kann in Zeile 118 des Skripts buchliste.py geändert werden). Die Syntax der Inhalt ist etwas einfacher als die bei Will verwendete, da die Daten für den Autor, das Buch und die ISBN aus der BibTeX-Datei extrahiert. Dazu ist ausschließlich der bibkey für den Datensatz anzugeben. Die Methode setzt voraus, dass die korrekte ISBN Bestandteil des Datensatzes ist. Ist die ISBN nicht korrekt angegeben, so kann das Bild nicht von Amazon geholt werden.
    bibkey::begonnen::statuslesen::kommentar
Das Skript sucht den zu bibkey gehörenden Datensatz aus der BibTeX-Datei (bei mir: "/usr/share/texmf/bibtex/bib/base/Komplett.bib" - die Lokation kann in buchliste.py in der Zeile 119 geändert werden). Der gefundene Datensatz wird auf mögliche Querverweise untersucht. Die Querverweise werden ausgewertet, um z. B. die ISBN für einen Beitrag in einem Sammelband aufzuspüren.

Konfiguration - der Quellcode [ 00:51 Uhr ] [ 57 Worte ]

python Nach Rückfrage gebe ich auf diesem Weg die beiden geänderten Dateien für Interessierte an:

Fri, 16 Sep 2005
pyblosxom: Änderung der Darstellung des Datums [ 20:27 Uhr ] [ 227 Worte ]

python Da mir die englische bzw. die amerikanische Darstellung des Datums nicht zusagte, habe ich recht frühzeitig die Darstellung des Kalenders an die in Deutschland gängige Notation angepasst. Dort habe ich die notwendigen Änderungen in dem Modul pycalendar.py der Reihe nach von Hand durchgeführt. Diese Vorgehensweise ist aber nicht zu empfehlen.

Für die Darstellung des Datums ist in Python das Modul »locale« zuständig. Also wird diese Darstellung mittels der folgenden Zeilen

import locale
locale.setlocale(2,'de_DE')
auf unsere Region eingestellt. Die Einstellung erfolgt(e bei mir) in einem der Basismodule von Pyblosxom: /usr/lib/python2.3/site-packages/Pyblosxom/entries/base.py

Um im Blog von der Darstellung »Wed, 07 Sep 2005« auf »Mittwoch, 7. September 2005« zu wechseln, habe ich in der gleichen Datei den Zusammenbau des Attributwertes geändert: Der Wert für den Wochentag wird durch %A als vollständiges Wort aus der Zeitangabe extrahiert:

        self['dw'] = time.strftime('%A', timeTuple)
Die komplette Zeichenkette wird mittels
        self['date'] = time.strftime('%A, ', timeTuple)+ str(timeTuple[2]) + time.strftime('. %B %Y', timeTuple)
in der üblichen deutschen Darstellung aus dem Tupel erzeugt. Mehr zu Zeit- und Datumsformaten und ihrer Umwandlung (in Python) findet sich in http://docs.python.org/lib/module-time.html. Eine objektorientierte Schnittstelle wird mit einem weiteren Standardmodul datetime angeboten. Weitergehende Möglichkeiten, um mit Zeiten zu arbeiten, werden durch die mx-Module (für diesen Anwendungsbereich: mx.DateTime) angeboten.

Wed, 14 Sep 2005
Konfiguration ohne Ende [ 01:12 Uhr ] [ 46 Worte ]

python Nachdem ich in den letzten Tagen doch sehr viel Zeit damit verbraten habe, das Weblog so zu konfigurieren, wie ich es mir vorstelle, kommt hoffentlich nunmehr die Zeit, in der ich mehr über Inhalte nachdenke.

Fri, 09 Sep 2005
Python [ 20:45 Uhr ] [ 20 Worte ]

python treibt diese Webseite(n), die gemeinhin als Blog bezeichnet werden

Pyblosxom konfigurieren und den Wünschen anpassen [ 20:11 Uhr ] [ 45 Worte ]

python Nachdem ich gestern Pyblosxom auf haspe erfolgreich installiert habe, (s|w)ollten auch gleich einige der Plugins ihren Weg in meine Gesamtkonstruktion finden.

Besonders interessiert(e) mich selbstredend der aktive Kalender, dem die Einträge entnommen werden können.

Wed, 07 Sep 2005
Willkommen zu Pyblosxom [ 00:20 Uhr ] [ 59 Worte ]

python Wenn Sie diese Seite "sehen" können, haben Sie das Debian Paket Pyblosxom erfolgreich installiert.

Einträge liegen als .txt Dateien in /home/humbert/blogdaten/blosxom/schauplatz/. Dieser Eintrag wird durch die Datei willkommen.txt erzeugt, Sie können sie ohne Verluste löschen.

Um Pyblosxom zu konfigurieren, muss die Datei /usr/lib/cgi-bin/config.py bearbeitet werden.

<<  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35]


Inhalte unterliegen dem Copyright von L. Humbert.
Creative Commons License
Die Inhalte stehen unter einer Creative Commons License.