rone-arena is the Python client for the Rone Arena API. Each of the API’s forty-seven operations is a method on one of four sub-clients, hung off a single facade that shares one HTTP session, timeout and user agent. Its only runtime dependency is requests.
A client library for an API that already documents itself well should be thin. This one mirrors the API’s own grouping exactly — academy, heroes, user, addon — as four sub-clients on a single object, so a reader who knows the endpoint knows the method, and one transport underneath owns the session, the timeout and the user agent.
Parameters pass through as keyword arguments and responses come back as parsed JSON. There is no second schema to keep in step with the first, which is the part that usually rots in a generated client.
The API answers 503 while it is in maintenance or shedding load, and names an alternative host in the body. Handled naively that reached callers as a JSON decode failure somewhere inside response parsing — technically true, entirely unhelpful, and impossible to write a retry against.
A 503 now raises a dedicated exception carrying the status message and the failover host, both read out of the body defensively so a differently shaped error page cannot turn a service outage into a KeyError. Callers handle it where they already handle network failures.
The package was previously published as OpenMLBB, and that name was removed from the index rather than aliased. There is no transitional shim: the install name changed, the import changed, and the class changed, so this is a breaking change stated as one.
The version number also goes backwards. The old package had reached 4.2.0; this is a new package, so it restarts at 1.0.0. A 4.2.0 was briefly published under the new name by mistake and has since been yanked, which is why the migration guidance is to avoid a pin that reaches for anything above 4.