Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Python interface for libuv

Accept '' as a valid address to bind to

Translate it into INADDR_ANY, like Python's socket module does. Well,
not quite, because the socket module knows the family feborehand, so it
can also bind to the 'any' address for IPv6, but in our case we don't
know, so we bind to IPv4. Because legacy.
latest commit 33e776ba9c
Saúl Ibarra Corretgé authored
Octocat-spinner-32 docs Merge branch 'v0.10'
Octocat-spinner-32 examples Fix
Octocat-spinner-32 src Accept '' as a valid address to bind to
Octocat-spinner-32 tests Fixed process noargs test on Windows.
Octocat-spinner-32 .gitignore Added *.pyd files to gitignore
Octocat-spinner-32 .travis.yml Always run tests in the correct directory.
Octocat-spinner-32 AUTHORS Update AUTHORS
Octocat-spinner-32 ChangeLog Merge branch 'v0.10'
Octocat-spinner-32 LICENSE Added LICENSE
Octocat-spinner-32 Added setup.cfg to MANIFEST
Octocat-spinner-32 README.rst Add badge with PyPI published version and link
Octocat-spinner-32 TODO Updated TODO
Octocat-spinner-32 build_inplace Pass along any arguments passed to build_inplace
Octocat-spinner-32 setup.cfg Always run tests in the correct directory.
Octocat-spinner-32 Merge branch 'v0.10'
Octocat-spinner-32 Raised libuv revision
Octocat-spinner-32 Specify pypi server in the release task
Octocat-spinner-32 tox.ini Updated command to run tests

pyuv: Python interface for libuv

pyuv is a Python module which provides an interface to libuv. libuv is a high performance asynchronous networking library, used as the platform layer for NodeJS.

libuv is written and maintained by Joyent Inc. and contributors. It’s built on top of epoll/kequeue/event ports/etc on Unix and IOCP on Windows systems providing a consistent API on top of them.

pyuv's features:

  • Non-blocking TCP sockets
  • Non-blocking named pipes
  • UDP support (including multicast)
  • Timers
  • Child process spawning
  • Asynchronous DNS resolution (getaddrinfo)
  • Asynchronous file system APIs
  • High resolution time
  • System memory information
  • System CPUs information
  • Network interfaces information
  • Thread pool scheduling
  • ANSI escape code controlled TTY
  • File system events (inotify style and stat based)
  • IPC and TCP socket sharing between processes
  • Arbitrary file descriptor polling
  • Thread synchronization primitives

CI status

Stable branch (v0.10):



pyuv follows the versioning scheme used by Node and libuv, that is, odd numbered releases are considered unstable and even numbered releases stable. This doesn't necessarily mean that an odd numbered release is supposed to crash, but the API may change between stable releases.

The so called unstable releases will not be released on PyPI, as that would confuse users. PyPI will always contain the latest stable build. All versions (both stable and unstable) are downloadable from the GitHub tags page.


pyuv can be installed via pip as follows:

pip install pyuv

If you'd like to use the development version use the following command:

pip install pyuv==dev


Get the source:

git clone



Mac OSX:

(XCode needs to be installed)
export ARCHFLAGS="-arch x86_64"

Microsoft Windows (with Visual Studio):

python build_ext --inplace

Running the test suite

There are several ways of running the test ruite:

  • Run the test with the current Python interpreter:

    From the toplevel directory, run: nosetests -v

  • Use Tox to run the test suite in several virtualenvs with several interpreters

    From the toplevel directory, run: tox -e py26,py27,py32 this will run the test suite on Python 2.6, 2.7 and 3.2 (you'll need to have them installed beforehand)


Saúl Ibarra Corretgé <>


Unless stated otherwise on-file pyuv uses the MIT license, check LICENSE file.

Python versions

Python >= 2.6 is supported. Yes, that includes Python 3 :-)


If you'd like to contribute, fork the project, make a patch and send a pull request. Have a look at the surrounding code and please, make yours look alike :-)

Something went wrong with that request. Please try again.