Skip to main content

MutableMapping interfaces for common cloud storage providers

Project description

cloud-mappings

MutableMapping implementations for common cloud storage providers

Build PyPI version

For now Azure Blob Storage, Google Cloud Storage, and AWS S3 are implemented. Contributions of new providers are welcome.

Installation

with pip:

pip install cloud-mappings

By default, cloud-mappings doesn't install any of the required storage providers dependencies. If you would like to install them alongside cloud-mappings you may run any combination of:

pip install cloud-mappings[azure,gcp,aws]

Instantiation

AzureBlobMapping:

from cloudmappings import AzureBlobMapping

cm = AzureBlobMapping.with_pickle(
    account_url="AZURE_BLOB_STORAGE_URL",
    container_name="CONTAINER_NAME",
    credential=AZURE_CREDENTIAL_OBJECT,
)

GoogleCloudStorageMapping:

from cloudmappings import GoogleCloudStorageMapping

cm = GoogleCloudStorageMapping.with_pickle(
    project="GCP_PROJECT",
    credentials=GCP_CREDENTIALS_OBJECT,
    bucket_name="BUCKET_NAME",
)

AWSS3Mapping:

from cloudmappings import AWSS3Mapping

cm = AWSS3Mapping.with_pickle(
    bucket_name="AWS_BUCKET_NAME",
    silence_warning=False,
)

Note that AWS S3 does not support server-side atomic requests, so it is not recommended for concurrent use. A warning is printed out by default but may be silenced by passing silence_warning=True.

Usage

Use it just like a standard dict()!

cm["key"] = 1000
cm["key"] # returns 1000
del cm["key"]
"key" in cm # returns false

Cloud Sync

Each cloud-mapping keeps an internal dict of etags which it uses to ensure it is only reading/overwriting/deleting data it expects to. If the value in storage is not what the cloud-mapping expects, a cloudmappings.errors.KeySyncError() will be thrown. If you know what you are doing and want your operation to go through anyway, you will need to sync your cloud-mapping with the cloud by calling either .sync_with_cloud() to sync all keys or .sync_with_cloud(key) to sync a specific key. By default .sync_with_cloud() is called on instantiation of a cloud-mapping if the underlying provider storage already exists. You may skip this initial sync by passing an additional sync_initially=False parameter when you instantiate your cloud-mapping.

Serialisation

If you don't call .with_pickle() and instead pass your providers configuration directly to the CloudMapping class, you will get a "raw" cloud-mapping which accepts only byte-likes as values. Along with the .with_pickle() serialisation utility, .with_json() and .with_json_zlib() also exist.

You may build your own serialisation either using zict; or by calling .with_buffers([dumps_1, dumps_2, ..., dumps_N], [loads_1, loads_2, ..., loads_N]), where dumps and loads are the ordered functions to serialise and parse your data respectively.

Code style: black

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

cloud-mappings-0.7.6.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

cloud_mappings-0.7.6-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file cloud-mappings-0.7.6.tar.gz.

File metadata

  • Download URL: cloud-mappings-0.7.6.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.6.13

File hashes

Hashes for cloud-mappings-0.7.6.tar.gz
Algorithm Hash digest
SHA256 2752dbe63b80bb04b991232438e23ec506bc9db0cef1e6bd4eefa40f35e45489
MD5 77aa5a0f8aae4f736ba16aa3db3f148d
BLAKE2b-256 9373c54d9f57f5cbf74d2fcb01b75a3db3fb02981a87c89bbad2f8898d770b5d

See more details on using hashes here.

File details

Details for the file cloud_mappings-0.7.6-py3-none-any.whl.

File metadata

  • Download URL: cloud_mappings-0.7.6-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.6.13

File hashes

Hashes for cloud_mappings-0.7.6-py3-none-any.whl
Algorithm Hash digest
SHA256 1e9cd1e6f606d13771ba26e669abc02f485a727181e909b48bc3172c9e29dbe4
MD5 dd0f0639e32f1f699c1bdb3f57846a86
BLAKE2b-256 022bd41369187c5ff374d3b713f44c80641f71fde2ee259942f413679aaa287b

See more details on using hashes here.

Supported by

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