[Twisted-Python] Bloody Twisted VFS

Andrew Bennetts andrew-twisted at puzzling.org
Wed Jul 9 19:34:56 EDT 2008


Andy Gayton wrote:
[...]
> Its a general solution for re-decorating the return result of methods
> on decorated objects, which return new instances of themselves.  Which
> is particularly handy for decorating tree node like objects, which can
> return new child instances.
> 
> For example:
> 
> root = FilePathNode(FilePath('/tmp'))
> root = ReadOnly(root)
> root = ForceUser(root, 'nobody')
> 
> root.child('foo') # should return a read only node for /tmp/foo, which
> creates new files as user nobody.
> 
> It'd be awesome to provide support for this in a simpler way.

For what it's worth, bzrlib.transport.decorator provides a similar facility
for bzrlib.transport.  It's used to implement e.g. ReadonlyTransportDecorator.
There's also a ChrootTransport, which is essentially a decorator too (although
it doesn't use bzrlib.transport.decorator because the generic decorator facility
didn't provide a sane way to track what the root of the chroot should be).

We also have lots of decorators just for testing, e.g.
FakeNFSTransportDecorator, UnlistableTransportDecorator,
FakeVFATTransportDecorator, etc.

-Andrew.





More information about the Twisted-Python mailing list