Skip to main content

Abstraction level for object storages.

Project description

Tests

file-keeper

Abstraction layer for reading, writing and managing file-like objects.

The package implements drivers for a number of storage types(local filesystem, redis, AWS S3, etc.) and defines a set of tools to simplify building your own drivers for storage you are using.

Read the documentation for a full user guide.

Usage

Initialize storage pointing to /tmp/example folder:

import os
from file_keeper import make_storage

storage = make_storage("sandbox", {
    "type": "file_keeper:fs",
    "path": "/tmp/example",
    # this option creates the folder if it does not exist.
    # Without it storage raises an error if folder is missing
    "create_path": True,
})
assert os.path.isdir("/tmp/example")

Upload file into the storage initialized in the previous step and play with it a bit:

from file_keeper import make_upload

# transform data into an object, that can be saved inside the storage
upload = make_upload(b"hello world")

# save the data and verify its presence in the system
result = storage.upload("hello.txt", upload)
assert result.size == 11
assert os.path.isfile("/tmp/example/hello.txt")

# change location of the file
moved_result = storage.move("moved-hello.txt", result, storage)
assert not os.path.exists("/tmp/example/hello.txt")
assert os.path.isfile("/tmp/example/moved-hello.txt")

# read the file
assert storage.content(moved_result) == b"hello world"

# remove the file
storage.remove(moved_result)
assert not os.path.exists("/tmp/example/moved-hello.txt")

Development

Install dev extras:

pip install -e '.[dev]'

Run unittests:

pytest

Run typecheck:

pyright

License

AGPL

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

file_keeper-0.0.3.tar.gz (30.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

file_keeper-0.0.3-py3-none-any.whl (37.8 kB view details)

Uploaded Python 3

File details

Details for the file file_keeper-0.0.3.tar.gz.

File metadata

  • Download URL: file_keeper-0.0.3.tar.gz
  • Upload date:
  • Size: 30.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for file_keeper-0.0.3.tar.gz
Algorithm Hash digest
SHA256 90c59f09d6b43f4d7008777de972e2436511e52696f0a77c553cae6f94e5d185
MD5 b0de3e48908d29b91c0db4e33ab236ac
BLAKE2b-256 8df18a317d6b7b121e8a1dc994108cc71f6ebe79b44d37c8cdae1e38c4b0e762

See more details on using hashes here.

File details

Details for the file file_keeper-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: file_keeper-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 37.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for file_keeper-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 39f981b0212940698af9c9c8fc4bdca971581f603b667e41e762ed6a01800fd1
MD5 bfcda4498f4654baa44f8ef9f21991b5
BLAKE2b-256 aa5777f7e295d81dc6f3931aea099af944ffb5ec3e11c3d3ca0cf2c8d6c36c0b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page