Python Design
The Python SDKs are designed to be easy to use and easy to debug.
Fully Typed
Modern Python provides type-hints to developers, and that's something that Speakeasy-generated Python SDKs expose to users. Here's a bit of the code that we generate from Swagger's Petstore OpenAPI schema.
@dataclass_json
@dataclass
class Pet:
name: str = field(metadata={'dataclasses_json': {'letter_case': utils.field_name('name')}})
photo_urls: list[str] = field(metadata={'dataclasses_json': {'letter_case': utils.field_name('photoUrls')}})
category: Optional[shared.Category] = field(default=None, metadata={
'dataclasses_json': {'letter_case': utils.field_name('category')}})
id: Optional[int] = field(default=None, metadata={'dataclasses_json': {'letter_case': utils.field_name('id')}})
status: Optional[PetStatusEnum] = field(default=None,
metadata={'dataclasses_json': {'letter_case': utils.field_name('status')}})
tags: Optional[list[shared.Tag]] = field(default=None,
metadata={'dataclasses_json': {'letter_case': utils.field_name('tags')}})
Using dataclasses for all the models we generate allows us to append per field metadata to correctly serialize and deserialize models based on the definitions provided by the OpenAPI document, whether they're serialized as query-parameters, path-parameters, or request-bodies.
If you have any feedback or want to suggest improvements or ask for a new feature please get in contact in
the #client-sdks
channel in
our public Slack.