Skip to content

Commit e05c8c0

Browse files
authored
Update OpenAPI Spec & Merge Files API (#304)
## Changes Support for Files API. ## Tests - [x] Integration tests for FilesAPI updated to create their own schema/volume. - [ ] `make test` run locally - [ ] `make fmt` applied - [ ] relevant integration tests applied
1 parent 0f11a96 commit e05c8c0

25 files changed

+1430
-578
lines changed

.codegen/__init__.py.tmpl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import databricks.sdk.core as client
22
import databricks.sdk.dbutils as dbutils
33

4-
from databricks.sdk.mixins.files import DbfsExt, FilesMixin
4+
from databricks.sdk.mixins.files import DbfsExt
55
from databricks.sdk.mixins.compute import ClustersExt
66
from databricks.sdk.mixins.workspace import WorkspaceExt
77
{{- range .Services}}
@@ -51,7 +51,6 @@ class WorkspaceClient:
5151
self.config = config.copy()
5252
self.dbutils = _make_dbutils(self.config)
5353
self.api_client = client.ApiClient(self.config)
54-
self.files = FilesMixin(self.api_client)
5554
{{- range .Services}}{{if not .IsAccounts}}
5655
self.{{.SnakeName}} = {{template "api" .}}(self.api_client){{end -}}{{end}}
5756

.codegen/_openapi_sha

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
beff621d7b3e1d59244e2e34fc53a496f310e130
1+
be3d4a799362f0d5ddbfeb0a0acdfb91f8736a3b

.codegen/service.py.tmpl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,13 @@ class {{.Name}}API:{{if .Description}}
200200
{{if or .Request.HasJsonField .Request.HasQueryField -}}
201201
{{if .Request.HasJsonField}}body = {}{{end}}{{if .Request.HasQueryField}}
202202
query = {}{{end}}
203-
{{- range .Request.Fields}}{{if not .IsPath}}
204-
if {{.SnakeName}} is not None: {{if .IsQuery}}query{{else}}body{{end}}['{{.Name}}'] = {{template "method-param-bind" .}}{{end}}{{end}}
203+
{{- range .Request.Fields}}{{ if not .IsPath }}
204+
{{- if .IsQuery }}
205+
if {{.SnakeName}} is not None: query['{{.Name}}'] = {{template "method-param-bind" .}}{{end}}
206+
{{- if .IsJson }}
207+
if {{.SnakeName}} is not None: body['{{.Name}}'] = {{template "method-param-bind" .}}{{end}}
208+
{{- end}}
209+
{{- end}}
205210
{{- end}}
206211
{{- end}}
207212

databricks/sdk/__init__.py

Lines changed: 8 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

databricks/sdk/core.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -988,11 +988,12 @@ def do(self,
988988
raw: bool = False,
989989
files=None,
990990
data=None) -> Union[dict, BinaryIO]:
991+
# Remove extra `/` from path for Files API
992+
# Once we've fixed the OpenAPI spec, we can remove this
993+
path = re.sub('^/api/2.0/fs/files//', '/api/2.0/fs/files/', path)
991994
if headers is None:
992995
headers = {}
993996
headers['User-Agent'] = self._user_agent_base
994-
# Replace // with / in path (for Files API where users specify filenames beginning with /)
995-
path = re.sub(r'//', '/', path)
996997
response = self._session.request(method,
997998
f"{self._cfg.host}{path}",
998999
params=self._fix_query_string(query),

databricks/sdk/mixins/files.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from types import TracebackType
99
from typing import TYPE_CHECKING, AnyStr, BinaryIO, Iterable, Iterator, Type
1010

11-
from databricks.sdk.core import ApiClient, DatabricksError
11+
from databricks.sdk.core import DatabricksError
1212

1313
from ..service import files
1414

@@ -397,18 +397,3 @@ def move_(self, src: str, dst: str, *, recursive=False, overwrite=False):
397397
# do cross-fs moving
398398
self.copy(src, dst, recursive=recursive, overwrite=overwrite)
399399
source.delete(recursive=recursive)
400-
401-
402-
class FilesMixin:
403-
404-
def __init__(self, api_client: ApiClient):
405-
self._api = api_client
406-
407-
def upload(self, path: str, src: BinaryIO):
408-
self._api.do('PUT', f'/api/2.0/fs/files{path}', data=src)
409-
410-
def download(self, path: str) -> BinaryIO:
411-
return self._api.do('GET', f'/api/2.0/fs/files{path}', raw=True)
412-
413-
def delete(self, path: str):
414-
self._api.do('DELETE', f'/api/2.0/fs/files{path}')

0 commit comments

Comments
 (0)