Python


Python is one of my favorite programming languages due to its terseness and amazing flexibility.

My Stuff:

Yaki my current wiki engine.
Sushy my next wiki engine.
rss2imap The way I read my news every day
MailArchive a quick hack to file web pages as MIME compliant e-mail messages.
IMAP Backup another quick hack that apparently filled a long-standing need.
Growl native protocol implementation this spawned numerous variants, including a proxy.
PicoRendezvous.py a minimalist (and dumb) Bonjour / Rendezvous client.
PNGCanvas a native Python PNG creation module.
PicoStats a minimalist Apache log parser.
The Python Grimoire which I converted into TiddlyWiki format
newspipe which I used daily for a couple of years and occasionally contributed to

Resources:

Category Link Notes
Interpreters & Compilers Js2Py A JavaScript interpreter written in pure Python
Hope A specialized JIT compiler
Nuitka An interesting batch compiler.
tinypy Python in 64K of code.
Skulpt Some interesting twists on using Python on the way to JavaScript.
Pyjamas
Web Application Frameworks Moya a new(ish), template-centric web framework with some interesting twists
Wagtail Another Django-based CMS framework.
wid.gy A Django-based CMS framework.
pecan Based on object dispatching
wheezy.web A high-performance framework that seems to get along well with PyPy
sandman A simple RESTful wrapper
eve Another RESTful foundation framework
Bottle Tiny, flexible, awesome. My favorite since 2011.
Tornado non-blocking, which is pretty interesting.
Django The new hotness.
Snakelets A minimalistic app server, my old web platform of choice.
Draco Old and busted, to various extents.
medusa
CherryPy
Karrigell
Twisted
Zope
Machine Learning discomll A ML framework for Disco
Debugging Tools Eww Insert a REPL into a running application
pudb A console debugger
assertEquals a testing framework with a great screencast
Hypothesis A very nice testing framework
Pycallgraph Generate a program flow graph via Graphviz
REPLs ptpython The Python Prompt Toolkit
bpython My favorite REPL
Concurrency aioprocessing asyncio equivalents of the multiprocessing library
offset ports of the Go concurrency model
goless
OpenReplica A coordination service that provides replication and synchronization support for large-scale distributed systems
Pulsar Another actor-based multiprocessing library with async IO support and a fair degree of network transparency
Pykka An implementation of the Actor model, with gevent support
Celery My current go-to library for task queueing
Littleworkers Parallel job management without the hassles.
python-rq A simpler queueing library
Console click A very nice way to do composable CLI tools
fabulous Totally awesome. PRINT IMAGES TO CONSOLE!
plumbum Another command wrapper, with SSH support.
pbs A nice, simple and consistent generic command wrapper.
Clint A great module for developing CLI applications.
Colorama Making ANSI color sequences work across platforms (see also this gist).
Functional Programming pyrsistent A persistent data structure library
Toolz A functional complement to the standard library.
Hy An awesome LISP dialect that sits atop the runtime.
funcy A nice, fairly complete functional library
Data Handling Schematics A validation/schema handling library.
voluptuous A data schema validation library.
xlwings An Excel plugin
fuzzywuzzy A fuzzy string matching library
snakebite A native HDFS client to access the Hadoop datastore.
Happy A Hadoop library to run map-reduce jobs via Jython
PyCascading A better way to write Hadoop jobs.
Graphics Vapory A library to generate photorealistic renderings using POV-Ray
Cropmap Face-aware image cropping.
Pygal An SVG charting library with a variety of built-in formats.
pyprocessing A Processing clone in Python.
smc.freeimage A wrapper for the freeimage library that can handle various TIFF and fax formats as well as ICC color profiles
Graphite a real-time graphing system similar to RRDTool.
SciPy scientific (including plotting) libraries for Python. Most impressive.
Pyx Oldie, but goodie.
Skip’s Python Bits lots of useful snippets
pygame a game-oriented library with SDL support
Database Peewee A small, very flexible ORM
Goatfish An even smaller schemaless ORM
SQLAlchemy See tutorial
Sybase module I’ve used all of these at any one time, and pymssql worked out better for me.
FreeTDS
pymssql
GIS reverse-geocoder A fast offline reverse geocoder
geopy an amazingly flexible geocoding library.
GUI Stuff PySide A recent Qt binding (up to and including 4.7) with QML support
kivy A sophisticated UI/UX library with Android support
pyglet a cross-platform windowing and multimedia library with OpenGL support
PythonCard A bit basic, but interesting.
urwid A curses based library for building console UIs
winGuiAuto.py for Windows automation.
VPython 3D OpenGL libraries for quick visualization.
Networking ThriftPy A pure Python implementation of Apache Thrift
pyrobuf a Cython implementation of Google’s protobuf library
SleekXMPP A more modern XMPP library
pyxmpp2 another one, probably more interesting.
pyvnc ctypes interface to the VNC libraries
pyapns An Apple Push Notification Service provider based on Twisted.
gunicorn A WSGI server for UNIX that supports a number of different worker daemons and is highly customizable.
uwsgi A C application container that speaks WSGI (and seems seriously kick-ass).
msnlib An MSN protocol implementation
ircutils A relatively modern IRC framework that uses asyncore
IMAPClient An IMAP wrapper library
Python smtplib progress indication Might come in useful some day.
RPyC an awesome RPC library
Eventlet Amazing event-oriented framework
dpkt packet creation and parsers
Pcapy a packet manipulation library
Tftpy a pure Python TFTP library, useful for implementing UDP file transfer testbeds.
ftputil a high-level interface to the ftplib module
telnetscript a simple module to do scripted telnet sessions.
FAPWS a very fast asynchronous web server with a small codebase.
simple non-blocking HTTP server another simple server.
PuSSH SSH wrapper.
POP a POP3 class with neat semantics.
PyRendezvous neat little Bonjour module I use a lot.
IPy an IP address manipulation library.
Data formats biplist A library that can manage Mac binary .plist files
xlwt a library to parse Excel documents (cheatsheet).
pyparsing a handy, flexible parser library that does away with lex/yacc.
Unicode Unidecode Does character transliterations.
Reporting Relatorio A very neat reporting library with multiple output formats
HTML and XML BeautifulSoup The most powerful HTML parser out there.
pholcidae A web crawler library.
squeezeit A CSS and JavaScript bundler and minifier.
mxTidy HTML Tidy for Python
pygments Python syntax highlighter able to handle multiple nested languages
pyquery A jQuery-like library for manipulating documents.
cssutils a CSS Cascading Style Sheets parser.
Mechanize a programmatic web browser for screen scraping.
Gnosis Utilities all sorts of XML goodies.
lxml a different libxml binding.
PDF xhtml2pdf Aalternatives to PrinceXML for generating formated PDF docs.
WeasyPrint
PDFMiner a parser and text renderer that can identify location of text on a page and do basic rendering to HTML
PyPdf a PDF toolkit
Kiva a Display PDF library.
ReportLab Toolkit a pure Python PDF library that includes a presentation tool.
Media subliminal A library for looking up movie subtitles in various languages.
Tools pydown An HTML presentation generator

Techniques

Notable Apps:

Date Link Notes
2014
Jun 24 ajenti a server management panel
Jun 9 isso A Disqus-like commenting system
Fig Fast, isolated development environments using Docker
DreamPie Another nice shell
2013
Jan 27 bpython A great curses-based shell
iPython The original, do-it-all notebook-oriented shell
dreampie Another, simpler shell
2012
Nov 3 pyspread A Pythonic spreadsheet with R bindings

Notes:

Setting distutils paths in OS X:

Create a file named .pydistutils.cfg in your home directory with the following contents and set $PATH accordingly:

[install]
install_lib = ~/Library/Python/$py_version_short/site-packages
install_scripts = ~/Library/Python/$py_version_short/bin
install_data = ~/Library/Python/$py_version/share

This will install packages to your Library folder rather than to the system directory, saving you the trouble to use sudo or risking messing with the system installation. Of course virtualenv does a better job for keeping track of project-specific dependencies, but this is great for common/complex dependencies and is sure to survive operating system upgrades.

And then you can use `easy_install` or `pip install —user` with impunity, although you might need to do something like:

$ ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future easy_install pandas

…for getting around some `clang` oddities.

Instant Web Server on port 8000:

#!/bin/sh 
python -c '__import__("SimpleHTTPServer").test()'

Totally Unrelated: