Know the wheel binary package

"Abstract

This PEP describes a built-package format for Python called "wheel".

A wheel is a ZIP-format archive with a specially formatted file name and the .whl extension. It contains a single distribution nearly as it would be installed according to PEP 376 with a particular installation scheme. Although a specialized installer is recommended, a wheel file may be installed by simply unpacking into site-packages with the standard 'unzip' tool while preserving enough information to spread its contents out onto their final paths at any later time.

PEP Acceptance

This PEP was accepted, and the defined wheel version updated to 1.0, by Nick Coghlan on 16th February, 2013 [1]

Rationale

Python needs a package format that is easier to install than sdist. Python's sdist packages are defined by and require the distutils and setuptools build systems, running arbitrary code to build-and-install, and re-compile, code just so it can be installed into a new virtualenv. This system of conflating build-install is slow, hard to maintain, and hinders innovation in both build systems and installers.

Wheel attempts to remedy these problems by providing a simpler interface between the build system and the installer. The wheel binary package format frees installers from having to know about the build system, saves time by amortizing compile time over many installations, and removes the need to install a build system in the target environment..."

http://www.python.org/dev/peps/pep-0427/

more ...

Simple and Fast jobs with python-rq and rq-dashboard

"RQ (Redis Queue) is a simple Python library for queueing jobs and processing them in the background with workers. It is backed by Redis and it is designed to have a low barrier to entry. It should be integrated in your web stack easily..."

http://python-rq.org "rq-dashboard is a general purpose, lightweight, Flask-based web front-end to monitor your RQ queues, jobs, and workers in realtime..."

https://github.com/nvie/rq-dashboard

more ...

Learn python playing at www.checkio.org

"There you can learn Python coding, try yourself in solving various kinds of problems and share your ideas with others. Moreover, you can consider original solutions of other users, exchange opinions and find new friends.

If you are just starting with Python – CheckIO is a great chance for you to learn the basics and get a rich practice in solving different tasks. If you’re an experienced coder, here you’ll find an exciting opportunity to perfect your skills and learn new alternative logics from others. On CheckIO you can not only resolve the existing tasks, but also provide your own ones and even get points for them. Enjoy the possibility of playing logical games, participating in exciting competitions and share your success with friends inCheckIO.org!"

http://www.checkio.org

more ...

mediacore - A video, audio and podcast publication platform written in Python.

"MediaCore CE provides unparalleled organization, statistics, accessibility, and scalability. Well-designed and well-engineered it is the ideal solution for any organization with large collections of video or audio. Run a powerful video site built in Python on your own infrastructure..."

http://mediacorecommunity.org https://github.com/mediacore/mediacore-community

more ...

Polysh - Aggregating several remote shells into one

I've been using this tool for 2 years and it is pretty stable so far. The project was rename from gsh to Polysh, is incredible how helpful it can be when you need to manage more than 500 or even 1000 servers at once.

"Polysh is a tool to aggregate several remote shells into one. It is used to launch an interactive remote shell on many machines at once. It is written in Python and requires Python ≥ 2.4."

http://guichaz.free.fr/polysh/

more ...

Enter the Pyed Piper via (@deferraz)

"The pyed piper, or pyp, is a python-centric command line text manipulation tool. It allows you to format, replace, augment and otherwise mangle text using standard python syntax with a few golden-oldie tricks from unix commands of the past. You can pipe data into pyp just like any other unix command line tool. After it's in, you can use the standard repertoire of python string and list methods to modify the text..."

http://code.google.com/p/pyp/wiki/intro

more ...

Batch Acknowledged Pipelines with ZeroMQ

"Parallel processing with a task ventilator is a common pattern with ZeroMQ.  The basics of this pattern are outlined in the “Divide and Conquer” section of the ZeroMQ guide.  The pattern consists of the following components:

  • A task ventilator that produces tasks.
  • A number of workers that do the processing work.
  • A sink that collects results from the worker processes..."

http://blog.aggregateknowledge.com/tag/pyzmq

more ...

An implementation of Clojure in pure Python

"Why Python?

It is our belief that static virtual machines make very poor runtimes for dynamic languages. They constrain the languages to their view of what the "world should look like" and limit the options available to language implementors. We are attempting to prove this by writing an implementation of Clojure that runs on the Python VM. We believe that with a proper dynamic JIT (like pypy) a version of clojure running on a dynamic VM can outperform its JVM and CLR counterparts.

Aside from that, there are many Python libraries like PySide (Qt GUI), numpy, scipy, and stackless that do not have JVM counterparts, or at least the Python implementations are easier to use and learn. clojure-py will integrate tightly with thy Python VM and will be able to use all of these libraries..."

https://github.com/halgari/clojure-py

more ...

What will pypy do for your website? Benchmarking python web servers on pypy and cpython

"There are currently quite a few different ways of developing a web application in python.  When you add in how you deploy the application as well, there are even more choices.  In terms of application frameworks, you have at least:

  • Django
  • twisted.web
  • flask
  • bottle
  • cyclone
  • tornado
  • pyramid

Then these can be run using many different servers, including:

  • tornado
  • twisted
  • cyclone
  • wsgiref
  • rocket
  • cherrypy
  • gunicorn
  • fapws
  • google app engine
  • gevent

And many more.  Typically, these take one of several approaches. Asynchronous either explicit (cyclone, tornado) or via monkey patch and event loop (gevent); threaded such as rocket, or written in C to use an event loop.  In addition to this, you now have several different pythons for deployment:

  • cpython
  • jython
  • pypy

At some point, these servers are generally dealing with asynchronous event loops or using threading.  The two approaches to handling this are either to program in a normal style (gevent) or to explicitly use event based programming (eg cyclone).  The rise of javascript and node.js has seen event based programming becoming more mainstream.  I wanted to find out which of these many combinations would perform best, and in particular what effect using pypy as the interpreter would have on the performance..."

http://casbon.me/what-will-pypy-do-for-your-website-benchmarki

more ...

Python bindings for iptables

"Iptables is the tool that is used to manage netfilter, the standard packet filtering and manipulation framework under Linux. As the iptables manpage puts it:

Iptables is used to set up, maintain, and inspect the tables of IPv4 packet filter rules in the Linux kernel.

Several different tables may be defined.

Each table contains a number of built-in chains and may also contain user- defined chains.

Each chain is a list of rules which can match a set of packets. Each rule specifies what to do with a packet that matches. This is called a target, which may be a jump to a user-defined chain in the same table.

Python-iptables provides python bindings to iptables under Linux. Interoperability with iptables is achieved via using the iptables C libraries (libiptc, libxtables, and the iptables extensions), not calling the iptables binary and parsing its output..."

https://github.com/ldx/python-iptables

more ...