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
File details
Details for the file zc.recipe.filestorage-2.0.tar.gz
.
File metadata
- Download URL: zc.recipe.filestorage-2.0.tar.gz
- Upload date:
- Size: 7.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5042205100fdf572479186a59964b261b6f1b71b1b4265e06ab70e0e4f8b7b67 |
|
MD5 | 2997329a4f71b3449ae60ac6b0832822 |
|
BLAKE2b-256 | e7b6d5bb0ef89885b9af2ecb83fdb3ba48d38a40dfebb6d249a1e4e3f0c453eb |
File details
Details for the file zc.recipe.filestorage-2.0-py3-none-any.whl
.
File metadata
- Download URL: zc.recipe.filestorage-2.0-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | de6a600e790314d8ccc932900e54746d011cccdb7e8d8e6d7ee665434a2fde0e |
|
MD5 | 10ce64a63bd37c62f071437e5ea737c5 |
|
BLAKE2b-256 | 7b4a7b7d12712c0d27cdd9f9016ada0d66cdd94764c77f9dc7ce4a5350d19f38 |