zope.filerepresentation

Latest release Supported Python versions https://github.com/zopefoundation/zope.filerepresentation/actions/workflows/tests.yml/badge.svg https://coveralls.io/repos/github/zopefoundation/zope.filerepresentation/badge.svg?branch=master Documentation Status

The interfaces defined here are used for file-system and file-system-like representations of objects, such as file-system synchronization, FTP, PUT, and WebDAV.

Documentation is hosted at https://zopefilerepresentation.readthedocs.io/

Contents:

zope.filerepresentation API

File-system representation interfaces

The interfaces defined here are used for file-system and file-system-like representations of objects, such as file-system synchronization, FTP, PUT, and WebDAV.

There are three issues we need to deal with:

  • File system representation

    Every object is either a directory or a file.

  • Properties

    There are two kinds of properties:

    • Data properties

      Data properties are handled directly by the object implementation.

    • Meta-data properties

      Meta data properties are handled via annotations.

  • Completeness

    We must have a complete lossless data representation for file-system synchronization. This is achieved through serialization of:

    • All annotations (not just properties), and

    • Extra data.

Strategies for common access mechanisms:

  • FTP

    For getting directory info (static) information:

    • Use Zope DublinCore to get modification times

    • Show as readable if we can access a read method.

    • Show as writable if we can access a write method.

  • FTP and WebDAV

    • Treat as a directory if there is an adapter to IReadDirectory. Treat as a file otherwise.

    • For creating objects:

      • Directories:

        Look for an IDirectoryFactory adapter.

      • Files

        First look for a IFileFactory adapter with a name that is the same as the extention (e.g. “.pt”).

        Then look for an unnamed IFileFactory adapter.

  • File-system synchronization

    Because this must be lossless, we will use class-based adapters for this, but we want to make it as easy as possible to use other adapters as well.

    For reading, there must be a class adapter to IReadSync. We will then apply rules similar to those above.

Changes

6.0 (2023-01-14)

  • Drop support for Python 2.7, 3.5, 3.6.

  • Add support for Python 3.9, 3.10, 3.11.

5.0.0 (2020-03-31)

  • Drop support for Python 3.4.

  • Add support for Python 3.7 and 3.8.

  • Ensure all objects have a consistent interface resolution order. See issue 7.

4.2.0 (2017-08-10)

  • Add support for Python 3.5 and 3.6.

  • Drop support for Python 2.6 and 3.3.

4.1.0 (2014-12-27)

  • Add support for PyPy3.

  • Add support for Python 3.4.

4.0.2 (2013-03-08)

  • Add Trove classifiers indicating CPython and PyPy support.

4.0.1 (2013-02-11)

  • Add tox.ini to release.

4.0.0 (2013-02-11)

  • Add support for Python 3.3 and PyPy.

  • Drop support for Python 2.4 / 2.5.

3.6.1 (2011-11-29)

  • Add undeclared zope.schema dependency.

  • Remove zope.testing test dependency and test extra.

3.6.0 (2009-10-08)

  • Add IRawReadFile and IRawWriteFile interfaces. These extend IReadFile and IWritefile, respectively, to behave pretty much like a standard Python file object with a few embellishments. This in turn allows efficient, iterator- based implementations of file reading and writing.

  • Remove dependency on zope.container: IReadDirectory and IWriteDirectory inherit only from interfaces defined in zope.interface and zope.interface.common.mapping.

3.5.0 (2009-01-31)

  • Change use of zope.app.container to zope.container.

3.4.0 (2007-10-02)

  • Initial Zope-independent release.

Development

zope.filerepresentation is hosted at GitHub:

Project URLs

Indices and tables