ZC Buildout recipe for defining a file-storage
Project description
Recipe for setting up a filestorage
This recipe can be used to define a file-storage. It creates a ZConfig file-storage database specification that can be used by other recipes to generate ZConfig configuration files.
This recipe takes an optional path option. If none is given, it creates and uses a subdirectory of the buildout parts directory with the same name as the part.
The recipe records a zconfig option for use by other recipes.
We’ll show a couple of examples, using a dictionary as a simulated buildout object:
>>> import zc.recipe.filestorage >>> buildout = dict( ... buildout = { ... 'directory': '/buildout', ... }, ... db = { ... 'path': 'foo/Main.fs', ... }, ... ) >>> recipe = zc.recipe.filestorage.Recipe( ... buildout, 'db', buildout['db'])>>> print(buildout['db']['path']) /buildout/foo/Main.fs>>> print(buildout['db']['zconfig'], end='') <zodb> <filestorage> path /buildout/foo/Main.fs </filestorage> </zodb>>>> recipe.install() ()>>> import tempfile >>> d = tempfile.mkdtemp() >>> buildout = dict( ... buildout = { ... 'parts-directory': d, ... }, ... db = {}, ... )>>> recipe = zc.recipe.filestorage.Recipe( ... buildout, 'db', buildout['db'])>>> print(buildout['db']['path']) /tmp/tmpQo0DTB/db/Data.fs>>> print(buildout['db']['zconfig'], end='') <zodb> <filestorage> path /tmp/tmpQo0DTB/db/Data.fs </filestorage> </zodb>>>> recipe.install() ()>>> import os >>> os.listdir(d) ['db']
The update method doesn’t do much, as the database part’s directory already exists, but it is present, so buildout doesn’t complain and doesn’t accidentally run install() again:
>>> recipe.update()
If the storage’s directory is removed, is it re-added by the update method:
>>> os.rmdir(os.path.join(d, 'db')) >>> os.listdir(d) [] >>> recipe.update() >>> os.listdir(d) ['db']
This is useful in development when the directory containing the database is removed in order to start the database from scratch.
CHANGES
2.0 (2023-02-10)
Drop support for Python 2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6.
Add support for Python 3.7, 3.8, 3.9, 3.10, 3.11, PyPy3.
1.1.2 (2014-02-21)
Fixed: packaging bug that caused ‘pip install zc.recipe.filestorage’ to fail with an error about missing README.txt
1.1.1 (2014-02-16)
Fixed: packaging bug that caused a test failure in a test runner that didn’t use buildout to run setup.py.
1.1.0 (2014-02-14)
Python 3 compatibility
Using Python’s doctest module instead of deprecated zope.testing.doctest.
Removed ‘shared-blob-dir’ from blobstorage section.
1.0.0 (2007-11-03)
Initial release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for zc.recipe.filestorage-2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5042205100fdf572479186a59964b261b6f1b71b1b4265e06ab70e0e4f8b7b67 |
|
MD5 | 2997329a4f71b3449ae60ac6b0832822 |
|
BLAKE2b-256 | e7b6d5bb0ef89885b9af2ecb83fdb3ba48d38a40dfebb6d249a1e4e3f0c453eb |
Hashes for zc.recipe.filestorage-2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de6a600e790314d8ccc932900e54746d011cccdb7e8d8e6d7ee665434a2fde0e |
|
MD5 | 10ce64a63bd37c62f071437e5ea737c5 |
|
BLAKE2b-256 | 7b4a7b7d12712c0d27cdd9f9016ada0d66cdd94764c77f9dc7ce4a5350d19f38 |