Skip to main content

platform-storage

Package: cloud_dog_storage
Standard: PS-85 (Storage Interfaces)
Status: Design complete, build-ready (v0.1.0)

Purpose

Drop-in Python library implementing the PS-85 Storage Interfaces standard. Provides a unified file/object storage abstraction with pluggable backends, consistent error handling, TLS configuration, path sanitisation, and observability.

Key Features

  • 5 storage backends: Local filesystem, S3-compatible, WebDAV, FTP/FTPS, Google Drive
  • Unified POSIX path model: Same /path/to/file addressing regardless of backend
  • Config-driven backend selection: Switch from local to S3 via config change — zero code modification
  • Sync + async: Sync primary API with AsyncStorageBackend wrapper for event-loop frameworks
  • Security: Path traversal prevention, root boundary enforcement, credential redaction, TLS configuration
  • Error taxonomy: Consistent StorageError hierarchy across all backends
  • Factory pattern: build_storage_backend(config) creates the right backend from config
  • Conformance suite: Reusable tests that validate any backend implementation
  • Mock backend: In-memory MockStorageBackend for consumer project unit tests
  • FastAPI integration: Optional Depends(get_storage_backend) helper
  • Config delegation: Credentials pre-resolved by cloud_dog_config (PS-80) — no direct Vault/env reads in this package

Dependencies

  • Required: pydantic
  • Optional: requests (S3, WebDAV, Google Drive), cloud_dog_config, cloud_dog_logging, fastapi

Documents

  • REQUIREMENTS.md — Functional and non-functional requirements (21 FRs)
  • ARCHITECTURE.md — Module layout, component design, integration patterns
  • TESTS.md — Test plan, directory structure, coverage map (72 tests: 32 UT + 10 ST + 20 IT + 5 AT + 5 QT)

Quick Start

from cloud_dog_storage import build_storage_backend
from cloud_dog_storage.config.models import StorageConfig

# Via cloud_dog_config (recommended — credentials pre-resolved from Vault)
from cloud_dog_config import get_config, bind_model
config = bind_model(get_config(), "storage", StorageConfig)
storage = build_storage_backend(config)

# Or direct construction (when cloud_dog_config not installed)
config = StorageConfig(backend="local", root_path="/data/files")
storage = build_storage_backend(config)

# Use (same API for all backends)
storage.write_bytes("/reports/q1.pdf", pdf_data)
data = storage.read_bytes("/reports/q1.pdf")
entries = storage.list_dir("/reports", recursive=True)
storage.delete_path("/reports/q1.pdf")

# Async usage
from cloud_dog_storage import AsyncStorageBackend
async_storage = AsyncStorageBackend(storage)
data = await async_storage.read_bytes("/reports/q1.pdf")

Reference Implementations

Existing code in these projects informed the package design:

Project Storage Code Backends
file-mcp-server src/file_tools/storage/ (1,482L) Local, S3, WebDAV, FTP, Google Drive
notification-agent src/core/storage/ (2,967L) Local, S3, WebDAV, FTP
expert-agent src/core/multimedia/ (~900L) Local only

Standards Alignment

Standard Alignment
PS-85 Primary standard — Storage Interfaces
PS-80 Config delegation — credentials pre-resolved by cloud_dog_config, no direct Vault reads
PS-40 Structured logging, credential redaction
PS-90 Path sanitisation, TLS enforcement, credential handling
PS-95 Test hierarchy (UT/ST/IT/AT/QT), conformance suite
PS-00 Config-driven, testable, auditable

Licence

Apache-2.0 — Copyright (c) 2026 Cloud-Dog, Viewdeck Engineering Limited

Metadata

Release files for cloud-dog-storage 0.1.8

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

Source distribution (sdist)

Source distribution for cloud-dog-storage 0.1.8
File Size Uploaded Provenance
cloud_dog_storage-0.1.8.tar.gz 82.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for cloud-dog-storage 0.1.8
File Interpreter ABI Platform
cloud_dog_storage-0.1.8-py3-none-any.whl Python 3 none any Details

Total release size: 133.4 kB

Release files / cloud_dog_storage-0.1.8.tar.gz

Download URL cloud_dog_storage-0.1.8.tar.gz
Size 82.2 kB
Tags Source
SHA-256 checksum
How to use checksums
cf0aea281f032d6856f34b03e795c544727a36d1862f0885bdb70086fa2731f6
BLAKE2b-256 checksum
How to use checksums
3b55ecce68e789f5856a3d8221a2c248d7c98080e82f5706f6321edcc24c28b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.14

Release files / cloud_dog_storage-0.1.8-py3-none-any.whl

Download URL cloud_dog_storage-0.1.8-py3-none-any.whl
Size 51.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a70e016d6059fddccc0e5fcb07980e0c1bf83c428604d3ef107c500f1855d285
BLAKE2b-256 checksum
How to use checksums
b623965c3fef959d8f8930c9fa099359b31dc05175a8b08257e5b8770f47e7f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.14

Security for cloud-dog-storage 0.1.8

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.

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