- Initialize route_impls to None in constructor to prevent AttributeError
- Consolidate initialization checks to single point in request() method
- Improve error message to be more helpful ("Please call initialize() first")
- Add comprehensive test suite to prevent regressions
The library client now has better error handling when users forget to call
initialize(), showing a clear ValueError instead of confusing AttributeError.
All initialization validation is now centralized in the request() method,
with internal methods (_call_non_streaming, _call_streaming, _convert_body)
relying on this single check for cleaner, more maintainable code.