Skip to main content

kleiven-azure-storage

Small helpers around Azure Table Storage and Blob Storage clients. The package wraps the Azure SDK to keep common operations short and consistent.

pip install kleiven-azure-storage

Requirements

  • Python 3.10+
  • azure-data-tables
  • azure-storage-blob
  • python-dotenv

Configuration

The package loads environment variables via python-dotenv. Define your Azure connection string in .env or the shell:

AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=...;

You can also pass a custom env var name to the helpers.

Quick start

Tables

from kleiven.azure.storage import get_table_storage

users = get_table_storage(table_name="users", env_variable_name = "AZURE_STORAGE_CONNECTION_STRING")

# Get an entity
entity = users.get_entity(
        partition_key = 'users',
        row_key = "123",
        select = 'Name') # None if it partition_key, row_key does not exist in table

if entity is not None:
  print(entity.get("Name", None))



# Upsert entity (replace by default)
entity = {
    "PartitionKey": "users",
    "RowKey": "123",
    "name": "Ada",
}

# Upsert entity (replace by default)
table.upsert_entity(entity)

# Upsert entity: Merge
from azure.data.tables import UpdateMode
storage.upsert_entity(
    entity=entity,
    mode=UpdateMode.MERGE,
    create_table_if_not_exist = True
)

# Create table if not already exist
storage.upsert_entity(
    entity=entity,
    create_table_if_not_exist = True
)

Blobs

from kleiven.azure.storage import get_blob_service

service = get_blob_service()
blob = service.create_and_upload_blob(
    data={"hello": "world"},
    container="my-container",
    blob_name="example.json",
    tags={"source": "demo"},
    overwrite=True,
)

if blob is not None:
    print(blob.container, blob.blob)
    print(blob.metadata)

API overview

Helper functions

  • get_table_service(env_variable_name="AZURE_STORAGE_CONNECTION_STRING")
  • get_table_storage(table_name, env_variable_name="AZURE_STORAGE_CONNECTION_STRING")
  • get_blob_service(env_variable_name="AZURE_STORAGE_CONNECTION_STRING")
  • get_blob_storage(container, blob, env_variable_name="AZURE_STORAGE_CONNECTION_STRING")

TableStorage

TableStorage wraps azure.data.tables.TableClient:

  • upsert_entity(entity, mode=UpdateMode.REPLACE, create_table_if_not_exist=False)
  • get_entity(partition_key, row_key, select=None, silent=True, create_table_if_not_exist=False)
  • query_entities(query_filter, select=None)
  • get_entities(entities, select=None)
  • batch_save(entities, update_mode=UpdateMode.MERGE, create_table_if_not_exist=False)
  • batch_delete(entities)

BlobService and BlobStorage

BlobService wraps azure.storage.blob.BlobServiceClient:

  • get_blob_storage(container, blob)
  • create_and_upload_blob(data, container, blob_name, tags=None, overwrite=False)

BlobStorage exposes convenience properties:

  • container
  • blob
  • metadata

Notes

  • create_and_upload_blob returns None when overwrite=False and the blob already exists.
  • create_table_if_not_exist=True currently depends on a wolfbrain.storage helper. If you do not have that dependency, keep the flag set to False.

Metadata

Release files for kleiven-azure-storage 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kleiven-azure-storage 0.0.4
File Size Uploaded Provenance
kleiven_azure_storage-0.0.4.tar.gz 18.8 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for kleiven-azure-storage 0.0.4
File Interpreter ABI Platform
kleiven_azure_storage-0.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 38.6 kB

Release files / kleiven_azure_storage-0.0.4.tar.gz

Download URL kleiven_azure_storage-0.0.4.tar.gz
Size 18.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ed9dbefda939e49365621efc0c5ca8fc4b0206cf0e6b67313b79a9d677c3ca10
BLAKE2b-256 checksum
How to use checksums
ec593ca94fd8d326904bd1a9cce2a23dcb70a0c1b61808e583790f3961defba2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 25, 2026.

Transparency log

Release files / kleiven_azure_storage-0.0.4-py3-none-any.whl

Download URL kleiven_azure_storage-0.0.4-py3-none-any.whl
Size 19.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e5f8a781e87271e7876c7d738cd817cb90c232ab7a9fd1a46fe0adca8d456dd0
BLAKE2b-256 checksum
How to use checksums
9720652baa57503e54bef40d157214f177455cb07c1e4521c32e4148ed4fca4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 25, 2026.

Transparency log

Security for kleiven-azure-storage 0.0.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for kleiven_azure_storage-0.0.4.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page