Python

Python is my current programming language of choice for most endeavors (even if only for prototyping). I am, however, not shy of using something else if it is better suited for the task.

It is also one of the main contributors to my occasional rants on the utter lack of an universal system scripting language.

My Stuff:

Yaki my current never-ending opus.
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.

Stuff I Help Out With:

Testing Aids:

Resources:

Mac OS X specific Stuff:

Windows:

  • Enthon, an enhanced Windows distribution with several scientific tools included.

Libraries:

Category Link Notes
Console 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.
Littleworkers Parallel job management without the hassles.
Colorama Making ANSI color sequences work across platforms (see also this gist).
Data Handling Happy A Hadoop library to run map-reduce jobs via Jython
PyCascading A better way to write Hadoop jobs.
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 geopy an amazingly flexible geocoding library.
Debugging Tools pudb A console debugger
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 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.
Interpreters tinypy Python in 64K of code.
Skulpt Some interesting twists on using Python on the way to JavaScript.
Pyjamas
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.
Web Application Frameworks 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 current web platform of choice.
Draco Old and busted, to various extents.
medusa
CherryPy
Karrigell
Twisted
Zope
Graphics 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
PDF 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.

Techniques

Notable Apps:

Date Link Notes
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:

Instant Web Server on port 8000:

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

Totally Unrelated:


See Also

ZatoMacroPyPyPy 2.0 - Einstein SandwichJavaScript
Debian 7.0Light Table 0.4Burning the candle at both endsRoll Your Own Pocket Server
Burn, RSS, Burn!soup-strainerKivyThe Week Around These Parts
JSONMathematicsAn ARM On Four CylindersA Chequered Past
Python Web Framework Session ManagementAndroidCSSPython
bpython interpreterSublimingRaspberry Pijhead
Hacker News mourns Aaron SwartzgitQtzweb: A Quartz Composer to WebGL & JavaScript CompilerRuby
SkulptAirPrint PiBrythonRevisiting AirPrint
Hitting the BottleVisualizationRNINJA IDE
MarkdownffmpegThe Codebits Digital Signage Project (Part I)Ubuntu
Qtile.org - A Pure-Python Tiling WMGIMP Is Now Available as a Native App for Mac OS XjQueryAndroid x86 Build Notes
XMPPCocoaIMAP Backup ScriptA Big Slice of Raspberry Pi
Pure Python PNG CanvasSpring cleaning, and deploying SPDYPythonistaUsing DFS Shares in Mac OS X
DjangoExcelVirtual Network Computing (VNC)Backstage
On Coda 2Coda 23D PrintingDjango 1.4 release notes
MySQL and Python on LionXcodeMezzaninePython for iOS
Sane Python subprocess wrapperARMing for the futureMicrosoft Exchange ServerSubversion
What to do when PyPI goes downMedia CenteringArchipel ProjectMark Pilgrim
Dive Into Python (ZIP Archives)UPnP (Universal Plug and Play)Distributed MapReduce in PythonThe Slow Way to SPDY
TadpoleDesign & Code CreditsPyPy 1.6 - kickass pandaAirVideo on a Synology DS411j
vim keybindings for Lion Mail.appMaking your mail sit up and begInstalling matplotlib in LionMac OS X Lion Review
Bonjour a la LuneGiving QCRenderer a breatherMail ToolsGity
CalibreLoki Render, RebootedSlimitFive Updates
rcarmo/Yaki - GitHubIntroducing ReposadoPublishingKupfer
Grilling PostsEvernoteOtherWikisCalDAV
ShelfKeynoteGreased LightningThat downtime thing
Tiny NodesChopping up multiple-screen wallpapersMounting and unmounting volumes in PythonCarpe Terram
PDFSo, what of the netbooks?TextileTonight's Random Bit Of Code
SurpassSony ReaderToday In The Geek PlaneChipping Away
VeuszScalable Vector Graphicswebkit2pngYaki
The Smell Of Napalm In The MorningMeanwhile, as I rest...Found With The WindMercurial
RelatedMailMore fun with toys: the Ikea LILLABO Train SetWhen People Just Can't Share Files AnymoreDe-Tweeting
BonjourThe Making of Darling FireballPhoto Archival and Integrity CheckingPNG
SliMP3netgrowl.pyOutlookGrowl
ID3Shortening and Expanding URLs with PythonFor Future ReferenceGoogle Wave
Lamson The Python Mail ServerUnsocialMandarinMercurial
IMAP ScrapingAndroid Scripting EnvironmentGoogle Code to support Mercurial version control systemPhasing In
Paging PyObjC GurusPython adopts the Mercurial version control systemSlicedPagehugger
LeopardReGrowl - A Growl Notification RelayHTMLSMS
Postbox on WINEIronPython on Android, Mono interop with DalvikGoogle DataGraphviz
The Sony ReaderEvernote's Killer ApplicationNAT-PMPStuff I Learned Today (But Didn't Really Want To)
Google ReaderMSNWiiEspresso
Python 3.0Monty Python Puts All Its Content On YouTube To Increase Sales Of Scarce GoodsHow to make money with free softwareHTTP
PlexSo now what?SpotlightUsing Automator to move all Opera tabs to Firefox
Cloudy SkiesEditraCloud WritingiPhone Applications in Python
EntertainernewspipeCreating Gradients Programmatically in PythonApp Engine Launcher for Mac OS X
Using vim as a Python IDESneaking Ruby Through Google App Engine (and Other Strictly Python Places)DAAPRegarding AppleScript on Mail.app and RSS Items
E15NodeBoxgheatThe Python Grimoire
AutomatorOn Yaki and Google App EngineGoogle App Enginemail-trends
Customers.split(...)SSHPatching .emlx filesRegarding iPods, Developers and Attention Spans
On Wiki PluginsAn update on my RSS setupWebsite thumbnails - Bluga.net WebThumbShelf - Context for MacOS - now in Python
SymbianData MiningShed Skin - An Optimizing Python to C++ CompilerA Month Of Seeing Spots
Half a Python (aka The Twist in Leopard's Python)Seam CarvingSpotted SnakesCSCW
Mercurial binary packages for LeopardLeopard Archive and InstallMore notes on Wide FinderPython Magazine
Bricks Ain't Hard, Life IsThe Python Grimoire, DustedAcornRandom Desktop Shot
Acorn - The OS X image editor we've been waiting forWhat's New in Python 3.0The nPhoneGrill Your Own Mother Tongue
Parsing WAP Profiles With BeautifulSoupVisio and IronPythonMidsummer Terminal Eveningspisa - Python PDF generator
Pure Python DynDNS.org Client/UpdaterPython Plugin for VoodooPadSpeedometer 2.5How to convert html entities to "real" unicode in Python
Yaki, MacFusion and TextMate - The Perfect Combo?Wiki Migration Notes - Site FeaturesWiki Migration Notes - Platform SelectionYaki Is Loose Upon The World
FlashPlateauThe Minimalist Remote Access KitOn Coda
PyObjC NSStatusBar SampleIn and OutMonday ModeWiki Editing, Mind Maps and Usenet
XboxGTDPicoStatsBlips On The Radar
Stuff I've Been Looking AtUtterly Random Third-Generation Mobile Python HacksGraphing and VisualizationGeek Mode
Brain In a BoxStuff I Probably Should Have Paid Attention To EarlierBeautiful SoupWeekend Coding
Sizzling SwitchingPython 2.5 on VistaRe-surfacedThe IMAP Protocol
On The Wii News ChanneliSightThings I Can't Get Around To Do, Part OneSunny
D-Bus Growl Listener for the Gnome DesktopTaming my RSS feeds, the Bayesian wayGmailHoliday, Google Wikis and Gnome Musings
DimmedScrape, And Ye Shall Be InformedMailArchive.pyTaking a SWIG at Carbon?
Trips Down Memory LaneOdds and EndsThe Little Python IMAP Archiver That Couldn'tJabber
Finally, Some Decent Vacation TimeWebDAVTag, You're ItEXIF
Tableau de BordPedro MeloRRDtoolRe-Plumbing Mail
AjaxA Spotty Take On Leopard's FeaturesIronPythonMac OS X
RelaxationMinor Notes on VoodooPad 3 and .MacYojimbo on the CheapComfy Football with Quicksilver and an Xbox
XBMCBuilding The Anti-WikiMacOpenGL
Random Trains of ThoughtThe Obligatory Five Random ThingsDrawBotRandom Updates
ApacheAsteriskMochiKitQuiet Evening
CLIMinor EarthquakesRandom non-Easter TopicsGetting The Hang Of Tuesdays
XMLWBXMLCoders' BlockParing Down
Ear DrummingCygwin/mySQLSide-SwitchingApple
A Few Notes on Fedora Core 5XgridPoor Man's Screen SharingRuby on the GTD Track
Breaking PHPResources:Combing SandTie Break
GPSWindowsMacBooks and Other Happenings - The Sequel10.4.4, Second Impressions
Odds and EndsThird Time's The CharmThe Reindeer Are ComingMidnight Oil
PlayStation PortableCatching UpRainy BreakThoughts On File Sharing
LDAPA Quiet Day...Double ImpactRandom Xcode Thoughts
Finally!Quiet TimeCatching UpMinimalist GPX Parser
One Day To GoMaemoPartially OfflineRandom Bits of News
...Must... Not... Use... PHP.GDRe-Thinking my Backup Strategyvcard2ldap
TurboGears - off the Rails?SnakeletsLomography, Automator StyleAfter the iPhone, Silence...
Yes, It's Always Like ThatA Lesson, Young JediBunch Of UpdatesThe Python Grimoire, Reborn
Cool NewsLinux/Applications/MeldSparklinesGetting the Image Size from Common File Formats
XSLTRandom TidbitsRelax, Me?So, The Moon Is Made Of Cheese After All
RSSBullet TimeGnome/Applications/WiFi RadarSun Day
Windows/Applications/WikidPadWorld DominationRAQ550/Packages/RPMWake-On-Lan
Five Things I Never Seem To Get DoneCooling OffWhew...Hell Froze Over, and My Intel Fried
Mice and CakeFive Almost-Killer Applications in Tablet FormMusings on File Management UIs3D
Slugs And Other VerminRAQ550/Packages/PHPSaturday Morning ReadingMail.app 0.2
Mail Indexers:Ruby Shower EpiphaniesThe Markup Thing, Rails, and Other Musings10.3.9 - Safari in Uncharted Lands
Back To WorkLast Round Of RelaxationP2P.icio.usMono
The Little Python That CouldCatching UpThree TidbitsUsing Growl, Rendezvous and Python for LAN notifications
Projects/PicoRendezvous2004 in ReviewHoliday LullFive-ish Bits Of News
Restful DayThe Hello Kitty iPodPubSubChilling Out
The Knights That Say GrowlIntroductionExtreme ShoppingBreathing Space
A Leisurely Stroll Through the NewsThree Snippets of Random InfoIPPractical Subversion
Slight OverloadCompletely Biased News CoverageHakuna MatataThe Longest Yard
My Third FedoraNearly BackA Bit More on TextMateDowser
Link DumpPOP3Odd Happenings of an Otherwise Unremarkable MondayDowsing - Even Better than del.icio.us.
NLSU2 BootstrappingThe Poor Man's Growl BridgeProgress Along a Lopsided RoadLinking Spree
Crumbs and DiffsRelaxation, at lastTalking To MyselfThe Wonders of the Linux Kernel
Summer OdditiesPlaceholderThe Linux PendulumGadgeteering
Random NotesLeisure LinksA Few LinksPyObjC 1.1 Is Out
Public ServiceRendezvousTime MicromanagementMonologue
Hell Is Other ResourcesBacklog SquaredMiscellaneous MusingsLeisure Time
Feedback LoopRacoonCreate PDFs with CoreGraphics and PythonVodafone 3G Launch
MIMELink ModeAmid The MidletsSliding In The Rain
Catching UpDancing With RendezvousThe PlayStation Portable Surfaces...UDP
Palm PhonesBrilliant Hack Of The DayDive Into Python 4.4The VeriSlime Gambit
TwistedThe Quest For Easier Information ManagementHow Not To Code for Embedded DevicesSSL VPNs
New ThemeMore Takes on the RSS-to-Email approachWinding DownEXIF and Spare Time
PackagingSomething new every dayGlider is now FreewareHoliwhat?
QuickiesZen By Any Other NameThink DifferentAggregate This
Minor TouchesIRCMore DowntimeBedtime Wierdness
RAQ550/Packages/RPM4Work In ProgressI'm Steve, and I'm a Super-Villain