handbook/docs/libraries.md
disqualifier e5ca1c0ada style the live libraries table + add Language column
- libraries.md: render the live lib list as a 3-column table (Library /
  What it does / Language), wrapped in .rt-lib-table so it picks up
  explicit styling (Material only auto-styles markdown tables, not
  innerHTML-injected ones — that's why it rendered bare before).
- extra.css: branded table (navy header, blue borders, hover rows,
  code-styled linked names) and a blue Language badge.

Verified in-browser against real Gitea API data (14 repos fetched,
handbook denylisted -> 13 libs): table renders sorted with language
badges, matches the theme. Live load on prod still needs Gitea CORS
(app.ini [cors] ALLOW_DOMAIN = the docs origin).

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

4.5 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…

!!! info "If the live list is empty or stale" The fetch runs in your browser against the Gitea API and needs the org repos to be readable unauthenticated (they are — it's a public org) and CORS to allow the docs domain. If the list won't load, browse the org directly at git.rethinkstudios.io/rethink-public. The fallback for a disabled live fetch is a webhook rebuild — a push to any rethink-public repo triggers a site rebuild.