|
2 | 2 | # Use of this source code is governed by a MIT license that can be found in the LICENSE file.
|
3 | 3 | # SPDX-License-Identifier: MIT
|
4 | 4 |
|
5 |
| -from dataclasses import dataclass |
6 |
| -from dataclasses_json import dataclass_json |
| 5 | +from dataclasses import dataclass, field |
| 6 | +from dataclasses_json import config, dataclass_json |
7 | 7 | from typing import List, Optional, TypedDict, Dict
|
8 | 8 | from ..enums import Sentiment
|
9 | 9 |
|
@@ -93,12 +93,22 @@ class Metadata:
|
93 | 93 | duration: Optional[float] = 0
|
94 | 94 | channels: Optional[int] = 0
|
95 | 95 | models: Optional[List[str]] = None
|
96 |
| - warnings: Optional[List[Warning]] = None |
| 96 | + warnings: Optional[List[Warning]] = field( |
| 97 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 98 | + ) |
97 | 99 | model_info: Optional[Dict[str, ModelInfo]] = None
|
98 |
| - summary_info: Optional[SummaryInfo] = None |
99 |
| - intents_info: Optional[IntentsInfo] = None |
100 |
| - sentiment_info: Optional[SentimentInfo] = None |
101 |
| - topics_info: Optional[TopicsInfo] = None |
| 100 | + summary_info: Optional[SummaryInfo] = field( |
| 101 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 102 | + ) |
| 103 | + intents_info: Optional[IntentsInfo] = field( |
| 104 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 105 | + ) |
| 106 | + sentiment_info: Optional[SentimentInfo] = field( |
| 107 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 108 | + ) |
| 109 | + topics_info: Optional[TopicsInfo] = field( |
| 110 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 111 | + ) |
102 | 112 | extra: Optional[str] = ""
|
103 | 113 |
|
104 | 114 | def __getitem__(self, key):
|
@@ -321,10 +331,16 @@ class Alternative:
|
321 | 331 | transcript: Optional[str] = ""
|
322 | 332 | confidence: Optional[float] = 0
|
323 | 333 | words: Optional[List[Word]] = None
|
324 |
| - summaries: Optional[List[SummaryV1]] = None |
| 334 | + summaries: Optional[List[SummaryV1]] = field( |
| 335 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 336 | + ) |
325 | 337 | paragraphs: Optional[Paragraphs] = None
|
326 |
| - entities: Optional[List[Entity]] = None |
327 |
| - translations: Optional[List[Translation]] = None |
| 338 | + entities: Optional[List[Entity]] = field( |
| 339 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 340 | + ) |
| 341 | + translations: Optional[List[Translation]] = field( |
| 342 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 343 | + ) |
328 | 344 |
|
329 | 345 | def __getitem__(self, key):
|
330 | 346 | _dict = self.to_dict()
|
@@ -354,7 +370,9 @@ def __getitem__(self, key):
|
354 | 370 | @dataclass_json
|
355 | 371 | @dataclass
|
356 | 372 | class Channel:
|
357 |
| - search: Optional[List[Search]] = None |
| 373 | + search: Optional[List[Search]] = field( |
| 374 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 375 | + ) |
358 | 376 | alternatives: Optional[List[Alternative]] = None
|
359 | 377 | detected_language: Optional[str] = ""
|
360 | 378 | language_confidence: Optional[float] = 0
|
@@ -414,8 +432,12 @@ class Segment:
|
414 | 432 | end_word: Optional[int] = 0
|
415 | 433 | sentiment: Optional[Sentiment] = ""
|
416 | 434 | sentiment_score: Optional[float] = 0
|
417 |
| - intents: Optional[List[Intent]] = None |
418 |
| - topics: Optional[List[Topic]] = None |
| 435 | + intents: Optional[List[Intent]] = field( |
| 436 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 437 | + ) |
| 438 | + topics: Optional[List[Topic]] = field( |
| 439 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 440 | + ) |
419 | 441 |
|
420 | 442 | def __getitem__(self, key):
|
421 | 443 | _dict = self.to_dict()
|
@@ -446,7 +468,7 @@ def __getitem__(self, key):
|
446 | 468 | @dataclass_json
|
447 | 469 | @dataclass
|
448 | 470 | class Topics:
|
449 |
| - segments: Optional[List[Segment]] = 0 |
| 471 | + segments: Optional[List[Segment]] = None |
450 | 472 |
|
451 | 473 | def __getitem__(self, key):
|
452 | 474 | _dict = self.to_dict()
|
@@ -475,11 +497,21 @@ def __getitem__(self, key):
|
475 | 497 | @dataclass
|
476 | 498 | class Results:
|
477 | 499 | channels: Optional[List[Channel]] = None
|
478 |
| - utterances: Optional[List[Utterance]] = None |
479 |
| - summary: Optional[SummaryV2] = None |
480 |
| - sentiments: Optional[Sentiments] = None |
481 |
| - topics: Optional[Topics] = None |
482 |
| - intents: Optional[Intents] = None |
| 500 | + utterances: Optional[List[Utterance]] = field( |
| 501 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 502 | + ) |
| 503 | + summary: Optional[SummaryV2] = field( |
| 504 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 505 | + ) |
| 506 | + sentiments: Optional[Sentiments] = field( |
| 507 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 508 | + ) |
| 509 | + topics: Optional[Topics] = field( |
| 510 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 511 | + ) |
| 512 | + intents: Optional[Intents] = field( |
| 513 | + default=None, metadata=config(exclude=lambda f: f is None) |
| 514 | + ) |
483 | 515 |
|
484 | 516 | def __getitem__(self, key):
|
485 | 517 | _dict = self.to_dict()
|
|
0 commit comments