handbook/docs/libraries.md
disqualifier 4fd19bf620 rename to 'rethink development', brighten lib table, drop stale note
- Rename site 'a rethink development' -> 'rethink development' (site_name,
  landing H1); copyright -> 'rethink development (handbook)'.
- libraries.md: remove the 'if the live list is empty' admonition now that
  Gitea CORS is fixed.
- extra.css: improve Library-column readability — brighter #cfe6ff code
  chips on a cyan-tinted bg, more weight, roomier cell padding (0.7/1em),
  nowrap lib names, accent-colored links.

Signed-off-by: disqualifier <dev@disqualifier.me>
2026-06-29 20:35:16 -04:00

4.0 KiB

Libraries

The shared rethink-public library suite. Before hand-rolling common functionality — retry/backoff, logging setup, HTTP sessions, proxies, webhooks, IMAP/mail, datastore/KV, crypto, discord.py helpers, timing/paths/masking utilities — check here first and prefer an existing lib.

This list is pulled live from Gitea, so a new library in the org shows up on the next page load — nothing here is rebuilt or version-pinned. Each entry links to the repo, where the README and tags live.

Install

Pin a tag in your dependencies — never an unpinned branch:

<lib> @ git+https://git.rethinkstudios.io/rethink-public/<lib>.git@<tag>

??? example "Using a library — install, import, go"

Add it to your project's deps (e.g. `pyproject.toml`):

```toml
[project]
dependencies = [
    "aioweb @ git+https://git.rethinkstudios.io/rethink-public/aioweb.git@v0.3.1",
]
```

Then use it — the README in each repo has the real surface; this is the shape:

```python
import asyncio

from aioweb import Session


async def main() -> None:
    """fetch a page through the shared async http session"""
    async with Session() as web:
        resp = await web.get("https://example.test")
        print(resp.status, len(resp.content))


asyncio.run(main())
```

Need to bump a lib? Change the `@<tag>` and reinstall — versions live with the
lib, not in these docs.

Loading libraries from Gitea…