Skip to main content

Async Sharepoint

PyPI version PyPI downloads

An async SharePoint client with a native Rust implementation exposed through PyO3.

The repository also contains a standalone Rust crate in core/, published as async-sharepoint, for Rust projects that do not need Python bindings.

Why this project

The established Python SharePoint libraries are synchronous, which makes large file listings slow and difficult to use in a server without blocking its event loop. The cost is compounded when each list item requires another synchronous request before basic file properties such as its name and path are available.

Async Sharepoint was built to make that workflow asynchronous and significantly faster. It fetches paginated list results optimistically in parallel and eagerly resolves the additional properties of returned files and folders concurrently.

This project does not try to cover every SharePoint API. It focuses on fast list, file, and folder operations. If an application needs broad access to the full SharePoint feature set, an established general-purpose SharePoint library will be a better fit. I'm not necessarily opposed to making it feature complete, it just isn't a priority.

Features

  • Async list, item, file, folder, permission, and search operations
  • Native Entra ID certificate authentication with background token refresh
  • Automatic token caching and refresh
  • Retry handling for throttling and transient SharePoint failures
  • Python 3.10+ stable-ABI Linux wheels
  • Eager and optimistic paginated query parallelization
  • Eager and parallelized item refinement when getting lists

Installation

uv add Async-Sharepoint
## or
pip install Async-Sharepoint

Rust

cargo add async-sharepoint
use async_sharepoint::{CertificateCredential, SharePointClient};

let credential = CertificateCredential::load(
    tenant_id,
    client_id,
    "/path/to/private.key",
    thumbprint,
)?;
let client = SharePointClient::new(site_url, &credential)?;
let files = client.ls(None).await?;

Usage

from async_sharepoint import CertificateCredential, SharePointClient

credential = CertificateCredential(
    tenant_id=tenant_id,
    client_id=client_id,
    private_key_path="/path/to/private.key",
    thumbprint=thumbprint,
)

async with SharePointClient(site_url, credential) as client:
    documents = await client.get_items("Documents")

Documentation

Full documentation is available on GitHub Pages.

Contributing

See CONTRIBUTING.md for development setup, testing, and documentation instructions.

Metadata

Release files for Async-Sharepoint 0.1.6

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

Source distribution (sdist)

Source distribution for Async-Sharepoint 0.1.6
File Size Uploaded Provenance Actions
async_sharepoint-0.1.6.tar.gz 176.1 kB Without provenance Details for async_sharepoint-0.1.6.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for Async-Sharepoint 0.1.6
File Interpreter ABI Platform Actions
async_sharepoint-0.1.6-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details for async_sharepoint-0.1.6-cp310-abi3-win_amd64.whl
async_sharepoint-0.1.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details for async_sharepoint-0.1.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
async_sharepoint-0.1.6-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.10 abi3 macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) Details for async_sharepoint-0.1.6-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Total release size: 12.5 MB

Release files / async_sharepoint-0.1.6.tar.gz

Download URL async_sharepoint-0.1.6.tar.gz
Size 176.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c9627521a1c4c74d0d2fb7a491465aa2d20870589db698cae0751dfaf6bb1830
BLAKE2b-256 checksum
How to use checksums
8d08dc08f55a0fa069f7bf6e70fa71bddacb2bd285fd7e0760a94272ff648ae8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / async_sharepoint-0.1.6-cp310-abi3-win_amd64.whl

Download URL async_sharepoint-0.1.6-cp310-abi3-win_amd64.whl
Size 3.0 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
b04de01fad4b4e8f1b524d0f8b92e9a87a04fab0b4d9434b7fa0beaa738cdfe4
BLAKE2b-256 checksum
How to use checksums
30898983cde5cac49190440cd90e9e9210ffaa0076828f6b2f8e57f6d06c6c1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / async_sharepoint-0.1.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL async_sharepoint-0.1.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.2 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
380b8d1ba050c2f0863bdc1bdb0b89ee93862c66763f932add1f6c88ae5c5feb
BLAKE2b-256 checksum
How to use checksums
76a05cd9cf2e995b571b01b6119fbc745a3a4884195ef8e37241629cc258c597
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / async_sharepoint-0.1.6-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL async_sharepoint-0.1.6-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 6.1 MB
Tags CPython 3.10 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d308b8b1f018a101526a84282191eb8bf264d4f58fad06dd612de75b0b8051a5
BLAKE2b-256 checksum
How to use checksums
f06d6aafa2661e3826ab75d9ff27bebe99faca2a86c6c41dd5f56c9708b09059
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for Async-Sharepoint 0.1.6

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.

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