Metadata-Version: 1.0
Name: filelike
Version: 0.2.0
Summary: Classes for creating and wrapping file-like objects
Home-page: UNKNOWN
Author: Ryan Kelly
Author-email: ryan@rfk.id.au
License: LGPL
Description: 
        The filelike module takes care of the groundwork for implementing and
        handling file-like objects that implement a rich file-like interface,
        including reading, writing, and iteration.  It also provides a number
        of useful classes built on top of this functionality.
        
        The main class is FileLikeBase, which implements the entire file-like
        interface (currently minus seek() and tell()) on top of primitive
        _read() and _write() methods.  Subclasses may implement either or
        both of these methods to obtain all the higher-level file behaviors.
        
        Two methods are provided for when code expects to deal with file-like objects:
        
        * is_filelike(obj):   checks that an object is file-like
        * to_filelike(obj):   wraps a variety of objects in a file-like interface
        
        
        The "wrappers" subpackage contains a collection of useful classes built on
        top of this framework.  These include:
        
        * TransFile:  pass file contents through an arbitrary translation
        function (e.g. compression, encryption, ...)
        
        * FixedBlockSizeFile:  ensure all read/write requests are aligned with
        a given blocksize
        
        * DecryptFile:    on-the-fly reading and writing to an encrypted file
        (using PEP272 cipher API)
        
        As an example of the type of thing this module is designed to achieve, here's
        an example of using the DecryptFile class to transparently access an encrypted
        file:
        
        # Create the decryption key
        from Crypto.Cipher import DES
        cipher = DES.new('abcdefgh',DES.MODE_ECB)
        # Open the encrypted file
        from filelike.wrappers import DecryptFile
        f = DecryptFile(file("some_encrypted_file.bin","r"),cipher)
        
        The object in <f> now behaves as a file-like object, transparently decrypting
        the file on-the-fly as it is read.
        
        The "pipeline" subpackage contains facilities for composing these wrappers
        in the form of a unix pipeline.  In this example, <f> will read the
        first five lines of an encrypted file:
        
        from filelike.pipeline import DecryptFile, Head
        f = file("some_encrypted_file.bin") > DecryptFile(cipher) | Head(lines=5)
        
        
Keywords: file filelike file-like filter
Platform: UNKNOWN
