Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Swarmauri Logo

PyPI - Downloads Hits Supported Python Versions License Release Version

Swarmauri Storage WebDAV

A WebDAV client storage adapter for SwarmauriSDK workflows that store files and directory trees in remote DAV collections.

Features

  • Implements the Swarmauri storage adapter upload, download, push, pull, range-read, byte, and removal workflows.
  • Creates remote collections with MKCOL and enumerates directory trees with bounded PROPFIND Depth: 1 requests.
  • Provides capability discovery through OPTIONS and server-side COPY and MOVE extensions.
  • Supports Basic, Bearer, custom httpx.Auth, TLS verification, and mutual TLS client configuration.
  • Normalizes logical keys, percent-encodes URL path segments, rejects path traversal, and rejects DTD/entity declarations before parsing multistatus XML.
  • Provides discoverable swarmauri.storage_adapters and peagen.plugins.storage_adapters entry points.

LOCK and UNLOCK are not exposed. Their presence alone does not establish complete DAV class-2 behavior; lock-token ownership, refresh, timeout, and conditional-write semantics require a dedicated contract.

Installation

Install this package with uv or pip.

uv add swarmauri_storage_webdav
pip install swarmauri_storage_webdav

Usage

Create an adapter for an existing WebDAV collection and optionally scope all keys beneath a prefix.

from swarmauri_storage_webdav import WebDAVStorageAdapter

with WebDAVStorageAdapter(
    base_url="https://dav.example.com/remote.php/dav/files/jacob/",
    username="jacob",
    password="secret",
    prefix="artifacts",
) as storage:
    storage.put_blob("runs/42/result.json", b'{"status":"complete"}')
    payload = storage.get_blob("runs/42/result.json")

    storage.push("./dist", prefix="releases/0.1.0")
    storage.pull("releases/0.1.0", "./download")

    print(storage.capabilities())
    print(payload)

URI construction is also supported. Credentials are removed from the stored HTTP endpoint and must not be logged.

storage = WebDAVStorageAdapter.from_uri(
    "webdav+https://jacob:secret@dav.example.com/files/jacob/"
)

The endpoint root must already exist. ensure_bucket() creates the configured prefix when one is present; without a prefix it validates the endpoint through OPTIONS.

License: Apache-2.0. See LICENSE.

Metadata

Release files for swarmauri_storage_webdav 0.11.0.dev1

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

Source distribution (sdist)

Source distribution for swarmauri_storage_webdav 0.11.0.dev1
File Size Uploaded Provenance Actions
swarmauri_storage_webdav-0.11.0.dev1.tar.gz 7.6 kB Without provenance Details for swarmauri_storage_webdav-0.11.0.dev1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for swarmauri_storage_webdav 0.11.0.dev1
File Interpreter ABI Platform Actions
swarmauri_storage_webdav-0.11.0.dev1-py3-none-any.whl Python 3 none any Details for swarmauri_storage_webdav-0.11.0.dev1-py3-none-any.whl

Total release size: 16.7 kB

Release files / swarmauri_storage_webdav-0.11.0.dev1.tar.gz

Download URL swarmauri_storage_webdav-0.11.0.dev1.tar.gz
Size 7.6 kB
Tags Source
SHA-256 checksum
How to use checksums
ab874bca62be8b2821cbedb1e0493127665f535197a824e572172993fd815a92
BLAKE2b-256 checksum
How to use checksums
a10b425dbca9c90b61371350795f0d7dda7562bd49ce5259f83755707519dae3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / swarmauri_storage_webdav-0.11.0.dev1-py3-none-any.whl

Download URL swarmauri_storage_webdav-0.11.0.dev1-py3-none-any.whl
Size 9.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2971b97cf7ec8db2264bb282549b1a84a7907bb2f05e248a6a05547c7101bce3
BLAKE2b-256 checksum
How to use checksums
197cac3d0b012db66627c61bedc1cfb70f9b927e9e8cb55d363def91ac9ea568
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for swarmauri_storage_webdav 0.11.0.dev1

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.

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

Release history Release notifications | RSS feed

This release
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