Getting started#
The package talks to a remote host over the WebDAV protocol, for example to automate
downloads from your cloud. The API is webdavclient.rst; how to
contribute to any of the family’s repositories is ANTfrastructure’s
repository-family.md.
Installation#
From a release (since v0.10.0): every release
carries wheels for Linux x64/arm64 and Windows x64/arm64 (the pinned CPython, with and without the
GIL: cp314 and cp314t in v0.10.1; Windows arm64 since v0.10.1), a
pure-Python wheel that installs anywhere, the sdist and a SHA256SUMS. Download the wheel for your
platform and SHA256SUMS, then:
sha256sum --check --ignore-missing SHA256SUMS
pip install ./kataglyphis_webdavclient-*.whl
From source:
git clone --recurse-submodules https://github.com/Kataglyphis/WebDavClient.git
cd WebDavClient
uv sync --all-extras --python 3.15 # the pinned CPython; 3.15t for the free-threaded build
Dependencies#
Python ≥ 3.10 (requires-python in pyproject.toml), managed with
uv. Develop on the pinned CPython, PYTHON_VERSION in
third_party/ANTfrastructure/linux/scripts/01-core/versions.env: nothing in the repo picks it,
so uv sync takes --python. The dependencies are declared in pyproject.toml (the
runtime set plus the tests and docs extras) and locked in uv.lock.
Usage#
The usage example is the README’s Quick start.
download_all_files_iterative downloads everything below the remote path into the local one,
keeping the folder structure. Creating a WebDavClient also creates logs/ in the current
working directory and logs to logs/downloadMd_s.log there. demo/download_markdown_files.py
is the same example as a command-line script:
uv run python demo/download_markdown_files.py <hostname> <username> <password> <remote_base_path> <local_base_path>
Tests#
Run pytest in the root directory (uv run pytest after the sync above).
The WebDAV tests start a local mock server over tests/remote/, so no remote
host is needed. Every CI lane runs the whole suite on the pinned CPython (ANTfrastructure’s
PYTHON_VERSION), once with the GIL and once free-threaded, and packages that X.Y’s wheels:
Lane |
Python |
Set by |
|---|---|---|
Linux x64, arm64 |
the image’s X.Y and X.Yt: 3.14 and 3.14t in |
the hub’s default, no version named |
Windows x64 |
3.15 and 3.15t, the |
|
Windows arm64 |
3.15 and 3.15t, installed by uv on the runner |
|
Static analysis#
./scripts/linux/ci_static_analysis.sh x64 > "ci_analysis_$(date +%Y%m%d_%H%M%S).log" 2>&1
The argument is the architecture; it runs on the pinned X.Y. It is the CI gate and exits
non-zero on a finding, which the redirect hides
(ANTfrastructure python-ci.md: the hook, the gate, binary-only wheels, the tools). The
other CI scripts are in AGENTS.md § 4.