python

click - Just stumbled upon this, this finally looks like a real time saver - many other libraries for command line integration were so cumbersome that I couldn't see many advantages over the standard library provided stuff. But this already seems quite compact.

2.0 Series — IPython 2.0.0 documentation. Very cool. This is slowly getting closer to the surface of Mathematica. Unfortunately, the strong focus on the browser - I can understand why, but I'm not really enthusiastic about it. I would prefer it to be a more integrated solution in the normal GUI. HTML as a rendering engine is fine, but the browser as a user interface is still quite clunky compared to an optimized native environment. But still, really cool what's happening here.

kachayev/fn.py · GitHub. Various small tools to program more functionally in Python. Interesting for me mainly the persistent data structures, I have come to appreciate these with Clojure.

lihaoyi/macropy. From my old Lisp days, I'm still a fan of macros - simply because configurable programming languages allow for a significantly higher level of description. Okay, this often comes at the expense of understandability, because a reader not only has to know the language and the libraries, but now also the macros. Nevertheless, for some purposes I still find macros very practical. Whether I would want to integrate them into Python, as this project does, I'm not sure yet - but the approach via the AST is at least interesting.

Python Data Analysis Library — pandas: Python Data Analysis Library. Hmm, I must have heard of this before, but I just noticed that it's included in Anaconda. And therefore, I should really look into it soon, as there are some data deserts that I could explore with it.

Quepy: A Python framework to transform natural language questions to queries.. Cool - you can feed English questions into it and the system forms a structured query from them and then provides answers from Freebase or DBPedia. Quepy is the part that formulates the query from the natural language. So to speak, something like Wolfram Alpha if you only look at the knowledge queries.

Anaconda. Hmm, had I already? No idea. It is a Python installation that comes with a stack of scientific modules (NumPy, Matplotlib, PyLab and the like) and also delivers a number of useful modules. Plus IPython with the usual tools - so notebooks and QTConsole - and a command line tool for package management. The nice thing: the installation goes into its own path, so it does not necessarily affect another Python installation.

Meet RegExpBuilder: Verbal Expressions rich, older cousin - The Changelog. I'm an old Snobol and Icon fan - and one of the features of both languages was the quite readable sublanguage for text patterns. What is usually done today with then rather compact to cryptic regular expressions. So I'm happy to come across a project that compiles the much more readable expression forms as usual in Icon into regular expressions. Ok, the goal-oriented execution in Snobol and Icon and the inherent backtracking is of course missing, so it's only syntactic. Still nice.

PyPy.js Update: A Proof-of-Concept JIT. Braintwister. Python using PyPy on JavaScript via asm.js. With active JIT.

washort/parsley. Had I mentioned this before? Doesn't matter. A PEG implementation in Python. Builds parsers for languages based on quite readable language descriptions (similar to the good old BNF).

lihaoyi/macropy · GitHub. I've been a fan of syntactic macros since my Lisp days. Sure, metaprogramming in Python takes you a step forward, but real macros are just something special. So I should definitely check this out.

Pudb 2012.3: CUI Debugger for Python. On servers, you don't always have the option to start heavy IDEs or even have graphical displays. The alternative - debugging with pdb in the console - is not always great either. And remote debugging doesn't always work as desired depending on firewalls and gateway computers. It's nice when someone takes the trouble to build CUIs for debuggers.

The Larch Environment. Another approach to visual programming, but unlike many other approaches, it is a mix of textual Python and visual representation of code and data structures. Looks quite interesting as an environment in which to experiment with elements of the language.

Blaze — Blaze 0.1-dev documentation. Hmm, I could have sworn I already had that, but never mind. Blaze is essentially a compiler that transforms numpy-like code and passes it to runtimes for evaluation. Specifically, it also supports many parallel runtimes and parallelization of evaluations. The data types are also significantly more developed than in numpy - the authors themselves consider Blaze to be the natural evolution of numpy. What fascinates me about it is the integration of a quite extensively developed array programming library into Python - since I've been playing around with J, I find array languages fascinating.

imwilsonxu/fbone · GitHub. Not so uncool at all. I'm actually a Djangonaut, but Flask has always interested me a bit, as it's quite a good basis for more compact projects. With the integration of HTML5 Boilerplate and CSS Bootstrap, this could also be interesting for small web projects with frontend. Although Flask offers enough room to grow to realize larger things - it's just that for larger things I often still reach for Django. But especially for the typical web service with additional HTML presentation of the data, this can really be practical.

Cubes 0.10.1 Released – Multiple Hierarchies Data Brewery. I think I've mentioned this before, but hey, TV repeats things all the time. And it looks even better, what you can do with it. I really need to take a closer look, there's a project where I think I could use it. I need to check how to integrate it, though, because my project uses Django and its ORM, and Cubes uses SQLAlchemy. It could be interesting to mix them.

Comtypes: How Dropbox learned to stop worrying and love the COM. Filed for future use. Accessing COM APIs in Windows from Python with fairly lean means. Could be interesting for one or the other admin tool in the company.

DataNitro. If you want to program your Excel spreadsheet in Python, this is the place to go. Might be interesting for one or the other number cruncher who uses Excel as a frontend.

Pyjnius: Accessing Java classes from Python | Txzone. Very interesting side project of Kivy - with this you can quite easily integrate and use Java classes in Python without having to switch to Jython. It is based on Cython and JNI and integrates directly into native Python. Kivy is slowly becoming a real alternative for Android development that I should take a closer look at.

toastdriven/django-tastypie. I think I've mentioned this before, but it doesn't matter, it still looks interesting - an alternative to django-piston with significantly more functionality (for example, quite extensive options for authentication and authorization). What does it do? REST interfaces for Django models including their relations. In various formats (XML, JSON, YAML).

Online Python Tutor - Learn programming by visualizing code execution. Great if you're learning Python as a beginner and want visual support to understand what the code is actually doing.

pyMCU - The Python Controlled Microcontroller. Alternative for those who would rather use Python instead of Arduino and its Processing-based development environment. Since I've been playing around with Android, Java has lost much of its terror for me; you get used to everything. Presumably, my COBOL experience from the first 10 years of my career helps here; once you've been through that, almost everything is acceptable.

amoffat/sh. Cool little module that integrates external commands as if they were functions. You simply call a function git with a few named parameters and get the git output as a string. Makes shell scripts in Python much more compact and readable. Exactly the right thing for sysadmins.

David Waring - Remember the Milk CLI. I switched from OmniFocus to RTM because OmniFocus is a data silo on Apple systems - and especially for tasks, I don't want to be tied to a platform but be able to move to any arbitrary one. And RTM is the only service I have found so far where you can define recurring events with appropriate power (specifically, the "repeat after X units after checking off" is important). Well, here there is a Python CLI solution with which you can even use the Linux command line for your tasks. And with that, todo.sh is probably done for me, because that way everything ends up in a database.

Cameron Lairds personal notes on varieties of Python implementation. And if by now there are too many Python variants to keep track of: someone has already done that, keeping track. And yes, there is a whole bunch of different distributions and implementations.

Numba vs Cython - Pythonic Perambulations. Another alternative to Cython and PyPy, with which you can marry LLVM and Python for performance gains. Here, real Python code is accelerated without modification via decorators, which is an extension to normal Python, so all libraries remain available and only the performance-critical routines are post-processed with LLVM.

LuminosoInsight/python-ftfy. A handy little tool that cleans up various inconsistencies in text encodings after something has gone wrong. This is of course no substitute for correct use of encodings in Python, but sometimes you get your input from external sources (or have legacy data from old programs from times when the whole Unicode stuff was not yet so well developed) and have no influence on how the data looks - in that case, this is a very practical little tool.

kmike/marisa-trie. Very practical - there are quite a few things done in Python with Dicts that actually belong in other structures. Especially the prefix search and the search for existing prefixes is practical. And all of this with a C extension also quite fast.

mitotic/otrace. Interesting alternative Python debugger designed for debugging and tracing multithreading applications. It's less about stepping sequentially through the Python code and more about analyzing an environment that dynamically changes through threads (the normal Python debugger is a bit cumbersome here).

Create a package for Android for Kivy. I think I need to take a closer look at Kivy. They are now working with Python for Android, their own Python distribution that brings a customized interpreter for Android and a coupling via Cython, NDK, and JNI to the Android SDK. This way, you can produce real APKs that can be installed normally on devices - but write everything that makes up the application itself in Python. Of course, the question remains how fast it will run - Python is interpreted after all. But it would definitely be interesting for tools, especially since you can also run Kivy applications more or less directly under desktop systems.

Plop: Low-overhead profiling for Python. I need to take a closer look at this, it could be very interesting for the company's servers, especially the low profiling overhead of only 2% sounds exciting. And the visualization is definitely one of the better ones for Python profilers.

ErlPort - Erlang port protocol for Python. A somewhat different approach to distributed communication is this module, which simply implements Erlang's built-in communication tools (ports and terms). With this, you can build systems that use Python or Erlang as the implementation language, depending on your needs.

Hurricane. Sounds interesting, it's a distributed messaging system that works with various languages and thus offers integration of different systems. Among other things, it includes Python with WSGI and Ruby with Rails, making a distributed system based on Rails and Django conceivable. Additionally, there is a process manager, with which the processes themselves only need to handle standard I/O and then can be directly managed by Hurricane. I could imagine using this for one or the other project at the company.

Jarvis. Someone is working on something like Light Table for Python (Light Table has also promised Python support, but so far there's only a preview for Clojure). Looks quite interesting and finally brings some fresh air into interactive environments for programming languages.

Make runfcgi fail when database connection is open before fork. This is something I've been chasing for ages, most recently in a few pretty important projects. Flup works by first initializing the WSGI application and then making the forks for the workers with this initialized WSGI application. Unfortunately, we have database accesses during application initialization - as a result, the base process already has an open database connection, and each fork copies these data. But the socket of the connection doesn't go with it - the new process just thinks it's connected, but it's not. Accesses from the new processes then fail with an exception. In the linked patch, you can also replace the raise on the exception with connection.connection = None. This simply discards the connection that is already defective and always builds a new connection in new processes. With this, we have at least been able to fix this in a production environment (with psycopg2) and are optimistic that it will also help in the environment with pyodbc.

ronnix/fabtools. Looks interesting - a few tools for Fabric with which you can manage simple system packages and Python packages (also within virtual environments). Should take a look, could simplify a few things when initializing work environments. However, Vagrant currently only uses Chef and Puppet and not Fabric, if I remember correctly.

#18251 multithreading deadlock in django.models.loading.get_apps – Django. And another thing that might affect us - race conditions between Django threads during the initialization of Django applications. There's already a patch for this that fixes it in the Django internals.

Using SELECT FOR UPDATE in Django. That's what it's all about. Because the Django ORM cannot currently generate a SELECT FOR UPDATE, but sometimes you just need it.

RQ: Simple job queues for Python. Really simple - you only need a Redis server and the module and that's it more or less. Simple function calls are thrown into the queue, executed and results returned. No big overhead in the code.

TypeQuery. Generic functions for Python. Only a simple variant with a restricted target range, but definitely worth considering for some things. Currently still single-dispatch on the first argument, but multiple dispatch is planned. At the moment, it is therefore pretty much identical in function to simplegeneric by PJE. And very similar to my multidispatch, in which I try to replicate the model of Clojure generic methods. I really should work on multidispatch again. Or just play more with clojure-py, then I can use "the real thing" right away.

Embedding Python in Objective-C: Part 2. An interesting project that embeds Python in Objective-C projects and allows direct connections between Python and Objective-C code via automatically generated bridge modules. I might check this out at some point, I still have a game project that could benefit from this.

jodal/pykka. An actor library for Python, based on threads and optionally on GEvent. Looks quite good and could be quite practical for communicating processes if the actor model fits. Perhaps one could also use something like this as a basis to run my Linda Tuplespace in a distributed manner.

Jython 2.7 alpha1 released!. Wow, it took a long time, but now at least the three major alternative Python runtimes are all at 2.7 (IronPython, PyPy and now Jython). I hope that Jython 2.7 has gained significantly in performance, because otherwise it is far behind in comparison - my last tests were rather depressing (2-3 times slower than CPython).

cocoa-python - Port of Objective-C runtime to Python using ctypes. It's actually all in the link text. Interesting because the author uses it to write a port of Pyglet that does not require PyOBJC and would therefore be completely python-only source code.

Plumbum: Shell Combinators and More — Plumbum: Shell Combinators. Looks interesting and much more thought out than some alternatives I've looked at (and much more expanded than shutil+glob).

PyPy Status Blog: STM update: back to threads?. The discussion and development continue to progress - and the discussion is returning to the old thread model, only expanded with a function to define atomic blocks of code. And all of this in such a way that the code would even run under normal CPython (though then of course without the advantages of STM, since there is no STM in CPython, there is still the GIL) but still makes sense to use multicore architectures. I like it more and more and I hope it will soon land in the PyPy Main Branch.

dirq 1.1.2 documentation. Hey, I was recently looking for something like this - a queue based on the file system. The advantage: simplest persistence and good "debugging" by simply poking around in the file system. The disadvantage is that queues often need to perform some operations atomically - and this can become a bit tricky if you want to get it right. This is a port of an already existing Perl module, so the chances that most of the childhood diseases are out are quite high. The API, in any case, looks nicely simple. Definitely worth a closer look.

pycounters. I need to check this out, it allows you to easily integrate counters into a project that provide data on things like function calls or similar - basically something like the Windows Performance Counters, but for Python projects.

Virtualenv-clone 0.2.2 : Python Package Index. Not yet tried, but according to the description it copies virtualenv environments and fixes import paths, egg files, .pth contents and scripts. And it should work more completely than relocatable virtualenvs.

RQ: Documentation. Hmm, python-job-queue based on Redis with a rather simple interface. Could be an interesting alternative to Celery.