databricks-sdk 0.58.0__py3-none-any.whl → 0.59.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of databricks-sdk might be problematic. Click here for more details.

Files changed (30) hide show
  1. databricks/sdk/__init__.py +13 -5
  2. databricks/sdk/service/aibuilder.py +0 -127
  3. databricks/sdk/service/apps.py +52 -46
  4. databricks/sdk/service/billing.py +9 -200
  5. databricks/sdk/service/catalog.py +5500 -7697
  6. databricks/sdk/service/cleanrooms.py +2 -32
  7. databricks/sdk/service/compute.py +456 -2515
  8. databricks/sdk/service/dashboards.py +1 -177
  9. databricks/sdk/service/database.py +18 -52
  10. databricks/sdk/service/files.py +2 -218
  11. databricks/sdk/service/iam.py +16 -295
  12. databricks/sdk/service/jobs.py +108 -1171
  13. databricks/sdk/service/marketplace.py +0 -573
  14. databricks/sdk/service/ml.py +76 -2445
  15. databricks/sdk/service/oauth2.py +122 -237
  16. databricks/sdk/service/pipelines.py +178 -752
  17. databricks/sdk/service/provisioning.py +0 -603
  18. databricks/sdk/service/serving.py +5 -577
  19. databricks/sdk/service/settings.py +191 -1560
  20. databricks/sdk/service/sharing.py +3 -469
  21. databricks/sdk/service/sql.py +117 -1704
  22. databricks/sdk/service/vectorsearch.py +0 -391
  23. databricks/sdk/service/workspace.py +250 -721
  24. databricks/sdk/version.py +1 -1
  25. {databricks_sdk-0.58.0.dist-info → databricks_sdk-0.59.0.dist-info}/METADATA +1 -1
  26. {databricks_sdk-0.58.0.dist-info → databricks_sdk-0.59.0.dist-info}/RECORD +30 -30
  27. {databricks_sdk-0.58.0.dist-info → databricks_sdk-0.59.0.dist-info}/WHEEL +0 -0
  28. {databricks_sdk-0.58.0.dist-info → databricks_sdk-0.59.0.dist-info}/licenses/LICENSE +0 -0
  29. {databricks_sdk-0.58.0.dist-info → databricks_sdk-0.59.0.dist-info}/licenses/NOTICE +0 -0
  30. {databricks_sdk-0.58.0.dist-info → databricks_sdk-0.59.0.dist-info}/top_level.txt +0 -0
@@ -413,49 +413,6 @@ class GenieConversationSummary:
413
413
  )
414
414
 
415
415
 
416
- @dataclass
417
- class GenieCreateConversationMessageRequest:
418
- content: str
419
- """User message content."""
420
-
421
- conversation_id: Optional[str] = None
422
- """The ID associated with the conversation."""
423
-
424
- space_id: Optional[str] = None
425
- """The ID associated with the Genie space where the conversation is started."""
426
-
427
- def as_dict(self) -> dict:
428
- """Serializes the GenieCreateConversationMessageRequest into a dictionary suitable for use as a JSON request body."""
429
- body = {}
430
- if self.content is not None:
431
- body["content"] = self.content
432
- if self.conversation_id is not None:
433
- body["conversation_id"] = self.conversation_id
434
- if self.space_id is not None:
435
- body["space_id"] = self.space_id
436
- return body
437
-
438
- def as_shallow_dict(self) -> dict:
439
- """Serializes the GenieCreateConversationMessageRequest into a shallow dictionary of its immediate attributes."""
440
- body = {}
441
- if self.content is not None:
442
- body["content"] = self.content
443
- if self.conversation_id is not None:
444
- body["conversation_id"] = self.conversation_id
445
- if self.space_id is not None:
446
- body["space_id"] = self.space_id
447
- return body
448
-
449
- @classmethod
450
- def from_dict(cls, d: Dict[str, Any]) -> GenieCreateConversationMessageRequest:
451
- """Deserializes the GenieCreateConversationMessageRequest from a dictionary."""
452
- return cls(
453
- content=d.get("content", None),
454
- conversation_id=d.get("conversation_id", None),
455
- space_id=d.get("space_id", None),
456
- )
457
-
458
-
459
416
  @dataclass
460
417
  class GenieGetMessageQueryResultResponse:
461
418
  statement_response: Optional[sql.StatementResponse] = None
@@ -810,38 +767,6 @@ class GenieSpace:
810
767
  return cls(description=d.get("description", None), space_id=d.get("space_id", None), title=d.get("title", None))
811
768
 
812
769
 
813
- @dataclass
814
- class GenieStartConversationMessageRequest:
815
- content: str
816
- """The text of the message that starts the conversation."""
817
-
818
- space_id: Optional[str] = None
819
- """The ID associated with the Genie space where you want to start a conversation."""
820
-
821
- def as_dict(self) -> dict:
822
- """Serializes the GenieStartConversationMessageRequest into a dictionary suitable for use as a JSON request body."""
823
- body = {}
824
- if self.content is not None:
825
- body["content"] = self.content
826
- if self.space_id is not None:
827
- body["space_id"] = self.space_id
828
- return body
829
-
830
- def as_shallow_dict(self) -> dict:
831
- """Serializes the GenieStartConversationMessageRequest into a shallow dictionary of its immediate attributes."""
832
- body = {}
833
- if self.content is not None:
834
- body["content"] = self.content
835
- if self.space_id is not None:
836
- body["space_id"] = self.space_id
837
- return body
838
-
839
- @classmethod
840
- def from_dict(cls, d: Dict[str, Any]) -> GenieStartConversationMessageRequest:
841
- """Deserializes the GenieStartConversationMessageRequest from a dictionary."""
842
- return cls(content=d.get("content", None), space_id=d.get("space_id", None))
843
-
844
-
845
770
  @dataclass
846
771
  class GenieStartConversationResponse:
847
772
  message_id: str
@@ -1159,102 +1084,6 @@ class MessageStatus(Enum):
1159
1084
  SUBMITTED = "SUBMITTED"
1160
1085
 
1161
1086
 
1162
- @dataclass
1163
- class MigrateDashboardRequest:
1164
- source_dashboard_id: str
1165
- """UUID of the dashboard to be migrated."""
1166
-
1167
- display_name: Optional[str] = None
1168
- """Display name for the new Lakeview dashboard."""
1169
-
1170
- parent_path: Optional[str] = None
1171
- """The workspace path of the folder to contain the migrated Lakeview dashboard."""
1172
-
1173
- update_parameter_syntax: Optional[bool] = None
1174
- """Flag to indicate if mustache parameter syntax ({{ param }}) should be auto-updated to named
1175
- syntax (:param) when converting datasets in the dashboard."""
1176
-
1177
- def as_dict(self) -> dict:
1178
- """Serializes the MigrateDashboardRequest into a dictionary suitable for use as a JSON request body."""
1179
- body = {}
1180
- if self.display_name is not None:
1181
- body["display_name"] = self.display_name
1182
- if self.parent_path is not None:
1183
- body["parent_path"] = self.parent_path
1184
- if self.source_dashboard_id is not None:
1185
- body["source_dashboard_id"] = self.source_dashboard_id
1186
- if self.update_parameter_syntax is not None:
1187
- body["update_parameter_syntax"] = self.update_parameter_syntax
1188
- return body
1189
-
1190
- def as_shallow_dict(self) -> dict:
1191
- """Serializes the MigrateDashboardRequest into a shallow dictionary of its immediate attributes."""
1192
- body = {}
1193
- if self.display_name is not None:
1194
- body["display_name"] = self.display_name
1195
- if self.parent_path is not None:
1196
- body["parent_path"] = self.parent_path
1197
- if self.source_dashboard_id is not None:
1198
- body["source_dashboard_id"] = self.source_dashboard_id
1199
- if self.update_parameter_syntax is not None:
1200
- body["update_parameter_syntax"] = self.update_parameter_syntax
1201
- return body
1202
-
1203
- @classmethod
1204
- def from_dict(cls, d: Dict[str, Any]) -> MigrateDashboardRequest:
1205
- """Deserializes the MigrateDashboardRequest from a dictionary."""
1206
- return cls(
1207
- display_name=d.get("display_name", None),
1208
- parent_path=d.get("parent_path", None),
1209
- source_dashboard_id=d.get("source_dashboard_id", None),
1210
- update_parameter_syntax=d.get("update_parameter_syntax", None),
1211
- )
1212
-
1213
-
1214
- @dataclass
1215
- class PublishRequest:
1216
- dashboard_id: Optional[str] = None
1217
- """UUID identifying the dashboard to be published."""
1218
-
1219
- embed_credentials: Optional[bool] = None
1220
- """Flag to indicate if the publisher's credentials should be embedded in the published dashboard.
1221
- These embedded credentials will be used to execute the published dashboard's queries."""
1222
-
1223
- warehouse_id: Optional[str] = None
1224
- """The ID of the warehouse that can be used to override the warehouse which was set in the draft."""
1225
-
1226
- def as_dict(self) -> dict:
1227
- """Serializes the PublishRequest into a dictionary suitable for use as a JSON request body."""
1228
- body = {}
1229
- if self.dashboard_id is not None:
1230
- body["dashboard_id"] = self.dashboard_id
1231
- if self.embed_credentials is not None:
1232
- body["embed_credentials"] = self.embed_credentials
1233
- if self.warehouse_id is not None:
1234
- body["warehouse_id"] = self.warehouse_id
1235
- return body
1236
-
1237
- def as_shallow_dict(self) -> dict:
1238
- """Serializes the PublishRequest into a shallow dictionary of its immediate attributes."""
1239
- body = {}
1240
- if self.dashboard_id is not None:
1241
- body["dashboard_id"] = self.dashboard_id
1242
- if self.embed_credentials is not None:
1243
- body["embed_credentials"] = self.embed_credentials
1244
- if self.warehouse_id is not None:
1245
- body["warehouse_id"] = self.warehouse_id
1246
- return body
1247
-
1248
- @classmethod
1249
- def from_dict(cls, d: Dict[str, Any]) -> PublishRequest:
1250
- """Deserializes the PublishRequest from a dictionary."""
1251
- return cls(
1252
- dashboard_id=d.get("dashboard_id", None),
1253
- embed_credentials=d.get("embed_credentials", None),
1254
- warehouse_id=d.get("warehouse_id", None),
1255
- )
1256
-
1257
-
1258
1087
  @dataclass
1259
1088
  class PublishedDashboard:
1260
1089
  display_name: Optional[str] = None
@@ -2549,12 +2378,7 @@ class LakeviewEmbeddedAPI:
2549
2378
  def get_published_dashboard_token_info(
2550
2379
  self, dashboard_id: str, *, external_value: Optional[str] = None, external_viewer_id: Optional[str] = None
2551
2380
  ) -> GetPublishedDashboardTokenInfoResponse:
2552
- """Get a required authorization details and scopes of a published dashboard to mint an OAuth token. The
2553
- `authorization_details` can be enriched to apply additional restriction.
2554
-
2555
- Example: Adding the following `authorization_details` object to downscope the viewer permission to
2556
- specific table ``` { type: "unity_catalog_privileges", privileges: ["SELECT"], object_type: "TABLE",
2557
- object_full_path: "main.default.testdata" } ```
2381
+ """Get a required authorization details and scopes of a published dashboard to mint an OAuth token.
2558
2382
 
2559
2383
  :param dashboard_id: str
2560
2384
  UUID identifying the published dashboard.
@@ -586,51 +586,6 @@ class DeltaTableSyncInfo:
586
586
  )
587
587
 
588
588
 
589
- @dataclass
590
- class GenerateDatabaseCredentialRequest:
591
- """Generates a credential that can be used to access database instances"""
592
-
593
- claims: Optional[List[RequestedClaims]] = None
594
- """The returned token will be scoped to the union of instance_names and instances containing the
595
- specified UC tables, so instance_names is allowed to be empty."""
596
-
597
- instance_names: Optional[List[str]] = None
598
- """Instances to which the token will be scoped."""
599
-
600
- request_id: Optional[str] = None
601
-
602
- def as_dict(self) -> dict:
603
- """Serializes the GenerateDatabaseCredentialRequest into a dictionary suitable for use as a JSON request body."""
604
- body = {}
605
- if self.claims:
606
- body["claims"] = [v.as_dict() for v in self.claims]
607
- if self.instance_names:
608
- body["instance_names"] = [v for v in self.instance_names]
609
- if self.request_id is not None:
610
- body["request_id"] = self.request_id
611
- return body
612
-
613
- def as_shallow_dict(self) -> dict:
614
- """Serializes the GenerateDatabaseCredentialRequest into a shallow dictionary of its immediate attributes."""
615
- body = {}
616
- if self.claims:
617
- body["claims"] = self.claims
618
- if self.instance_names:
619
- body["instance_names"] = self.instance_names
620
- if self.request_id is not None:
621
- body["request_id"] = self.request_id
622
- return body
623
-
624
- @classmethod
625
- def from_dict(cls, d: Dict[str, Any]) -> GenerateDatabaseCredentialRequest:
626
- """Deserializes the GenerateDatabaseCredentialRequest from a dictionary."""
627
- return cls(
628
- claims=_repeated_dict(d, "claims", RequestedClaims),
629
- instance_names=d.get("instance_names", None),
630
- request_id=d.get("request_id", None),
631
- )
632
-
633
-
634
589
  @dataclass
635
590
  class ListDatabaseInstanceRolesResponse:
636
591
  database_instance_roles: Optional[List[DatabaseInstanceRole]] = None
@@ -707,11 +662,15 @@ class NewPipelineSpec:
707
662
  fields of pipeline are still inferred by table def internally"""
708
663
 
709
664
  storage_catalog: Optional[str] = None
710
- """UC catalog for the pipeline to store intermediate files (checkpoints, event logs etc). This
665
+ """This field needs to be specified if the destination catalog is a managed postgres catalog.
666
+
667
+ UC catalog for the pipeline to store intermediate files (checkpoints, event logs etc). This
711
668
  needs to be a standard catalog where the user has permissions to create Delta tables."""
712
669
 
713
670
  storage_schema: Optional[str] = None
714
- """UC schema for the pipeline to store intermediate files (checkpoints, event logs etc). This needs
671
+ """This field needs to be specified if the destination catalog is a managed postgres catalog.
672
+
673
+ UC schema for the pipeline to store intermediate files (checkpoints, event logs etc). This needs
715
674
  to be in the standard catalog where the user has permissions to create Delta tables."""
716
675
 
717
676
  def as_dict(self) -> dict:
@@ -1144,13 +1103,20 @@ class SyncedTableSpec:
1144
1103
  do not already exist."""
1145
1104
 
1146
1105
  existing_pipeline_id: Optional[str] = None
1147
- """User-specified ID of a pre-existing pipeline to bin pack. This field is optional, and should be
1148
- empty if new_pipeline_spec is set. This field will only be set by the server in response
1149
- messages if it is specified in the request. The SyncedTableStatus message will always contain
1150
- the effective pipeline ID (either client provided or server generated), however."""
1106
+ """At most one of existing_pipeline_id and new_pipeline_spec should be defined.
1107
+
1108
+ If existing_pipeline_id is defined, the synced table will be bin packed into the existing
1109
+ pipeline referenced. This avoids creating a new pipeline and allows sharing existing compute. In
1110
+ this case, the scheduling_policy of this synced table must match the scheduling policy of the
1111
+ existing pipeline."""
1151
1112
 
1152
1113
  new_pipeline_spec: Optional[NewPipelineSpec] = None
1153
- """Spec of new pipeline. Should be empty if pipeline_id / existing_pipeline_id is set"""
1114
+ """At most one of existing_pipeline_id and new_pipeline_spec should be defined.
1115
+
1116
+ If new_pipeline_spec is defined, a new pipeline is created for this synced table. The location
1117
+ pointed to is used to store intermediate files (checkpoints, event logs etc). The caller must
1118
+ have write permissions to create Delta tables in the specified catalog and schema. Again, note
1119
+ this requires write permissions, whereas the source table only requires read permissions."""
1154
1120
 
1155
1121
  primary_key_columns: Optional[List[str]] = None
1156
1122
  """Primary Key columns to be used for data insert/update in the destination."""
@@ -14,38 +14,6 @@ _LOG = logging.getLogger("databricks.sdk")
14
14
  # all definitions in this file are in alphabetical order
15
15
 
16
16
 
17
- @dataclass
18
- class AddBlock:
19
- handle: int
20
- """The handle on an open stream."""
21
-
22
- data: str
23
- """The base64-encoded data to append to the stream. This has a limit of 1 MB."""
24
-
25
- def as_dict(self) -> dict:
26
- """Serializes the AddBlock into a dictionary suitable for use as a JSON request body."""
27
- body = {}
28
- if self.data is not None:
29
- body["data"] = self.data
30
- if self.handle is not None:
31
- body["handle"] = self.handle
32
- return body
33
-
34
- def as_shallow_dict(self) -> dict:
35
- """Serializes the AddBlock into a shallow dictionary of its immediate attributes."""
36
- body = {}
37
- if self.data is not None:
38
- body["data"] = self.data
39
- if self.handle is not None:
40
- body["handle"] = self.handle
41
- return body
42
-
43
- @classmethod
44
- def from_dict(cls, d: Dict[str, Any]) -> AddBlock:
45
- """Deserializes the AddBlock from a dictionary."""
46
- return cls(data=d.get("data", None), handle=d.get("handle", None))
47
-
48
-
49
17
  @dataclass
50
18
  class AddBlockResponse:
51
19
  def as_dict(self) -> dict:
@@ -64,31 +32,6 @@ class AddBlockResponse:
64
32
  return cls()
65
33
 
66
34
 
67
- @dataclass
68
- class Close:
69
- handle: int
70
- """The handle on an open stream."""
71
-
72
- def as_dict(self) -> dict:
73
- """Serializes the Close into a dictionary suitable for use as a JSON request body."""
74
- body = {}
75
- if self.handle is not None:
76
- body["handle"] = self.handle
77
- return body
78
-
79
- def as_shallow_dict(self) -> dict:
80
- """Serializes the Close into a shallow dictionary of its immediate attributes."""
81
- body = {}
82
- if self.handle is not None:
83
- body["handle"] = self.handle
84
- return body
85
-
86
- @classmethod
87
- def from_dict(cls, d: Dict[str, Any]) -> Close:
88
- """Deserializes the Close from a dictionary."""
89
- return cls(handle=d.get("handle", None))
90
-
91
-
92
35
  @dataclass
93
36
  class CloseResponse:
94
37
  def as_dict(self) -> dict:
@@ -107,38 +50,6 @@ class CloseResponse:
107
50
  return cls()
108
51
 
109
52
 
110
- @dataclass
111
- class Create:
112
- path: str
113
- """The path of the new file. The path should be the absolute DBFS path."""
114
-
115
- overwrite: Optional[bool] = None
116
- """The flag that specifies whether to overwrite existing file/files."""
117
-
118
- def as_dict(self) -> dict:
119
- """Serializes the Create into a dictionary suitable for use as a JSON request body."""
120
- body = {}
121
- if self.overwrite is not None:
122
- body["overwrite"] = self.overwrite
123
- if self.path is not None:
124
- body["path"] = self.path
125
- return body
126
-
127
- def as_shallow_dict(self) -> dict:
128
- """Serializes the Create into a shallow dictionary of its immediate attributes."""
129
- body = {}
130
- if self.overwrite is not None:
131
- body["overwrite"] = self.overwrite
132
- if self.path is not None:
133
- body["path"] = self.path
134
- return body
135
-
136
- @classmethod
137
- def from_dict(cls, d: Dict[str, Any]) -> Create:
138
- """Deserializes the Create from a dictionary."""
139
- return cls(overwrite=d.get("overwrite", None), path=d.get("path", None))
140
-
141
-
142
53
  @dataclass
143
54
  class CreateDirectoryResponse:
144
55
  def as_dict(self) -> dict:
@@ -183,39 +94,6 @@ class CreateResponse:
183
94
  return cls(handle=d.get("handle", None))
184
95
 
185
96
 
186
- @dataclass
187
- class Delete:
188
- path: str
189
- """The path of the file or directory to delete. The path should be the absolute DBFS path."""
190
-
191
- recursive: Optional[bool] = None
192
- """Whether or not to recursively delete the directory's contents. Deleting empty directories can be
193
- done without providing the recursive flag."""
194
-
195
- def as_dict(self) -> dict:
196
- """Serializes the Delete into a dictionary suitable for use as a JSON request body."""
197
- body = {}
198
- if self.path is not None:
199
- body["path"] = self.path
200
- if self.recursive is not None:
201
- body["recursive"] = self.recursive
202
- return body
203
-
204
- def as_shallow_dict(self) -> dict:
205
- """Serializes the Delete into a shallow dictionary of its immediate attributes."""
206
- body = {}
207
- if self.path is not None:
208
- body["path"] = self.path
209
- if self.recursive is not None:
210
- body["recursive"] = self.recursive
211
- return body
212
-
213
- @classmethod
214
- def from_dict(cls, d: Dict[str, Any]) -> Delete:
215
- """Deserializes the Delete from a dictionary."""
216
- return cls(path=d.get("path", None), recursive=d.get("recursive", None))
217
-
218
-
219
97
  @dataclass
220
98
  class DeleteDirectoryResponse:
221
99
  def as_dict(self) -> dict:
@@ -530,31 +408,6 @@ class ListStatusResponse:
530
408
  return cls(files=_repeated_dict(d, "files", FileInfo))
531
409
 
532
410
 
533
- @dataclass
534
- class MkDirs:
535
- path: str
536
- """The path of the new directory. The path should be the absolute DBFS path."""
537
-
538
- def as_dict(self) -> dict:
539
- """Serializes the MkDirs into a dictionary suitable for use as a JSON request body."""
540
- body = {}
541
- if self.path is not None:
542
- body["path"] = self.path
543
- return body
544
-
545
- def as_shallow_dict(self) -> dict:
546
- """Serializes the MkDirs into a shallow dictionary of its immediate attributes."""
547
- body = {}
548
- if self.path is not None:
549
- body["path"] = self.path
550
- return body
551
-
552
- @classmethod
553
- def from_dict(cls, d: Dict[str, Any]) -> MkDirs:
554
- """Deserializes the MkDirs from a dictionary."""
555
- return cls(path=d.get("path", None))
556
-
557
-
558
411
  @dataclass
559
412
  class MkDirsResponse:
560
413
  def as_dict(self) -> dict:
@@ -573,38 +426,6 @@ class MkDirsResponse:
573
426
  return cls()
574
427
 
575
428
 
576
- @dataclass
577
- class Move:
578
- source_path: str
579
- """The source path of the file or directory. The path should be the absolute DBFS path."""
580
-
581
- destination_path: str
582
- """The destination path of the file or directory. The path should be the absolute DBFS path."""
583
-
584
- def as_dict(self) -> dict:
585
- """Serializes the Move into a dictionary suitable for use as a JSON request body."""
586
- body = {}
587
- if self.destination_path is not None:
588
- body["destination_path"] = self.destination_path
589
- if self.source_path is not None:
590
- body["source_path"] = self.source_path
591
- return body
592
-
593
- def as_shallow_dict(self) -> dict:
594
- """Serializes the Move into a shallow dictionary of its immediate attributes."""
595
- body = {}
596
- if self.destination_path is not None:
597
- body["destination_path"] = self.destination_path
598
- if self.source_path is not None:
599
- body["source_path"] = self.source_path
600
- return body
601
-
602
- @classmethod
603
- def from_dict(cls, d: Dict[str, Any]) -> Move:
604
- """Deserializes the Move from a dictionary."""
605
- return cls(destination_path=d.get("destination_path", None), source_path=d.get("source_path", None))
606
-
607
-
608
429
  @dataclass
609
430
  class MoveResponse:
610
431
  def as_dict(self) -> dict:
@@ -623,45 +444,6 @@ class MoveResponse:
623
444
  return cls()
624
445
 
625
446
 
626
- @dataclass
627
- class Put:
628
- path: str
629
- """The path of the new file. The path should be the absolute DBFS path."""
630
-
631
- contents: Optional[str] = None
632
- """This parameter might be absent, and instead a posted file will be used."""
633
-
634
- overwrite: Optional[bool] = None
635
- """The flag that specifies whether to overwrite existing file/files."""
636
-
637
- def as_dict(self) -> dict:
638
- """Serializes the Put into a dictionary suitable for use as a JSON request body."""
639
- body = {}
640
- if self.contents is not None:
641
- body["contents"] = self.contents
642
- if self.overwrite is not None:
643
- body["overwrite"] = self.overwrite
644
- if self.path is not None:
645
- body["path"] = self.path
646
- return body
647
-
648
- def as_shallow_dict(self) -> dict:
649
- """Serializes the Put into a shallow dictionary of its immediate attributes."""
650
- body = {}
651
- if self.contents is not None:
652
- body["contents"] = self.contents
653
- if self.overwrite is not None:
654
- body["overwrite"] = self.overwrite
655
- if self.path is not None:
656
- body["path"] = self.path
657
- return body
658
-
659
- @classmethod
660
- def from_dict(cls, d: Dict[str, Any]) -> Put:
661
- """Deserializes the Put from a dictionary."""
662
- return cls(contents=d.get("contents", None), overwrite=d.get("overwrite", None), path=d.get("path", None))
663
-
664
-
665
447
  @dataclass
666
448
  class PutResponse:
667
449
  def as_dict(self) -> dict:
@@ -1097,6 +879,7 @@ class FilesAPI:
1097
879
  headers = {
1098
880
  "Accept": "application/octet-stream",
1099
881
  }
882
+
1100
883
  response_headers = [
1101
884
  "content-length",
1102
885
  "content-type",
@@ -1142,6 +925,7 @@ class FilesAPI:
1142
925
  """
1143
926
 
1144
927
  headers = {}
928
+
1145
929
  response_headers = [
1146
930
  "content-length",
1147
931
  "content-type",