Closed jjmaldonis closed 2 months ago
The provided changes introduce support for search-related functionality in the response data, allowing for the retrieval of search queries and associated hit information. The key changes include the addition of new data classes, Hit
and Search
, and the modification of the existing Channel
class to include an optional search
field.
File | Change Summary |
---|---|
deepgram/clients/listen/v1/websocket/response.py |
1. Added Hit data class to represent hit information for the response. 2. Added Search data class to represent search information for the response. 3. Modified Channel class to include an optional search field, which is a list of Search objects. 4. Updated the __getitem__ method in the Channel class to handle the new search field. |
sequenceDiagram
participant Client
participant WebsocketResponse
participant Channel
participant Hit
participant Search
Client->>WebsocketResponse: Receive response
WebsocketResponse->>Channel: Create Channel object
Channel->>Search: Create Search object(s)
Search->>Hit: Create Hit object(s)
Channel->>Client: Return Channel object with search information
The sequence diagram above illustrates the high-level flow of the new search-related functionality. The client receives a WebsocketResponse, which is then used to create a Channel object. The Channel object then creates one or more Search objects, each of which contains one or more Hit objects. Finally, the Channel object is returned to the client, providing access to the search information.
deepgram/clients/listen/v1/websocket/response.py (3)
`96-105`: **LGTM!** The `Hit` data class is well-defined with appropriate fields, types, and default values. It inherits from `BaseResponse` and is decorated with `@dataclass`, which is a good practice. --- `108-121`: **LGTM!** The `Search` data class is well-defined with appropriate fields, types, and default values. It inherits from `BaseResponse` and is decorated with `@dataclass`, which is a good practice. The `__getitem__` method is overridden to handle the conversion of hits from dictionary to `Hit` objects, which is a nice touch. --- `130-138`: **LGTM!** The `Channel` data class has been updated with a new optional `search` field, which is appropriately typed as `Optional[List[Search]]` and has a default value of `None`. The field is decorated with `field(default=None, metadata=dataclass_config(exclude=lambda f: f is None))`, which is a good practice to exclude the field from serialization if it is `None`. The `__getitem__` method has been updated to handle the conversion of the `search` field from dictionary to a list of `Search` objects, which is consistent with the handling of the `alternatives` field.
Awesome! Thanks @jjmaldonis
Proposed changes
Adds the
Search
response for streaming requests. This is supported.I pulled the relevant code directly from
clients/listen/v1/rest/response.py
.Types of changes
What types of changes does your code introduce to the community Python SDK?
Checklist
Further comments
Bug report: https://discord.com/channels/1108042150941294664/1285161452763611158/1285161452763611158
Summary by CodeRabbit