https://github.com/aekasitt/alcedo
Oxidized and Optimistic HTTP Client for Python
https://github.com/aekasitt/alcedo
aiohttp http http-client httpx hyper hyperium json oxidized python python3 requests reqwest serde
Last synced: about 2 months ago
JSON representation
Oxidized and Optimistic HTTP Client for Python
- Host: GitHub
- URL: https://github.com/aekasitt/alcedo
- Owner: aekasitt
- License: mit
- Created: 2024-03-22T19:01:44.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-04-10T08:15:46.000Z (over 1 year ago)
- Last Synced: 2025-08-18T01:33:48.428Z (about 2 months ago)
- Topics: aiohttp, http, http-client, httpx, hyper, hyperium, json, oxidized, python, python3, requests, reqwest, serde
- Language: Python
- Homepage:
- Size: 2.2 MB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Alcedo
[](https://pypi.org/project/alcedo)
[](https://pypi.org/project/alcedo)
[](https://pypi.org/project/alcedo)
[](https://pypi.org/project/alcedo)
[](.)
[](.)
[](.)
[](.)
[](.)
This project aims to be the feature-incomplete version of [httpx](https://github.com/encode/httpx)
and written in Rust.Will this be a drop-in replacement for any of the leading packages like...
- 🐍 _aiohttp_ ?
[](https://github.com/aio-libs/aiohttp)
[](https://pypi.org/project/aiohttp)
[](https://docs.aiohttp.org/en/stable/)
- 🐍 _httpx_ ?
[](https://github.com/encode/httpx)
[](https://pypi.org/project/httpx)
[](https://www.python-httpx.org/)
- 🐍 _requests_ ?
[](https://github.com/psf/requests)
[](https://pypi.org/project/requests)
[](https://requests.readthedocs.io/en/latest/)### Probably not.
But it aims to bring to Python the speed and feature-richness of Rust packages
like...- 🦀 **hyper**
[](https://github.com/hyperium/hyper)
[](https://crates.io/crates/hyper)
[](https://docs.rs/hyper/latest/hyper/)
- 🦀 **reqwest**
[](https://github.com/seanmonstar/reqwest)
[](https://crates.io/crates/reqwest)
[](https://docs.rs/reqwest/latest/reqwest/)
- 🦀 **serde**
[](https://github.com/serde-rs/serde)
[](https://crates.io/creates/serde)
[](https://docs.rs/serde/latest/serde/)## Getting started
TBD;
## Example usage
```py
print("Hello, World!")
```## Do you even bench bro?
[Benchmarks](./benchmarks.md)
## Roadmap
- Write (actual) asynchronous tests for `aiohttp` benchmarks.
- Create asynchronous implementation for `alcedo.Client`.
- Write asynchronous tests.
- Write malformed-json test servers.
- Create implementation where POST body can be attached.
- Create implementation where DELETE requests can be made.
- Write asynchronous tests for `httpx` and `requests`## Contributions
To contribute to the project, fork the repository and clone to your local device and development
dependencies including four extra libraries not included in final builds as such:- **maturin** Build and publish crates with pyo3, rust-cpython and cffi bindings as well as rust binaries as python packages
[](https://github.com/PyO3/maturin)
[](https://pypi.org/project/maturin)
[](https://maturin.rs)
- **mypy** Optional static typing for Python
[](https://github.com/python/mypy)
[](https://pypi.org/project/mypy)
[](https://mypy.readthedocs.io/en/stable/)
- **pytest** The pytest framework makes it easy to write small tests, yet scales to support complex functional testing
[](https://github.com/pytest-dev/pytest)
[](https://pypi.org/project/pytest)
[](https://docs.pytest.org/en/latest)
- **ruff** An extremely fast Python linter and code formatter, written in Rust.
[](https://github.com/astral-sh/ruff)
[](https://pypi.org/project/ruff)
[](https://docs.astral.sh/ruff)Use the following commands to setup your local environment with development dependencies:
```bash
pip install --user poetry
poetry install --with dev
```## Acknowledgements
* [reqwest.py](https://github.com/thrzl/reqwest.py) by the amazing
[@thrzl](https://github.com/thrzl) giving the easiest primer to oxidizing python interface.
* [hyperjson](https://github.com/mre/hyperjson) by the amazing
[@mre](https://github.com/mre) even though has been archived since Sep 14, 2023 but really makes
JSON deserialization from Rust -> Python really approachable compared to alternatives.
* [Kingfisher 2017042438](https://freesvg.org/kingfisher-2017042438) under
[CC0 1.0 Public Domain Protection](https://creativecommons.org/publicdomain/) whoever made this
is an artist du juor.## License
This project is licensed under the terms of the MIT license.