I’m happy to announce two new pyuv releases today: pyuv 0.10.5 (stable) and 0.11.0 (unstable). Why two releases? For those who may not know, pyuv follows the NodeJS release cycle, that is, odd numbered releases are the so called “unstable” releases, while the even numbered releases are “stable”.
pyuv 0.11.0 includes some heavy refactoring of the filesystem operations, which unfortunately are not backwards compatible, but I hope it’s for the best:
In pyuv 0.10x this is the way to stat a file asynchronously:
def cb(loop, path, result, error): if error is None: print result # ... pyuv.fs.stat(loop, 'test.py', callback=cb)
And here is the equivalent in pyuv 0.11:
def cb(req): if req.error is None: print result # ... req = pyuv.fs.stat(loop, 'test.py', callback=cb)
All filesystem operations now get a single argument in the callback: the FSRequest object which was returned to the caller when the function was initially called. The loop, path, result and error are now attributes of the request object. Moreover, the request object now has an instance dictionary, so you can attach any attribute to it and use it later:
def cb(req): assert req.foo == 'foo' if req.error is None: print result # ... req = pyuv.fs.stat(loop, 'test.py', callback=cb) req.foo = 'foo'
There have been other big internal changes due to changes in libuv itself, but those are not visible in pyuv since it provides a class-level abstraction.
The next stable release will be pyuv 0.12.0, right when Node 0.12 is launched. Until then 0.10 will remain as the stable branch, and the one installable through PyPI, those of you interested in the latest and the greatest, go fetch master on GitHub 🙂