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.1.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

stollen-0.4.1-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: stollen-0.4.1.tar.gz
  • Upload date:
  • Size: 13.4 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.1.tar.gz
Algorithm Hash digest
SHA256 1b36927eb1b4cf4103efaa994cb3b7a7d2df685106018352aceadd0310c38943
MD5 ea2c17ff87e51433431229e8460a05fb
BLAKE2b-256 b892aa2eb38859d3363028afbcdb7626013b5ffb0564b50692606a249eca2067

See more details on using hashes here.

Provenance

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

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

Attestations:

File details

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

File metadata

  • Download URL: stollen-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 18.8 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7f8aca11f87bc235ce43075b73a8ea06645546cb2bef3f6bc0e07905e204f6ec
MD5 df14a18681ec4dbc2d7bf235c4a2ce02
BLAKE2b-256 da9de883ca11e572456d865459b23554426e583aaf710e12c7846a21463475a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for stollen-0.4.1-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