mirror of
https://github.com/hanzoai/python-sdk.git
synced 2026-10-23 20:23:00 +00:00
This distribution shipped two complete generated clients under one import root. `hanzoai.cloud` is the current one, generated from hanzoai/cloud's openapi.yaml at the ref .spec-lock names. `hanzoai.api` / `hanzoai.models` was another, and the package root re-exported its 2,202 names flat — so the obvious spelling, `from hanzoai import ApiClient`, reached the second client, while `hanzoai.cloud.ApiClient` reached the first. Nine core names existed twice as distinct classes bound to distinct documents, and which one a caller got depended on which import line they happened to write. The second lineage was not an older copy of the first. It was a projection of a document that no longer exists: of the 1,695 routes it binds, 243 are still in the document at v1.801.495 and 1,452 are not. Eighty-six percent of it builds a request the server answers with a 404. It had been broken for as long as it had been shipping, and nothing said so, because a client only fails at the call. So it goes, along with its runtime — api_client, api_response, configuration, exceptions, rest — which `hanzoai.cloud` carries its own copies of. The package root now exports `cloud` and nothing else. Nothing is re-exported flat on purpose: a name that appears in two places is a name that can disagree with itself, and the namespace already says which document a symbol came from. The smoke tests pinned the deleted surface — they asserted more than 300 api modules and imported `hanzoai.api.tracker_projects_api` by name, which is how a suite can stay green over a client that 404s. They now assert the surviving one, plus the invariant that made this possible in the first place: exactly one generated package under `hanzoai`, and none of the nine core names re-exported flat beside it.