Spyce ist ein Webframework in Python mit verdammt guter Performance: eine einfache Seite mit einem Template hinterlegt bringt auf meiner Kiste über 90 Hits pro Sekunde (Spyce über mod_python in den Apache integriert, Memory-Cache). Take that, PHP!
python
PHP-Serialize für Python
Hurring.com : Code Vault : Python : PHP-Python Serialize : v0.3b ist eine Implementation des PHP serialize() Zeugs in Python. Sehr praktisch für WordPress: in den Optionen werden oft serialisierte Strukturen gespeichert die man so wieder auflösen kann - man kann so z.B. Tools schreiben, die direkt auf der Datenbank aufsetzen, aber in Python geschrieben sind. Der Autor hat das gleiche auch noch mal für Perl gemacht - man kann also zwischen Python, Perl und PHP einfache Datenstrukturen hin und her schieben.
PEP 342 -- Coroutines via Enhanced Generators
PEP 342 beschreibt einfache Coroutinen für Python. Coroutinen sind im Prinzip Mini-Threads mit manueller Kontrolle - man kann Code mitten drin einfrieren und mit einem neuen definierten Wert wieder aufstarten. Damit bieten Coroutinen den ersten Schritt zu primitiven Continuations - das einzige was noch fehlt wäre die Möglichkeit eine Coroutine zu kopieren.
Philip J. Eby schreibt über die Implementierung dieses PEP - der übrigens auf den Generatoren und Iteratoren von Python aufbaut.
Also los, Leute, sorgt endlich für die Kopierbarkeit von Generatoren und es ist geschafft
FramerD ist eine Objektdatenbank (ok, ein Framestore - ist aber was ähnliches) mit integriertem DB-Server, CGI-Interface und Scheme-Scriptsprache. Ideal um Wissensdatenbanken aufzubauen, da FramerD auf die dabei anfallenden pointerlastigen Strukturen optimiert ist. Aber auch so sehr spannend, da man ein Scheme mit Server und ODB bekommt. Muss ich unbedingt mal mit spielen, zumal es auch auf OS X kompilieren soll (was es bei mir aber derzeit nicht tut). Und es ist unter GPL lizensiert. Und für die Schlangenbeschwörer unter den Klammeraffen gibts auch eine experimentelle Pythonlibrary zum Zugriff auf FramerD...
SPE-OSX kommt aus der gleichen Schmiede wie AquaMacs und ist eine Zusammenstellung von Stanis Python Editor - einer sehr vollständigen IDE für Python. Auch erst ab 10.3.
PythonEggs sind sowas wie .jar-Files für Python. Nur das sie auf ZIP aufbauen. Wird auch endlich Zeit, das man Python-Anwendungen als ein einzelnes File mit Abhängigkeitsdefinitionen runterladen kann und die Installation von Python Anwendungen damit endlich einfacher wird.
Und wer kein Lisp mag oder kann, vielleicht hilft ja SAJAX - Simple Ajax Toolkit by ModernMethod - XMLHTTPRequest Toolkit for PHP das nicht nur PHP sondern auch noch Io, Lua, Perl, Python und Ruby unterstützt.
CherryFlow - Continuations in Python
CherryFlow ist ein Continuation-based Framework für Python und CherryPy. Damit lassen sich auch in Python continuation-basierte Webserver bauen. Das besondere: CherryFlow benutzt entweder Stackless' dumpable Generators oder StateSaver, eine kleine C-Erweiterung die es unter normalem Python erlaubt laufende Generatoren zu kopieren. Genau das was ich damals gesucht habe um meine Continuations für Python zu vervollständigen
The fate of reduce() in Python 3000
The fate of reduce() in Python 3000 - tja, dann wird es wohl wirklich Zeit für mich die Sprache zu wechseln. Denn wer so blöd ist sich von Lisp-Wurzeln zu lösen wird nichts weiter schaffen als die mächtigeren Möglichkeiten mit primitiven Mitteln nachzubauen. Ruby sieht auch sehr brauchbar aus und so langsam gewöhne ich mich an die Syntax ...
Anonyme Funktionen (lambda in Python, Blöcke in Ruby oder Smalltalk) sind weitaus mehr als nur obskure Lisp-Überbleibsel. Ich hab viele Programmstücke die genau davon leben das ich Codeblöcke anonym durchreichen kann - letzten Endes dient das dazu seine eigenen Programmstrukturen zu schreiben. In Smalltalk und ähnlichen Sprachen (und in gewissem Sinne auch in Ruby) kann man darüber eine Sprache selber erweitern und entwickeln - was gerade einer der Stärken von Lisp und seinen Freunden ist (und deshalb ja auch in Smalltalk und seinen Freunden sich wiederfindet - die Smalltalk-Entwickler hatten eine Menge Lisp-Know-How).
Sprachen die sich an der Stelle selber kastrieren und meinen das Iteratoren und List-Comprehension (im Prinzip nichts weiter als verkürzt geschriebene Schleifen) wirklich ein brauchbarer Ersatz dafür sind sich eigene Kontrollstrukturen und eigene Sprachmittel programmieren zu können sind für mich mitlerweile völlig uninteressant geworden. Ich mag keine Sprachdesigner die meinen schlauer als der spätere Programmierer zu sein und denen ein Sprachkorsett aufzwingen wollen.
Aranha server monitor
Der freshmeat.net: Aranha server monitor klingt exakt wie das was ich unter Servermonitoring programmiert habe. Ich benutze allerdings nicht XML-RPC, sondern SOAP. Und ich hab das ganze nicht mit einer XUL Oberfläche, sondern mit einer Weboberfläche versehen. Und ich benutze kein Perl, sondern Python. Strange.

Meins läuft übrigens schon seit Ewigkeiten in der Firma und versieht dort brav seinen Dienst bei der Überwachung unseres Serverzoos.
Ape kann Python-Objekte in Zope transparent auf Filesystemobjekte oder PostgreSQL Datenbanken mappen. Könnte auf der Arbeit sehr interessant sein. Kann auch standalone (ohne Zope) benutzt werden.
Ian Bicking vergleicht FileSystemView vs. LocalFS als Alternativen um Zope-Objekte im Filesystem zu speichern.
Deep Links finden in Logfiles
Weil mich der Pepino gerade danach fragte hab ich mal mein Deep Link Finder Script online gestellt. Es ist ein einfaches Python Script. Sollte ab Python 2.2 laufen, möglicherweise sogar mit Python 2.1 (ist aber nicht getestet). Das Script wird im Source konfiguriert (ich hab Kommentare dazu geschrieben) und dann einfach mit mehreren Logfiles als Parameter aufgerufen. Es sammelt aus Apache Combined Logs raus welche Sites wie oft auf angegebene Dateitypen (konfigurierbar, eingestellt sind einige Bildertypen) deep linked. Es spuckt dazu ein HTML Fragment raus das man mit Header und Footer garnieren kann um es online zu stellen - zum Beispiel entstehen so meine Zeitgeist-Seite für Deep Links. Die anderen Seiten haben ähnlich aufgebaute Scripte, nur das halt Suchbegriffe und generelle Referrer eingesammelt werden.
Ich guck mir ab und an die Deep Linker Liste an und wenn dann da jemand auftaucht der recht viel deep linkt und kein Aggregator oder News-Service ist, dann kriegt derjenige ein entsprechendes Austauschbild vorgesetzt. Aber eben auch wirklich nur diese Sites. Mich stört das nämlich auch immer wenn mir in meinem Feedreader unterstellt wird ich sei ein Bilderdieb oder Traffic-Räuber
Optimization Surprises
In dirtSimple.org: Optimization Surprises schreibt Phillip J. Eby über Optimierungen die er an seiner Implementation von generischen Funktionen in Python gemacht hat. Ich finde es immer wieder faszinierend wenn er über dieses Projekt schreibt, weil mir generische Funktionen gut aus Common Lisp bekannt sind. Faszinierend ist allerdings auch wie er halbe Mikrosekunden an Performance rausquetscht
In seinem Fall macht das übrigens durchaus Sinn, da es ja um eine zentrale Maschinerie geht die bei generischen Funktionen ständig aufgerufen wird. Minimale Performancesteigerungen machen in engen Schleifen eine ganze Menge aus.
Auch sehr interessant ist was er über die inneren Mechanismen von Python herausfindet und welche Auswirkungen z.B. alleine die Existenz von Closures in einer Funktion auf die Abläufe hat.
Spannend. Absolut spannend.
Orange Data Mining
Mal wieder ein Link für die Zahlenfresser: Orange ist eine Datamining-Library mit Python-Integration und eine - zumindestens nach den Screenshots - interessanten GUI.
Ein erstes Python Beispiel in Frontier ist jetzt online. Sieht sehr interessant aus - ich würd mir wünschen das jetzt mal jemand Binaries baut, denn XCode habe ich ja - wegen 10.2 - noch nicht. Und ich würd damit doch so gerne rumspielen ...
Subway ist eine Python-Implementierung der Ideen von Ruby on Rails. Wer also Angst hat sich an den ganzen spitzen und geschweiften Klammern in Ruby zu verletzen ...
The Temboz RSS aggregator
The Temboz RSS aggregator ist ein sehr nett gemachter Aggregator in Python. Er benutzt den Ultraliberal Feedparser für das Parsing und kann OPML importieren. Die Oberfläche finde ich schick gestaltet und die Administration ist recht simpel. Und er hat ein paar nette Features wie das zweispaltige Layout und die recht einfache integrierte Filtermöglichkeit sowie recht brauchbare Feedlistensortierungen. Ich spiel mit dem gerade mal ein bischen herum - auch wenn das warscheinlich meine Motivation einen eigenen Aggregator zu schreiben reduzieren wird
MonkeyTyping - The PEAK Developers' Center
MonkeyTyping ist Phillip J. Ebys Ansatz für optional statisches Typing in Python. Sieht sehr interessant aus, die Idee. Was mich an Phillip immer wieder begeistert ist seine Fähigkeit über den Sprachtellerrand zu gucken - man denke nur an seine Arbeiten für generische Funktionen in Python. Genau solche Schübe braucht Python mal dringend wieder - einige Diskussionen rund um Python zeigen die ersten Anzeichen von Sprach-Inzucht (zum Beispiel diese nahezu Hass-Reaktionen auf die Erwähnung von Lisp und Lips-Features bei einigen Python-Advocates).
Second p0st: cElementTree hat jetzt eine C-Variante zur Beschleunigung des Ablaufs. Damit wird es eine echte Alternative zu anderen DOM Implementierungen.
dirtSimple.org: CLOS-style Method Combination for Generic Functions
Phillip J. Eby beweist einmal mehr das jede Programmiersprache die was werden will dazu verdammt ist irgendwann Common Lisp zu werden
Mir gefällt was er macht - gerade das Objektsystem von Python ist doch etwas primitiv und generische Funktionen und Methodenkombinationen im CLOS Stil sind sehr praktische Mittel bei der Programmierung. Auch seine erweiterte Objektadaption in PyProtocols war schon interessant, aber das recht vollständige Objektmodell mit Anlehnung an CLOS ist definitiv reizvoll.
Ich würde mir ja wünschen das sich Guido van Rossum mehr Gedanken darüber macht wie er PJEs Zeug in Python integriert als darüber wie er optional statische Datentypen einführt.
Aquarium - Webframework mit MVC Ansatz in Python - vergleichbar Rails?
appscript - Python als Ersatz für AppleScript nutzen - volle AppleEvent und OSA Einbindung
Impostor - Continuation-basierte Webanwendungen mit Python
Revision 8033: /user/arigo/greenlet - Minimalistische Threads (Tasklets wie in Stackless Python) als normales Python C Modul
ASPN : Python Cookbook : A meta-class that provides class behavior like Ruby - Klassenüberladung (Definition neuer Methoden) mit Python im Ruby-Stil
Gus Mueller's Website - VooDooPad Plugins mit Python und PyOBJC schreiben
recondite: You don't tug on Superman's cape... - Python zur virtuellen Maschine von VisualWorks Smalltalk compilieren
Logilab.org - Aspects documentation - AOP für Python
Codewalker für Pyton - Ein Codewalker der diverse Änderungen am Code von Lambda-Ausdrücken machen kann (speziell early binding etc.)
Xoltar Python Page - diverse Funktionale Erweiterungen zu Python - curry, lazy expressions, partial evaluation etc.
Python is a weakly typed language, which as any experienced Python programmer knows has both good and bad points - Traits - optionale Typdeklarationen für Attribute in Python
Snurf: a Python-based Blogging System - nettes kleines Blogsystem das keine Datenbank braucht
Verzögerte Ausführung mit Python
Der ursprüngliche Text ist auf das PyDS Weblog umgezogen. Der Grund ist das ich mit der neuen Software den Text nicht vernünftig verwalten kann, weil die nötigen Tools hier nicht verfügbar sind (speziell das Sourcecodeformatieren klappt hier nicht, ausserdem ist der Text zu riesig - jedenfalls wenn er als XHTML gespeichert ist).
Charming Python: Implementing "weightless threads" with Python generators - Sehr interessantes Konzept wie man extrem resourcenschonende Threads in Python mit Generatoren baut - kooperatives Multitasking in 100% Python
Contracts for Python - Programming by Contract in Python auf Basis von umschreibenden Metaklassen
ReportLab - PyRXP - Sehr schneller validierender XML Parser für Python - baut auf RXP auf
GadflyB5: SQL Relational Database in Python - 100% pure Python SQL Datenbank
Barebones pure-Python PostgreSQL client - PostgreSQL Client in reinem Python - kein C Compiler benötigt, daher sehr portabel, aber auch feature-ärmer
REgurgitate - Beispiel wie man Python Code tokenisiert und wieder zusammenbaut
StupidSheet - Noch ein Beispiel für tokenize - ein kleines pure-Python Spreadsheet
PyX - Python graphics package - 2D und 3D Grafiken präsentationstauglich in Python generieren
Durus - Kompakte Objektdatenbank für Python - schnell, aber für lese-lastige Systeme ausgelegt
Statement coverage for Python - Primitive Code-Coverage Analyse für Python
xmltramp: Make XML documents easily accessible. - kleine kompakte XML Parser und Generator Library für Python - schön integriert in die Syntax
RDFLib 2.0.4 Readme - Library zur Arbeit mit RDF in Python
ASPN : Python Cookbook : Spreadsheet - ein paar ideen für kontrolliertes eval in Python
Pyco - Tiny Python Distributions - kleine Windows-EXEs aus Python Tools bauen.
Lasso - Souk - Python Modul zur Integration des Liberty Alliance Single Signon Protokolls.
Python Packages Index: pyDB2 0.996a - DB/2 API for Python - need that at work