Welcome to Curdling

Curdling is a command line tool for managing Python packages.

It was designed to find, build and cache all the dependencies your application needs to start up and run smoothly. A solid concurrency model allows curdling to execute tasks asynchronously, resulting in a considerable improve in speed over pip and easy_install.

The content of this website is divided into two main parts. The Usage teaches you how to use with curdling to manage your packages. The Design and Implementation section shows in depth how curdling works.

See it rolling

Click the terminal to play (also available at asciinema)

Noticeable Features

  • Robust Concurrent model: it’s FAST!
  • Really good Error Handling and Report;
  • Conflict resolution for repeated requirements;
  • Distributed Cache System that includes a built-in cache server;
  • Simple command line interface;
  • Usage of bleeding edge technology available in the Python community;
  • Concurrent and Parallel, but Ctrl-C still works;

Why writing curdling instead of using pip?

Pip is awesome! I’ve been using it for managing my Python packages for a while now. However, its code base is just too complex, which makes it hard to iterate fast on its development and implement exciting new features in a reasonable time.

Curdling was initially developed to decrease the time taken by dependency installation in the Continuous Integration Server that tests software at Yipit. We managed to decrease the build time ~70% by replacing pip with Curdling.

The improvements were so noticeable because, among the 167 libraries we depend to build our software we have lxml, numpy, pygmagic, pycrypto, gevent etc.

Curdling is faster than pip because it caches the binary packages compiled when the setup.py script is ran. Curdling also provides a Distributed Cache, so you can share your compiled packages with other environments.

So, when we add a new dependency to our requirements.txt file, curdling will just try to retrieve the new package from the cache. If the package is not cached in the first run, curdling will build it on the CI and upload to the cache and the package will be cached and we’ll just use the cached version the next time we need to install it.


$ easy_install curdling

About Curdling

Curdling is a concurrent package manager for Python. It helps developers to find, build, install and maintain dependencies.

Useful Links

This Page