Source code for nxpy.core.file_object

# nxpy.core package ----------------------------------------------------------

# Copyright Nicola Musatti 2008 - 2014
# Use, modification, and distribution are subject to the Boost Software
# License, Version 1.0. (See accompanying file LICENSE.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)

# See http://nxpy.sourceforge.net for library home page. ---------------------

r"""
Helper classes for the implementation of read-only and writable file objects that forward calls
to an actual file object variable.

These smell a lot of statically typed languages and are likely to be removed or changed a lot in a
future release.

"""

import os


[docs]class ReadOnlyFileObject(object): r""" Implement the non modifying portion of the file object protocol by delegating to another file object. Subclass and override as needed. """
[docs] def __init__(self, file_=None): r"""Set the delegate file object.""" self.setFile(file_)
@property
[docs] def closed(self): return self._file.closed
@property
[docs] def encoding(self): return self._file.encoding
@property
[docs] def mode(self): return self._file.mode
@property
[docs] def name(self): return self._file.name
@property
[docs] def newlines(self): return self._file.newlines
@property
[docs] def softspace(self): return self._file.softspace
[docs] def setFile(self, file_): r"""Set the delegate file object.""" self._file = file_
[docs] def close(self): self._file.close()
[docs] def flush(self): self._file.flush()
[docs] def __iter__(self): return self
[docs] def next(self): return self._file.next()
[docs] def read(self, size=-1): return self._file.read(size)
[docs] def readline(self, size=-1): return self._file.readline(size)
[docs] def readlines(self, sizehint=None): if sizehint is None: return self._file.readlines() else: return self._file.readlines(sizehint)
[docs] def xreadlines(self): return self._file.xreadlines()
[docs] def seek(self, offset, whence=os.SEEK_SET): return self._file.seek(offset, whence)
[docs] def tell(self): return self._file.tell()
[docs]class WritableFileObject(ReadOnlyFileObject): r""" Implement the file object protocol by delegating to another file object. Subclass and override as needed. """
[docs] def __init__(self, file_=None): super(WritableFileObject, self).__init__(file_)
[docs] def truncate(self, size=None): if size is None: self._file.truncate() else: self._file.truncate(size)
[docs] def write(self, str_): self._file.write(str_)
[docs] def writelines(self, sequence): self._file.writelines(sequence)

This Project