Async Sharepoint
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.
- GitHub | PyPI | Documentation
- Created by Dean MacGregor | GitHub @deanm0000 | PyPI @deanm0000
- MIT License
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.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| async_sharepoint-0.1.7.tar.gz | 176.5 kB | Without provenance | Details for async_sharepoint-0.1.7.tar.gz |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| async_sharepoint-0.1.7-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details for async_sharepoint-0.1.7-cp310-abi3-win_amd64.whl |
| async_sharepoint-0.1.7-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.7-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
| async_sharepoint-0.1.7-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.7-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
Total release size: 12.5 MB
Security for Async-Sharepoint 0.1.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.
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.