|
24 | 24 |
|
25 | 25 | from yandex_cloud_ml_sdk._logging import get_logger |
26 | 26 | from yandex_cloud_ml_sdk._types.misc import UNDEFINED, PathLike, UndefinedOr, coerce_path, get_defined_value |
| 27 | +from yandex_cloud_ml_sdk._types.proto import ProtoBased |
27 | 28 | from yandex_cloud_ml_sdk._types.resource import BaseDeleteableResource, safe_on_delete |
28 | 29 | from yandex_cloud_ml_sdk._utils.packages import requires_package |
29 | 30 | from yandex_cloud_ml_sdk._utils.pyarrow import read_dataset_records |
|
40 | 41 | DEFAULT_MAX_PARALLEL_DOWNLOADS: Final[int] = 16 # maximum number of files open for writing during download |
41 | 42 |
|
42 | 43 | @dataclasses.dataclass(frozen=True) |
43 | | -class ValidationErrorInfo: |
| 44 | +class ValidationErrorInfo(ProtoBased[ProtoValidationError]): |
44 | 45 | error: str |
45 | 46 | description: str |
46 | 47 | rows: tuple[int, ...] |
47 | 48 |
|
| 49 | + # pylint: disable=unused-argument |
48 | 50 | @classmethod |
49 | | - def _from_proto(cls, proto: ProtoValidationError) -> ValidationErrorInfo: |
| 51 | + def _from_proto(cls, *, proto: ProtoValidationError, sdk: BaseSDK) -> ValidationErrorInfo: |
50 | 52 | return cls( |
51 | 53 | error=proto.error, |
52 | 54 | description=proto.error_description, |
@@ -74,15 +76,15 @@ class DatasetInfo: |
74 | 76 |
|
75 | 77 |
|
76 | 78 | @dataclasses.dataclass(frozen=True) |
77 | | -class BaseDataset(DatasetInfo, BaseDeleteableResource): |
| 79 | +class BaseDataset(DatasetInfo, BaseDeleteableResource[ProtoDatasetInfo]): |
78 | 80 | @classmethod |
79 | | - def _kwargs_from_message(cls, proto: ProtoDatasetInfo, sdk: BaseSDK) -> dict[str, Any]: # type: ignore[override] |
| 81 | + def _kwargs_from_message(cls, proto: ProtoDatasetInfo, sdk: BaseSDK) -> dict[str, Any]: |
80 | 82 | kwargs = super()._kwargs_from_message(proto, sdk=sdk) |
81 | 83 | kwargs['id'] = proto.dataset_id |
82 | 84 | kwargs['created_by'] = proto.created_by_id |
83 | 85 | kwargs['status'] = DatasetStatus._from_proto(proto.status) |
84 | 86 | kwargs['validation_errors'] = tuple( |
85 | | - ValidationErrorInfo._from_proto(p) for p in proto.validation_error |
| 87 | + ValidationErrorInfo._from_proto(proto=p, sdk=sdk) for p in proto.validation_error |
86 | 88 | ) |
87 | 89 | kwargs['allow_data_logging'] = proto.allow_data_log |
88 | 90 | return kwargs |
|
0 commit comments