0.3: * New FS implementations: * FTPFS: access a plain old FTP server * S3FS: access remote files stored in Amazon S3 * RPCFS: access remote files using a simple XML-RPC protocol * SFTPFS: access remote files on a SFTP server * WrapFS: filesystem that wraps an FS object and transparently modifies its contents (think encryption, compression, ...) * LazyFS: lazily instaniate an FS object the first time it is used * ReadOnlyFS: a WrapFS that makes an fs read-only * Ability to expose FS objects to the outside world: * expose.fuse: expose an FS object using FUSE * expose.xmlrpc: expose an FS object a simple XML-RPC protocol * expose.sftp: expose an FS object SFTP * expose.django_storage: convert FS object to Django Storage object * Extended attribute support (getxattr/setxattr/delxattr/listxattrs) * Change watching support (add_watcher/del_watcher) * Insist on unicode paths throughout: * output paths are always unicode * bytestring input paths are decoded as early as possible * Renamed "fs.helpers" to "fs.path", and renamed the contained functions to match those offered by os.path * fs.remote: utilities for implementing FS classes that interface with a remote filesystem * fs.errors: updated exception hierarchy, with support for converting to/from standard OSError instances * Added cache_hint method to base.py * Added settimes method to base implementation * New implementation of print_fs, accessible through tree method on base class 0.4: * New FS implementations (under fs.contrib): * BigFS: read contents of a BIG file (C&C game file format) * DAVFS: access remote files stored on a WebDAV server * New fs.expose implementations: * dokan: mount an FS object as a drive using Dokan (win32-only) * Modified listdir and walk methods to accept callables as well as strings for wildcards. * Added listdirinfo method, which retrieves both the entry names and the corresponding info dicts in a single operation. * Fixed operation of OSFS on win32 when it points to the root of a drive. * Made SubFS a subclass of WrapFS, and moved it into its own module at fs.wrapfs.subfs. * Fix OSFS.add_watcher on linux platforms; previous version would cancel any watchers when a new one was added.