You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rename PermissionError to ForbiddenError — shadows builtins.PermissionError, will cause confusion
Rename sync client aclose() to close() — the "a" prefix conventionally means "async"; confusing on AmigoClient and AmigoHttpClient
Normalize resource property names to plural — currently client.conversation (singular) vs client.users (plural). Standardize to: client.conversations, client.services, client.organizations, client.users
Align method naming — organization.get() vs user.get_users(). Pick one convention
Should-Fix (Design Improvements)
Export AmigoConfig and all error classes from __init__.py — currently users must import from submodules
Add mypy/pyright to CI — py.typed marker exists but no type checker runs
Move GetMessageSourceResponse to models.py — hand-written Pydantic model in resource file is maintenance risk
Remove dead InteractionInput TypedDict or prefix with _
Configurable timeout at client level (currently only via **httpx_kwargs)
Summary
The SDK has a solid core (dual sync/async, proper auth/retry/streaming, clean error hierarchy, generated models) but covers ~20-25% of the documented API surface. Minimum bar for 1.0: fix the 4 breaking naming issues, complete the public export surface, add type checking to CI, and add at least the resource categories referenced in the developer guide's Python SDK examples.
Python SDK v1.0 Readiness Assessment
Current version: 0.137.1 | Target: 1.0.0
Must-Fix (Breaking Changes)
PermissionErrortoForbiddenError— shadowsbuiltins.PermissionError, will cause confusionaclose()toclose()— the "a" prefix conventionally means "async"; confusing onAmigoClientandAmigoHttpClientclient.conversation(singular) vsclient.users(plural). Standardize to:client.conversations,client.services,client.organizations,client.usersorganization.get()vsuser.get_users(). Pick one conventionShould-Fix (Design Improvements)
AmigoConfigand all error classes from__init__.py— currently users must import from submodulespy.typedmarker exists but no type checker runsGetMessageSourceResponsetomodels.py— hand-written Pydantic model in resource file is maintenance riskInteractionInputTypedDict or prefix with_*ParametersQuerytypes — generated names likeGetUsersParametersQueryleak code-gen naming schemeAsyncIterator[T]/Iterator[T]instead ofAsyncGeneratorscripts/from wheel build —packages = ["src/amigo_sdk", "scripts"]ships code-gen scriptslicenseandurlsfields topyproject.tomlMissing API Coverage (~75% of endpoints missing)
Entire resource categories not in SDK:
Missing endpoints within existing resources:
converse_realtime)Nice-to-Have
continuation_token)__repr__onAmigoClient/AsyncAmigoClient**httpx_kwargs)Summary
The SDK has a solid core (dual sync/async, proper auth/retry/streaming, clean error hierarchy, generated models) but covers ~20-25% of the documented API surface. Minimum bar for 1.0: fix the 4 breaking naming issues, complete the public export surface, add type checking to CI, and add at least the resource categories referenced in the developer guide's Python SDK examples.
🤖 Generated with Claude Code