Am Rande notiert ...

gcc python plugin and static analyser for CPython sources. Auf sehr seltsame Art und Weise Cool. Ich mein, mal ernsthaft: wer guckt sich gcc an und denkt da spontan „oh, da sollte ich einen Python-Interpreter einbetten“? Ja, ich weiss, die Antwort ist „der Autor dieses Plugins“. Seltsame Dinge tun manche Menschen …

Skulpt. Eine Python-Implementierung in JavaScript, Client-Side. Also im Browser. Nett der Hinweis, man solle garnicht erst probieren den Server zu crashen, man würde nur seinen eigenen Zeh stoßen … (ansonsten ist das aber wohl eines der vielen Projekte „weil es geht“)

Florian (Autor) meint, ich könnte an burrahobbit interessiert sein und er hat Recht: persistente Datenstrukturen (also funktionale Persistenz) in Python, mit zu den normalen Datenstrukturen vergleichbarem Zeitverhalten. Bisher hat er Dictionaries und Sets.

Comparison to Python | Cobra – nur der Vollständigkeit halber geblogmarkt, da die Sprache einige interessante Ideen hat. Speziell die Kontrakte fände ich als explizite Syntax gut, Python erlaubt ähnliches nur auf Umwegen. Allerdings ist die Sprache ansonsten halt eine der vielen Nischensprachen. Und ehrlich gesagt ist Python mehr als nur die Einrückung – was ist zum Beispiel mit dem sehr ausgereiften Metaprotokoll von Python in den diversen Nischensprachen? PyPy in Kombination mit Rpython und dem neuen ctypes für pypy da deutlich interessanter.

Writing Plugins for gedit 3 with Python. Schaut so aus als ob Gnome 3 tatsächlich eine recht generische Schnittstelle für Python-Scripting bekommt. PyGTK war zwar auch schon da, aber das ist einfach nur eine GUI Lib. Jetzt wird aber über GObject und Friends gearbeitet und damit sind weitaus mehr Elemente ansprechbar. Gedit ist übrigens ein recht netter grafischer Editor, der unter Linux durchaus als Alternative zum unter OSX gerne genutzten BBEdit oder TextWrangler genommen werden kann.

Python Interpreter by Noam Gat — Unity Asset Store. Und das hier ist eher was für meine privaten Spielereien: ein Plugin, welches in Unity3D eine interaktive Python Shell einbindet. Irgendwie reizt mich Unity3D immer wieder wenn ich es auftauchen sehe. Zumal mitlerweile der Einstieg frei ist (leider ist der Sprung zu Pro – das einige essentielle Tools wie einen Profiler oder Unterstützung für externe Versionierung anbietet – doch ziemlich heftig)

micromongo — micromongo v0.1 documentation. Auch mal angucken, micromongo liefert einen minimalen ORM für MongoDB Server. Wobei ich da allerdings mal gucken müsste, ob es nicht mitlerweile bei django-nosql auch schon Unterstützung für MongoDB gibt, dann müsste ich nicht eine andere ORM Syntax benutzen – allerdings ist micromongo wirklich ziemlich schlank und basiert nur auf pymongo, also z.B. nett für kleine Webservices, weil man nicht einen Haufen Module installieren muss.

execnet v1.0.9 documentation. Müsste ich mir auch mal angucken, es ist im Prinzip eine Library zur Verteilung von Funktionen über ein Netzwerk von Instanzen – kein volles map/reduce oder ähnliches, mehr sowas wie ein besseres RPC. Speziell interessant um zum Beispiel eine normale cpython Front mit einem Compute-Backend auf Basis von PyPy zu benutzen (oder umgekehrt dem PyPy-Server ein numpy+scipy Backend in CPython für Datenanalyse zu verpassen).

pmundkur/odisco. Eine Implementierung für Map/Reduce nach dem Disco Worker Modell in Objective Caml. Sowas gibts auch schon für Python. Falls ich mal wieder mit OCaml rumspielen will.

Reinteract könnte für alle Zahlenfresser und Grafikspieler interessant sein, sofern sie von Python keine Pickel kriegen: eine Implementierung von Worksheets wie man sie von Mathematika und Sage kennt, nur als direkte Python-Anwendung auf Basis von PyGTK. Man kann Python-Source reinhacken und ausführen, älteren Source nachträglich editieren und sein Output im Worksheet wird automatisch aktualisiert. Downloads auch für OSX verfügbar. Leider ist PyGTK kein 1st-class citizen der Mac Umgebung – es sieht einfach nur grausig aus mit den halb-defekten Controls und die Useability ist leider auch nicht wirklich OSX-like. Irgendjemand könnte das mal nach Cocoa portieren.

bconstantin / django_polymorphic. Warum finde ich das erst jetzt? Das ist eine sehr nette Sache für Django-Projekte mit vererbten Modellen – sobald man Zugriffe auf eine gemeinsame Modell-Klasse macht, erhält man bei Django nur Instanzen der gemeinsamen Modell-Klasse – bei Django-Polymorphic aber erhält man Instanzen der konkreten Unterklassen. Im Prinzip wird der ORM dadurch mehr zu einer Objekt-Datenbank. Dürfte allerdings etwas zulasten der Performance gehen, da mehr SQL-Abfragen erzeugt werden.

birkenfeld / karnickel. Ziemlich schräges Teil: Makros auf AST Level für Python. Allerdings in einer Form, die dann doch eher an C Makros erinnert – also einfache Expression-Makros (und recht stark limitierte Block-Makros). Vor allem fängt man sich all die bösen Probleme eines solchen unhygienischen Makrosystems ein – wie zum Beispiel Namenskonflikte zwischen makro-lokalen Variablen und äußeren Variablen. Ist auch eher einfach nur der Beweis das es geht und was man mit dem in Python mitgelieferten AST Modul machen kann.

Pygame Subset for Android. Huch – es gibt ein PyGame subset für Android. Nutzung ist etwas hakelig, weil es keine IDE gibt – man muss die Files auf der SD Karte (hmm – ein Nexus S hat keine SD Karte, wo landet das dort?) ablegen und anderweitig editieren.

android-scripting – Scripting Layer for Android brings scripting languages to Android.. Interessantes Projekt mit dem man diverse Scriptsprachen auf Android-Telefonen laufen lassen kann. Unterstützung für Shell, Python, Perl, Ruby, Lua, TCL und JavaScript sind schon dabei. Für mich ist natürlich besonders Python interessant. Vor allem weil die API von Android verfügbar gemacht wird – man kann also direkt mit den Sachen interaktiv oder gescripted rumspielen.

PyPy Status Blog: PyPy 1.5 Released: Catching Up. Yay! PyPy ist jetzt auf dem Stand von CPython 2.7! Und wieder mal ein paar zusätzliche Performanceverbesserungen. Ausserdem ist das Interface für CPython Erweiterungsmodule (also welche die eben nicht in Python geschrieben sind) verbessert, erste Erfolge sind Tkinter und IDLE.

kiorky/spynner. Wow, das klingt echt interessant – ein programmatischer (also ohne Oberfläche) Webbrowser auf Basis von QtWebkit als Python-Erweiterung. Der Vorteil? Dadurch, dass eine vollständige Web-Engine drunter steckt, kann man eben alle Features des Webbrowsers nutzen – zum Beispiel eben auch client-side JavaScript und all die anderen Sachen, die in Webanwendungen verwendet werden. Das könnte für automatisierte Tests von Webanwendungen sehr interessant sein – oder für das Scrapen von komplexeren Webseiten.

tvon / python-wordpress. Und um Posts und Bilder in WordPress zu kriegen, könnte ich hiermit arbeiten – eine Python Library, die diverse WordPress Funktionen zur Verfügung stellt. Allerdings gibts die in verschiedenen Versionen, in verschiedenem Zustand der Nicht-Pflege, muss ich also mal drübergehen und gucken ob alles so läuft wie ich es will.

Backing Up Flickr. Weil ich grade drüber gestolpet bin (ich suche nach Wegen um Flickr-Uploads automatisch auch in die Mediathek von WordPress zu schieben, vorzugsweise vom Server aus, ohne dass ich immer nur manuell aktiv werden muss. Dazu müsste ich eigentlich das hier mit WordPress-Funktionen verheiraten (es ist ein Python-Script, welches Flickr Bilder in Verzeichnisse sichert). Die Backup-Funktionalität tuts übrigens. Vielleicht auch garnicht so eine blöde Idee, einfach ab und an mal seinen Flickr-Account zu sichern …

Gondor — effortless production Django hosting. Hmm, das klingt recht interessant – ein Tool zum  einfacheren Deployment inklusive Datenbankmigrationen (über South). Soviel ich das verstehe ist es aber an deren Infrastruktur gebunden – also eher eine Alternative für die Google AppEngine, direkt auf Python aufbauend.

agronholm / jython-swingutils. Noch keine Idee was ich damit machen könnte, aber falls mal die Java-Welt interessant ist, könnte das als GUI Bibliothek interessant werden (Swing für Jython).

Python Package Index : pip 1.0. Der Vollständigkeit halber hier geblogmarkt, auch wenn pip für mich mitlerweile eh fester Bestandteil der Python Infrastruktur ist. Aber vielleicht hat der eine oder andere ja noch nicht mit pip rumgespielt, dann ist jetzt wohl der richtige Zeitpunkt gekommen. Man sollte es meiner Meinung nach immer zusammen mit virtualenv benutzen, denn dann kann man einfach für jedes Projekt genau die passenden Abhängigkeiten installieren und sauber von anderen Projekten trennen.

sunng87/jip. Im Moment mache ich nicht so viel mit Jython, aber jip klingt sehr praktisch: es ist ein Analog zu pip, aber für Java-Libraries. Also ein einfaches Kommandotool, welches die notwendigen Jar-Files runterlädt und an den richtigen Ort packt. Integriert mit virtualenv. Für mich deutlich angenehmer als zum Beispiel mit Maven oder ähnlichen Java-üblichen Infrastrukturtools rumzumachen.

philikon / python-weave client ist fast noch interessanter als das andere Tool: eine Python-Bibliothek zum Zugriff auf Mozilla Sync. Damit könnte ich mir diverse kleine Tools bauen, die Links automatisch in Bookmarks einmischen oder aus dem Sync rausholen und in andere Bookmarkdateien reinwandern lassen. Oder wie wäre es mit einem Cronjob, der aus den Bookmarks aus einer speziellen Gruppe Links rausnimmt und automatisch ins Weblog postet? Lauter lustige Spielereien sind möglich …

Pipe ist ein Modul mit infix-Syntax für verkettete Funktionsaufrufe über potentiell lazy streams (intern sind das Generatoren). Im Gegensatz zu stream (hatte ich hier schon mal) ist es ohne Unterstützung von Parallelität, also einfach nur syntaktischer Zucker. Mir gefällt allerdings der von stream besser (also der Zucker) und die Parallelität von stream ist auch interessanter als nur eine etwas andere Syntax zu liefern.

Django-nonrel – NoSQL support for Django. Liefert einen ersten Ansatz in Django verschiedene NoSQL Datenbanken zu integrieren, und zwar auf Ebene des Django-ORM. Backends für MongoDB (nein Danke), AppEngine und Cassandra sind in der Mache. Besonders Cassandra interessiert mich im Moment.

PyGUI ist eine sehr schlanke GUI-Bibliothek für Windows, OSX und Linux, die auf nativen Toolkits aufbaut (Windows und OSX) bzw. GTK benutzt (Linux). Der Anwendungscode selber ist durch PyGUI allerdings unabhängig von den Systemspezifika. Könnte für kleinere Projekte bei denen man nicht unbedingt die Abhängigkeit von wxPython haben will interessant sein.

pdict.py at master from segfaulthunter/sandbox – GitHub. Eine PersistentHashMap für Python – also eine funktionale Datenstruktur, welche keine Veränderungen zulässt, sondern eine neue Struktur mit minimaler Änderung gegenüber einer bestehenden Struktur mit Substruktur-Sharing zur originalen Struktur liefert. Eine recht interessante Implementierung. Gibt auch nähere Erläuterungen zu den Ideen dahinter. Und eine alternative Implementation der gleichen Idee.

Python Tools for Visual Studio. Wer auf Windows sitzt und Zahlenfresser ist – SciPy und NumPy sind da jetzt direkt in der .NET Plattform verfügbar mit diesen Tools. Und ich frage mich, warum Apple sowas nicht mit XCode mitliefert, denn das würde sicherlich im Umfeld der Universitäten Anklang finden (man denke nur an Sage).

fantasm – Project Hosting on Google Code. Unbedingt mal angucken, eine Workflow-Engine in Python. Sowas könnte für Projekte auf der Arbeit recht interessant werden.

Pyjamas – Python Javascript Compiler, Desktop Widget Set and RIA Web Framework. Hatte ich im alten Blog schon mal, aber a) hat sich ne Menge getan und b) kams mal wieder heute hoch als Thema, also nochmal geblogmarkt.