Skip to main content

An asynchronous framework to easily build a client-side API

Project description

MIT License PyPi status PyPi Package Version Downloads Supported python versions

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stollen-0.4.2.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

stollen-0.4.2-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file stollen-0.4.2.tar.gz.

File metadata

  • Download URL: stollen-0.4.2.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for stollen-0.4.2.tar.gz
Algorithm Hash digest
SHA256 15a38e9898c09a5d3d59c82cf8ca2d0410748dbd9ce3ada8f7bd29d8706847fe
MD5 93bebc097f3289826ffc63f8d677e689
BLAKE2b-256 3d0f7b23636b2dde38e9f477b7503ee471091c91062d5bd22999ea1867dfd31f

See more details on using hashes here.

Provenance

The following attestation bundles were made for stollen-0.4.2.tar.gz:

Publisher: pypi-release.yml on py-stollen/stollen

Attestations:

File details

Details for the file stollen-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: stollen-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for stollen-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c1e3f7f7eda4e0687fe094d85854c791432ff7533a043c772ca3acb87e697017
MD5 b9a8f66153be070dfdf4ab317cd3c524
BLAKE2b-256 ba60059f2504dfb671e829a6e89ce2834d85f2facef0d8bac15c8e1a8121a9a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for stollen-0.4.2-py3-none-any.whl:

Publisher: pypi-release.yml on py-stollen/stollen

Attestations:

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page