zope.filerepresentation

raw JSON →
7.0 verified Mon Apr 27 auth: no python

Provides interfaces and utilities for representing filesystem objects (files, directories) in Zope applications. Version 7.0 requires Python >=3.9. Maintenance release cadence is low; updates occur as needed.

pip install zope.filerepresentation
error ImportError: cannot import name 'IFileRepresentation' from 'zope.filerepresentation.interfaces'
cause The interface IFileRepresentation was removed in a newer version.
fix
Use IFileFactory and IDirectoryFactory instead, and ensure you are using version 5.0+ interfaces.
error ModuleNotFoundError: No module named 'zope.filerepresentation'
cause The package is not installed.
fix
Run pip install zope.filerepresentation.
error TypeError: 'MyFileFactory' object is not callable
cause The factory object must implement __call__ method.
fix
Define a __call__ method that accepts (name, data) parameters.
breaking Version 7.0 dropped support for Python versions older than 3.9. Upgrade your Python environment if you are using Python < 3.9.
fix Ensure Python 3.9 or later is used.
deprecated The `IFileRepresentation` interface has been deprecated in favor of `IFileFactory` and `IDirectoryFactory`. Use the new interfaces for new code.
fix Replace usage of `IFileRepresentation` with `IFileFactory` and `IDirectoryFactory` as appropriate.
gotcha Utility functions like `readFile` and `writeFile` are not available via top-level import; you must import them from `zope.filerepresentation` module. Do not attempt to import from `interfaces`.
fix Use `from zope.filerepresentation import readFile`.

Demonstrates providing the IFileFactory interface and using a factory to create file representations.

from zope.filerepresentation.interfaces import IFileFactory
from zope.interface import directlyProvides

class MyFileFactory:
    def __call__(self, name, data):
        return {'name': name, 'data': data}

directlyProvides(MyFileFactory, IFileFactory)

def test_factory():
    factory = MyFileFactory()
    result = factory('test.txt', b'hello')
    print(result)  # {'name': 'test.txt', 'data': b'hello'}

test_factory()