Wumpy-rest
Richly and accurately typed wrapper around the Discord REST API.
Usage
The best way to use wumpy-rest is to import APIClient:
import anyio
from wumpy.rest import APIClient
TOKEN = 'ABC123.XYZ789'
async def main():
async with APIClient(TOKEN) as api:
print(await api.fetch_my_user())
anyio.run(main)
APIClient is a class that implements all routes of the Discord API. This is
made up of multiple route classes. You can create your own class with the
routes you use:
from wumpy.rest import (
ApplicationCommandRequester, InteractionRequester,
HTTPXRequester
)
class MyAPIClient(ApplicationCommandRequester, InteractionRequester, HTTPXRequester):
__slots__ = () # Save some memory for this class
Files
Some endpoints support uploading files, for these a file-like object is
expected that's been opened in binary-mode (for example 'rb').
For the message/interaction endpoints, remember to include a matching
attachment object with 'id' set to the index of the file.
Ratelimiter
You can pass a custom ratelimiter to the requester if you want to customize
that behaviour. For more, read the documentation.
Here's an example of a ratelimiter that does no ratelimiting and does not
handle any kind of 429-responses.
from contextlib import asynccontextmanager
from typing import (
Any, AsyncContextManager, AsyncGenerator, Awaitable, Callable, Coroutine,
Mapping
)
import anyio
from wumpy.rest import APIClient
class NoOpRatelimiter:
"""Ratelimiter implementation that does nothing; a no-op implementation."""
async def __aenter__(self):
return self
async def __aexit__(
self,
exc_type: Optional[Type[BaseException]],
exc_val: Optional[BaseException],
exc_tb: Optional[TracebackType]
) -> object:
pass
@asynccontextmanager
async def __call__(self, route: Route) -> AsyncGenerator[
Callable[[Mapping[str, str]], Coroutine[Any, Any, object]],
None
]:
# The return type may look a little weird, but this is how
# @asynccontextmanager works. You pass it a function that returns an
# async generator (which yields what the asynchronous context manager
# then returns).
yield self.update
async def update(self, headers: Mapping[str, str]) -> object:
pass
async def main():
async with APIClient(TOKEN, ratelimiter=NoOpRatelimiter()) as api:
print(await api.fetch_my_user())
anyio.run(main)
Metadata
Release files for wumpy-rest 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wumpy-rest-0.3.0.tar.gz | 41.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wumpy_rest-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 90.7 kB
Release files / wumpy-rest-0.3.0.tar.gz
| Download URL | wumpy-rest-0.3.0.tar.gz |
|---|---|
| Size | 41.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2cbc1ea04321b76a2c9fa7bd369ad4624fd646f0769c0b3ef22478a8b095b7b5
|
|
BLAKE2b-256 checksum How to use checksums |
1c4cd35d9d4a56d49f54c6d3e205222c76b5e6b13a777afebe93832ae9f50367
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.26.0
|
Release files / wumpy_rest-0.3.0-py3-none-any.whl
| Download URL | wumpy_rest-0.3.0-py3-none-any.whl |
|---|---|
| Size | 49.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c6bcbfe08064475bdc2b80ad2ee8ae91d8a383a7cc582363d12aefed4b9bea24
|
|
BLAKE2b-256 checksum How to use checksums |
7cdbaf88c32aede19c3958129c0b4052e62cea1955ffd98c253f872dd260e112
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.26.0
|