Skip to main content

No-boilerplate, async and typed web api access with oauth1/2.

Project description

sly logo SlyAPI for Python

🐍 For Python 3.10+

No-boilerplate, async and typed web api access with oauth1/2. 😋

pip install slyapi

Meant as a foundation for other libraries more than being used directly. SlyAPI handles authorization and managing requests. It is used by my more specific libraries:

There is also a version of this library available for F#/C#:

This library does not provide full coverage of OAuth1 or OAuth2, particularly it does not support the device code flow, nor the legacy implicit flow. Since it is intended to interface with 3rd party APIs, it does not implement the password flow.


Example CLI usage:

py may need to be replaced with python3 on Linux or MacOS.

ls
#  ./my_cool_dev_app.py

py -m SlyAPI scaffold
#  ... (wizard run)
#  ./my_google_app.json

#  ... (credentials filled)

py -m SlyAPI grant
#  ... (wizard run)
#  ./oauth2_grant.json

Note that the libraries listed above implement a more specific wizard to each API.


Example library usage:

from SlyAPI import *

class Mode(Enum):
    XML  = 'xml'
    HTML = 'html'
    JSON = None

class Units(Enum):
    STANDARD = 'standard' # Kelvin
    METRIC   = 'metric'
    IMPERIAL = 'imperial'

class City:
    def __init__(self, src: dict[str, Any]):
        self.name = src['name']
        self.description = src['weather'][0]['description']
        self.temperature = src['main']['temp']
        # ...

class OpenWeather(WebAPI):
    base_url = 'https://api.openweathermap.org/data/2.5'

    def __init__(self, api_key: str):
        super().__init__(UrlApiKey('appid', api_key))

    async def city(self, location: str, mode: Mode=Mode.JSON,
            units: Units=Units.STANDARD,
            lang: str|None = None) -> City:
        '''Get the current weather of a city.
           Location format: `City,State,Country`
           where State and Country are ISO3166 codes. '''
        params = {
            'q': location,
            'lang': lang,
            'units': units,
            'mode': mode,
        }
        return City(await self.get_json('/weather', params))
    # ...

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

slyapi-0.6.1.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

SlyAPI-0.6.1-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

Details for the file slyapi-0.6.1.tar.gz.

File metadata

  • Download URL: slyapi-0.6.1.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for slyapi-0.6.1.tar.gz
Algorithm Hash digest
SHA256 b60b9d7aac2f21f6d22edcd3fb29afaa79dd943d93a7815fcd3429e5797e5116
MD5 bd5a700966e0665ba5f7e2657f2a884d
BLAKE2b-256 9d0e7689fdedd4cf6fe576efc6d4d320cf1911cf55d136949909d47792e8dcd6

See more details on using hashes here.

File details

Details for the file SlyAPI-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: SlyAPI-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 20.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for SlyAPI-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cbb89493022124ca6fb0aa9b54a1ab72de6fe247c2a0f55aaf1f67889a86afb2
MD5 6c8404247e9ed4f957685b704d198843
BLAKE2b-256 e2ba7e780f34815203def4ac73ab9a5017cfb448610d22a95aa5986c9047bd31

See more details on using hashes here.

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