Skip to main content

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))
    # ...

Metadata

Release files for SlyAPI 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for SlyAPI 0.6.1
File Size Uploaded
slyapi-0.6.1.tar.gz 20.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for SlyAPI 0.6.1
File Interpreter ABI Platform
SlyAPI-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 41.1 kB

Release files / slyapi-0.6.1.tar.gz

Download URL slyapi-0.6.1.tar.gz
Size 20.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b60b9d7aac2f21f6d22edcd3fb29afaa79dd943d93a7815fcd3429e5797e5116
BLAKE2b-256 checksum
How to use checksums
9d0e7689fdedd4cf6fe576efc6d4d320cf1911cf55d136949909d47792e8dcd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.0

Release files / SlyAPI-0.6.1-py3-none-any.whl

Download URL SlyAPI-0.6.1-py3-none-any.whl
Size 20.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cbb89493022124ca6fb0aa9b54a1ab72de6fe247c2a0f55aaf1f67889a86afb2
BLAKE2b-256 checksum
How to use checksums
e2ba7e780f34815203def4ac73ab9a5017cfb448610d22a95aa5986c9047bd31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.0

Release history Release notifications | RSS feed

This release

0.6.1 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.3.0

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page