negirau
Python client for the Negirau public API (read-only, anonymous).
Hand-written around resource namespaces, a types package, a typed exception hierarchy, and retries with exponential backoff — and kept honest by contract tests: they load the service's build-time-generated openapi.json and prove that every operation is covered, that requests only use spec-declared parameters, and that spec-conformant payloads parse into the models.
Drift between the API and this client fails CI — the same guarantee code generation gave, without generated code.
Install
pip install negirau
Usage
from negirau import Negirau
client = Negirau()
found = client.subjects.list(q="library", limit=5) # free-text name search
for subject in found.subjects:
print(subject.id, subject.name)
nearby = client.subjects.list_near(35.64, 139.65, radius=3000)
reactions = client.subjects.reactions.retrieve("0e6f9b3a-6b1e-4b8a-9a6a-1c2d3e4f5a6b")
print(reactions.total) # the all-time display value: exact up to 100, "100+" beyond
Async:
from negirau import AsyncNegirau
async with AsyncNegirau() as client:
page = await client.subjects.list(q="花火")
Errors and retries:
from negirau import Negirau, NotFoundError, RateLimitError
client = Negirau(max_retries=2) # 408/409/429/5xx retry with exponential backoff
try:
client.subjects.retrieve("no-such-subject")
except NotFoundError as error:
print(error.status_code, error.code) # 404 not_found
except RateLimitError:
...
Types live in negirau.types (Subject, SubjectPage, ReactionsSummary, DisplayValue, …).
Notes
- Counts are display values by design: exact up to 100,
"100+"beyond, and never rankings — no API returns unbounded exact numbers. - There are no bulk dumps: resolve names with
client.subjects.list(q=...)(server-side trigram search, Japanese and English substrings).
License
Apache-2.0. This package lives in the negirau monorepo, whose server code is separately licensed under AGPL-3.0-only.
Metadata
Release files for negirau 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| negirau-0.3.2.tar.gz | 11.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| negirau-0.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.1 kB
Release files / negirau-0.3.2.tar.gz
| Download URL | negirau-0.3.2.tar.gz |
|---|---|
| Size | 11.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fe8d3f5d1db14be889e8998ea5db7feb2d1928e6c260ed1e9e9d3a8c501bcef9
|
|
BLAKE2b-256 checksum How to use checksums |
60878e49b108f09c5b41ea47ddc4c54f1f07185e3089d745cb55f004065985ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / negirau-0.3.2-py3-none-any.whl
| Download URL | negirau-0.3.2-py3-none-any.whl |
|---|---|
| Size | 14.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6aee1f3ef8d155f52681ea75d8cfa74c0be5136f929d22c231c4c479448672cf
|
|
BLAKE2b-256 checksum How to use checksums |
be761c5c4269438b2cefdc11ef0df2ac8bb34e6ffe9aed96823fc061c69408f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|