GitFleet is a high-performance Python library (powered by Rust) for managing and analyzing Git repositories in bulk. It supports asynchronous cloning, parallel git blame and commit analysis using Rayon, and integrates with GitHub, GitLab, and BitBucket APIs. Designed for large-scale repository analysis, GitFleet handles API token rotation, monitors rate limits, and provides detailed progress tracking across operations.
Project description
🚀 GitFleet
High-performance Git repository analysis and management in Python, powered by Rust
⚡ Overview
GitFleet is a high-performance Python library built in Rust for asynchronous Git repository analysis at scale. It combines the speed and memory efficiency of Rust with the ease of use of Python's async/await syntax.
It supports bulk operations like:
- Parallel
git blameacross many files (10-50x faster than pure Python) - Async cloning of hundreds of repositories with progress monitoring
- GitHub, GitLab, and GitBucket integration with native API clients
- API token rotation and rate limit monitoring to prevent 429 errors
- Real-time progress tracking for long-running tasks
Ideal for:
- Grading systems (e.g., student GitHub repos)
- Research in software engineering and code evolution
- DevOps and CI insights at scale
- Custom git analytics platforms
- Any application requiring efficient handling of multiple Git repositories
🔧 Features
- ✅ Rayon-powered multithreaded Git operations
- ✅ Asynchronous repo cloning with async/await
- ✅ Integrated clients for GitHub, GitLab, GitBucket
- ✅ Multiple token management with auto-rotation
- ✅ Rate limit tracking and resilience
- ✅ Modular architecture: easily extendable
📚 Documentation
Visit our comprehensive documentation for:
- Detailed API reference
- Usage examples
- Provider integrations
- Advanced configuration
📦 Installation
pip install gitfleet
Requires Python 3.8+ and a Rust toolchain for building native extensions. Pre-built wheels are available for most common platforms.
🚀 Quick Start
import asyncio
from gitfleet import RepoManager
async def main():
manager = RepoManager()
await manager.clone_repos([
"https://github.com/user/repo1.git",
"https://github.com/user/repo2.git"
])
results = await manager.blame_all("target_file.py")
print(results)
asyncio.run(main())
🔌 Integration
GitFleet is designed to interoperate with:
- GitHub, GitLab, GitBucket via async clients
- Jupyter notebooks (Pandas-friendly outputs)
- Flask, FastAPI, and async dashboards (e.g., Plotly Dash)
- CI/CD pipelines or grading systems
🛠 Architecture
| Layer | Technology | Purpose |
|---|---|---|
| Rust Core | git2, rayon |
Fast Git ops and parallelism |
| Python Interface | PyO3, maturin |
Native bindings and async APIs |
| Async Clients | httpx, aiohttp |
GitHub/GitLab API access |
| Token Manager | Custom | Multi-token rotation & rate monitoring |
📈 Roadmap
- Git diff and patch inspection
- Repository graph & commit visualizations
- CSV/JSON export for data analysis
- Web dashboard example with live metrics
🤝 Contributing
We welcome contributions! To get started:
git clone https://github.com/bmeddeb/gitfleet
cd gitfleet
pip install -e ".[dev]"
Run tests with:
pytest
For more details on contributing, see our development documentation.
📄 License
✨ Credits
GitFleet is inspired by the needs of large-scale Git analysis in grading, research, and dev tooling. Built with ❤️ using Rust + Python.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gitfleet-0.2.8.tar.gz.
File metadata
- Download URL: gitfleet-0.2.8.tar.gz
- Upload date:
- Size: 157.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78b4dc10f2c72bd6103b3e23f2ce7443a09fef50c8615286a07da075a8e4f70f
|
|
| MD5 |
0279dc5d8f68922cd715a0bef2a84af8
|
|
| BLAKE2b-256 |
eaeb7e85dd86d64bd1c2e07af7572384cd9ecc35e5b9e3497b498bd0bf7a11cd
|
File details
Details for the file gitfleet-0.2.8-cp313-none-win_amd64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp313-none-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
140c5cdb15d9b15dbb4ef46d23d96a6280e7ca305a93bffe2fe4ba28540583c8
|
|
| MD5 |
1fe5252ef4f19a02f40401638f97b07e
|
|
| BLAKE2b-256 |
ef8ccea7bac758ad28e97ed0f48016ebc87606eaa9b8e571da638f45cd3c6771
|
File details
Details for the file gitfleet-0.2.8-cp313-cp313-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp313-cp313-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 3.9 MB
- Tags: CPython 3.13, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65ffd61372faa86785483c315fed1a543a15e35b436ab58f2c90e17c6464589c
|
|
| MD5 |
0b4a42f1f7f449a34c7a4b56d9638c45
|
|
| BLAKE2b-256 |
8bf5d16d6a5e6b8386ff8c94b26b5b1412056bb8edcb9c78918ca40633c37b34
|
File details
Details for the file gitfleet-0.2.8-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09397a23bda8c0a7a0334bfe0b43b85dd2bd30f48e718f0d03b2155589511333
|
|
| MD5 |
78a3890b7398073a8b291e96023851d9
|
|
| BLAKE2b-256 |
cd91d449120491b84327a76130085fe8c06473ee9883709a3e9f81c0fbb263b1
|
File details
Details for the file gitfleet-0.2.8-cp312-none-win_amd64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp312-none-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e9dc7504d3fbd60ed6c89eae8a161442dbd6a625af0a50face72e6d4b3b903e
|
|
| MD5 |
82ec0f9bef5fd1dfdd567999e27c666b
|
|
| BLAKE2b-256 |
2e726bc63cbea85f4abdec13643e857c0d0d35cd57b3a754f92ca798119fc20f
|
File details
Details for the file gitfleet-0.2.8-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 3.9 MB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2449165cc5e0c188317078f360c43b5d3434a8a1c981fb4c61322323dcc83bfc
|
|
| MD5 |
179305081e2964917d2abf5403599ce8
|
|
| BLAKE2b-256 |
41b7a7018ceb077a8481e2539426eae8fae898b80117fbf00789fb4c6efbd8dc
|
File details
Details for the file gitfleet-0.2.8-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49b7cfb54a0afc45145a12281158d5f539f710ddbfbf35969f89a3a92cb88575
|
|
| MD5 |
2ac5ac97b89f610f2f326c79e88cdb5f
|
|
| BLAKE2b-256 |
4d223e8ec5a5c3cb5252b30e04f56d9b206f2e2a9b7bcc949bb00d5c1ccbacad
|
File details
Details for the file gitfleet-0.2.8-cp311-none-win_amd64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp311-none-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de6de29779475b56a50bbdb568205c3815e69dd77f1504f736da11ee1036946a
|
|
| MD5 |
ec9a16496f18ad72f563c2453b77d4b6
|
|
| BLAKE2b-256 |
d5ffd3c466026b3ecc749698290d456ccf5bf1f7ae9693e286f2ed30a1fad714
|
File details
Details for the file gitfleet-0.2.8-cp311-cp311-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp311-cp311-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 3.9 MB
- Tags: CPython 3.11, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2552d5e6d4ca775b30ee4c0aec4c33628f910808a78c2332114e76df8c9c94bd
|
|
| MD5 |
0d0ea3fce7c6e423fb1c9353f91e9f5d
|
|
| BLAKE2b-256 |
2e22ab13a94fd9bcc4bf9dcf5be374f655bd59441506e8d20f524b499c97251f
|
File details
Details for the file gitfleet-0.2.8-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74b82300e2a96877f1bd18c76e364a6698d7303bf25591e4d56050fe4e090356
|
|
| MD5 |
ed2a4a7234ef559a7eb4c6c469ed0fe0
|
|
| BLAKE2b-256 |
9c2fb67a377f9a9a93598a1db67dc8abfbd7cc7ac31f55b70fc1a2eef78f6979
|
File details
Details for the file gitfleet-0.2.8-cp310-none-win_amd64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp310-none-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2c8da48f9e03ea3debd06dde7ab83577e43c856152b1b66ff777461bafd57ab
|
|
| MD5 |
0f1532a3c9209164e3cfc2e2a6667ca3
|
|
| BLAKE2b-256 |
3c50b92be01d0853381c9dc5cfccbf2a9b5b3109e47b97b821bb961d00df402d
|
File details
Details for the file gitfleet-0.2.8-cp310-cp310-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp310-cp310-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 3.9 MB
- Tags: CPython 3.10, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ef7e6dffdacd3b70152b52cd59f848815578ae82dff55e0f1806353ef2bfaf6
|
|
| MD5 |
509b0ebc2a8687c47d757638a84bd60b
|
|
| BLAKE2b-256 |
b9e0a39657b98d31fd3d8aef6a0d0549312e88afd8eecfdb21aa4acf4d7922d3
|
File details
Details for the file gitfleet-0.2.8-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e06b771f471915b9d22382d4abfe588c14ac1abef82db513fcd3198e743cfa3b
|
|
| MD5 |
21f8c07ab10698811637921db9d3458a
|
|
| BLAKE2b-256 |
9fd7970cb09e41edd738b50b1f28f894bb68636f54d60519dc5d87422d1aa071
|
File details
Details for the file gitfleet-0.2.8-cp39-none-win_amd64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp39-none-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
549aff4e0d3b99d08eafecd21bc54ebc622f8edb4f2d33ded72dbed17a266725
|
|
| MD5 |
7eebb3b96a3c7a31032ab219d3386992
|
|
| BLAKE2b-256 |
34ee099e669f66cfbcbc28afbcffded29b9dc1b6e600f39a078ff9ffa6a17981
|
File details
Details for the file gitfleet-0.2.8-cp39-cp39-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp39-cp39-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 3.9 MB
- Tags: CPython 3.9, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
060950e7e88debfca43bbf248338c2d4c78b3e277d620f1402613b8e90361188
|
|
| MD5 |
b0687bb41d8d81d91b2540febee0be72
|
|
| BLAKE2b-256 |
ba0e138b9e7cdf18cc82fc2a9ee82ae27c68fe5cb879b65b2bd19025aa5ad809
|
File details
Details for the file gitfleet-0.2.8-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: gitfleet-0.2.8-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
553385670858c31ddff02b40343e817ff105ff594b023a70e14c1d84c48e3831
|
|
| MD5 |
cdda3b33f4ad8432652dbd271a3488e8
|
|
| BLAKE2b-256 |
4180a7875d0754f12fe31e6722789ad1c1b8f4df89c76ceaedb74628deaea054
|