Skip to main content

Production-ready, auto-updating Riot API wrapper.

Project description

RiotSkillIssue

PyPI version Python Versions License: GPL v3 Tests

Production-ready, auto-updating, and fully typed Python wrapper for the Riot Games API.

Documentation · Examples · API Reference


Features

Feature Description
Type-Safe 100% Pydantic models for all requests and responses
Auto-Updated Generated daily from the Official OpenAPI Spec
Sync & Async First-class async client and a synchronous SyncRiotClient for scripts & notebooks
Resilient Automatic Retry-After handling, exponential backoff, and a rich error hierarchy
Distributed Pluggable Redis support for shared rate limiting and caching
Multi-Game Full support for LoL, TFT, LoR, and VALORANT APIs

Installation

Requires Python 3.8+.

pip install riotskillissue

Quick Start (Async)

import asyncio
from riotskillissue import RiotClient, Platform, Region

async def main():
    async with RiotClient() as client:
        account = await client.account.get_by_riot_id(
            region=Platform.EUROPE,
            gameName="Agurin",
            tagLine="EUW"
        )
        print(f"Found: {account.gameName}#{account.tagLine}")

        summoner = await client.summoner.get_by_puuid(
            region=Region.EUW1,
            encryptedPUUID=account.puuid
        )
        print(f"Level: {summoner.summonerLevel}")

if __name__ == "__main__":
    asyncio.run(main())

Quick Start (Sync)

from riotskillissue import SyncRiotClient, Platform

with SyncRiotClient() as client:
    account = client.account.get_by_riot_id(
        region=Platform.EUROPE,
        gameName="Agurin",
        tagLine="EUW"
    )
    print(f"Found: {account.gameName}#{account.tagLine}")

Set your API key via environment variable:

export RIOT_API_KEY="RGAPI-your-key-here"

Or pass it directly:

async with RiotClient(api_key="RGAPI-...") as client:
    ...

Configuration

from riotskillissue import RiotClient, RiotClientConfig
from riotskillissue.core.cache import RedisCache, MemoryCache

config = RiotClientConfig(
    api_key="RGAPI-...",
    max_retries=5,
    cache_ttl=120,
    redis_url="redis://localhost:6379/0",  # Distributed rate limiting
    proxy="http://127.0.0.1:8080",        # Optional HTTP proxy
    log_level="DEBUG",                     # DEBUG, INFO, WARNING
)

cache = MemoryCache(max_size=2048)  # LRU in-memory cache
# or: cache = RedisCache("redis://localhost:6379/1")

async with RiotClient(config=config, cache=cache) as client:
    ...

Error Handling

from riotskillissue import NotFoundError, RateLimitError, RiotAPIError

try:
    account = await client.account.get_by_riot_id(...)
except NotFoundError:
    print("Player not found")
except RiotAPIError as e:
    print(f"[{e.status}] {e.message}")

Documentation

Full documentation is available at demoen.github.io/riotskillissue.

Legal

RiotSkillIssue is not endorsed by Riot Games and does not reflect the views or opinions of Riot Games or anyone officially involved in producing or managing Riot Games properties. Riot Games and all associated properties are trademarks or registered trademarks of Riot Games, Inc.

License

MIT. See the LICENSE file for details.

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

riotskillissue-0.2.0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

riotskillissue-0.2.0-py3-none-any.whl (72.8 kB view details)

Uploaded Python 3

File details

Details for the file riotskillissue-0.2.0.tar.gz.

File metadata

  • Download URL: riotskillissue-0.2.0.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for riotskillissue-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3af7d045496f764cd9a60316cb5a345937f0c2dacfbfecb68c86ce4f8409c6a2
MD5 728bc622ab8d9b30dd9f31d43ef62461
BLAKE2b-256 15d6161dab4841e8d9a875ccb3e9e80be35368fdffe89e34d52abb29c399d4cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for riotskillissue-0.2.0.tar.gz:

Publisher: publish.yml on Demoen/riotskillissue

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riotskillissue-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: riotskillissue-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 72.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for riotskillissue-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3b12f580c72975e753b5db78651dbddfff31529870ff8ae8b191e7908ee8c0e0
MD5 52005949e2f6b392847568295ee2ac9f
BLAKE2b-256 4c5bd7a0bd25c8848fae6a421f443d15aa24d978c334e02c00e7c61db6aa3f04

See more details on using hashes here.

Provenance

The following attestation bundles were made for riotskillissue-0.2.0-py3-none-any.whl:

Publisher: publish.yml on Demoen/riotskillissue

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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