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="消防", 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",
period="2026-W33", # or a month ("2026-08"), a year ("2026"), or "all"
)
print(reactions.total) # a 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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file negirau-0.1.0.tar.gz.
File metadata
- Download URL: negirau-0.1.0.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60b79b6cb0e1a5ffa49b853e8e7cb98bc7f0a0fef5fec8268fd162d2a5f90f07
|
|
| MD5 |
4c70289d0aebfe4cdecfcf609a1a4285
|
|
| BLAKE2b-256 |
dc486a46381edcf523c690a96961955a0bb95eb89545ae19284dc371795e7571
|
File details
Details for the file negirau-0.1.0-py3-none-any.whl.
File metadata
- Download URL: negirau-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ed799b27c0709593bcaab5fc91947ff8a9c43df1857302ad87afb04257129e0
|
|
| MD5 |
6fd2e497e79f4be6aed94799525cff8b
|
|
| BLAKE2b-256 |
a6482d2397a62f60261cf67dfdbd8e0cef6a193e4ede7496ad5f670e5b86a983
|