'Context manager to create a file. We create a temporary file first, and
then return a DiskFileWriter object to encapsulate the state.
:param size: optional initial size of file to explicitly allocate on
disk
:raises DiskFileNoSpace: if a size is specified and allocation fails'

@contextmanager
def create(self, size=None):

    fp = moves.cStringIO()
    try:
        (yield DiskFileWriter(self._filesystem, self._name, fp))
    finally:
        del fp
