An asynchronous framework to easily build a client-side API
Project description
Stollen is an asynchronous framework designed to streamline the process of building API clients, written in Python 3.9+ using aiohttp and pydantic. With a declarative approach, Stollen allows developers to define API methods, handle responses, and manage errors in a structured way, focusing on clarity and scalability.
Installation
pip install -U stollen
Example
from __future__ import annotations
import asyncio
import logging
from stollen import Stollen, StollenMethod, StollenObject
from stollen.enums import HTTPMethod
from stollen.exceptions import StollenAPIError
class CoingeckoAPIError(StollenAPIError):
pass
class RateLimitError(CoingeckoAPIError):
pass
class Coingecko(Stollen):
def __init__(self) -> None:
super().__init__(
base_url="https://api.coingecko.com/api/v3",
error_message_key=["status", "error_message"],
general_error_class=CoingeckoAPIError,
error_codes={429: RateLimitError},
stringify_detailed_errors=False,
)
async def ping(self) -> GeckoSays:
call: Ping = Ping()
return await self(call)
class GeckoSays(StollenObject[Coingecko]):
gecko_says: str
class Ping(
StollenMethod[GeckoSays, Coingecko],
http_method=HTTPMethod.GET,
api_method="/ping",
returning=GeckoSays,
):
pass
async def main() -> None:
logging.basicConfig(level=logging.DEBUG)
async with Coingecko() as coingecko:
gecko_says: GeckoSays = await coingecko.ping()
logging.info(gecko_says)
if __name__ == "__main__":
asyncio.run(main())
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 Distribution
File details
Details for the file stollen-0.5.2.tar.gz
.
File metadata
- Download URL: stollen-0.5.2.tar.gz
- Upload date:
- Size: 15.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ce277d32a04b4a6feed6eaaf1a379267bf6cc22ecb7ea9f53d709c12a15a967 |
|
MD5 | f490d235689177bbd55f999c762d3224 |
|
BLAKE2b-256 | b917c0bb2ece534a0bbddae7ca7534df700ec22d1b5c002471e7fb8e44537fe2 |
Provenance
The following attestation bundles were made for stollen-0.5.2.tar.gz
:
Publisher:
pypi-release.yml
on py-stollen/stollen
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
stollen-0.5.2.tar.gz
- Subject digest:
1ce277d32a04b4a6feed6eaaf1a379267bf6cc22ecb7ea9f53d709c12a15a967
- Sigstore transparency entry: 148947041
- Sigstore integration time:
- Predicate type:
File details
Details for the file stollen-0.5.2-py3-none-any.whl
.
File metadata
- Download URL: stollen-0.5.2-py3-none-any.whl
- Upload date:
- Size: 20.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76e4530c1e4cdc033332643d547ea263fb50ca0cf3f0b27e71745213f993b347 |
|
MD5 | 2d04445f3a2a8fc82bfcab2b76c0d389 |
|
BLAKE2b-256 | ecb051bb022e80f8a7c11023b2afebc2f947e0c8110f855ad0eb852c4d0ef905 |
Provenance
The following attestation bundles were made for stollen-0.5.2-py3-none-any.whl
:
Publisher:
pypi-release.yml
on py-stollen/stollen
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
stollen-0.5.2-py3-none-any.whl
- Subject digest:
76e4530c1e4cdc033332643d547ea263fb50ca0cf3f0b27e71745213f993b347
- Sigstore transparency entry: 148947043
- Sigstore integration time:
- Predicate type: