Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle nested query parameters in ApiClient.do() #249

Merged
merged 4 commits into from
Jul 25, 2023
Merged

Handle nested query parameters in ApiClient.do() #249

merged 4 commits into from
Jul 25, 2023

Conversation

mgyucht
Copy link
Contributor

@mgyucht mgyucht commented Jul 25, 2023

Changes

The Query History list API filter_by query parameter is modeled by a dictionary, rather than a primitive type, defining the allowed filters including query_start_time_range, statuses, user_ids, and warehouse_ids. To be compatible with gRPC transcoding, query parameters modeled by message types as opposed to primitives need to be separated into one query parameter per nested field, where the key is the path to that query parameter. For example:

{'filter_by': {'user_ids': [123, 456]}}

becomes

filter_by.user_ids=123&filter_by.user_ids=456

For this to be compatible with the requests library we use today, we need to convert the first dictionary to

{'filter_by.user_ids': [123, 456]}

This resolves one of the problems from #99. The issue with the conflict between filter_by and next_page_token will be resolved by the backend service.

Tests

Added an integration test that covers query history listing with a filter_by parameter.

  • make test run locally
  • make fmt applied
  • relevant integration tests applied

@mgyucht mgyucht requested a review from tanmay-db July 25, 2023 07:34
@mgyucht mgyucht enabled auto-merge (squash) July 25, 2023 10:43
@mgyucht mgyucht merged commit 2e07e0a into main Jul 25, 2023
7 checks passed
@mgyucht mgyucht deleted the issue-99 branch July 25, 2023 10:52
tanmay-db added a commit that referenced this pull request Jul 26, 2023
* Fixed serialization of lists of enum values ([#248](#248)).
* Handled nested query parameters in ApiClient.do()
([#249](#249)).
* Improved access of `__annotations__` ([#239](#239)).

API Changes:

 * Changed `create()` method for [a.account_metastore_assignments](https://databricks-sdk-py.readthedocs.io/en/latest/account/account_metastore_assignments.html) account-level service to no longer return `databricks.sdk.service.catalog.CreateMetastoreAssignmentsResponseItemList` dataclass.
 * Added `connection_name` field for `databricks.sdk.service.catalog.CreateCatalog`.
 * Added `access_point` field for `databricks.sdk.service.catalog.CreateExternalLocation`.
 * Added `encryption_details` field for `databricks.sdk.service.catalog.CreateExternalLocation`.
 * Removed `databricks.sdk.service.catalog.CreateMetastoreAssignmentsResponseItem` dataclass.
 * Added `access_point` field for `databricks.sdk.service.catalog.ExternalLocationInfo`.
 * Added `encryption_details` field for `databricks.sdk.service.catalog.ExternalLocationInfo`.
 * Added `access_point` field for `databricks.sdk.service.catalog.TableInfo`.
 * Added `encryption_details` field for `databricks.sdk.service.catalog.TableInfo`.
 * Added `access_point` field for `databricks.sdk.service.catalog.UpdateExternalLocation`.
 * Added `encryption_details` field for `databricks.sdk.service.catalog.UpdateExternalLocation`.
 * Added `access_point` field for `databricks.sdk.service.catalog.VolumeInfo`.
 * Added `encryption_details` field for `databricks.sdk.service.catalog.VolumeInfo`.
 * Added `databricks.sdk.service.catalog.EncryptionDetails` dataclass.
 * Added `databricks.sdk.service.catalog.SseEncryptionDetails` dataclass.
 * Added `databricks.sdk.service.catalog.SseEncryptionDetailsAlgorithm` dataclass.
 * Added [a.account_network_policy](https://databricks-sdk-py.readthedocs.io/en/latest/account/account_network_policy.html) account-level service.
 * Added `databricks.sdk.service.settings.AccountNetworkPolicyMessage` dataclass.
 * Added `databricks.sdk.service.settings.DeleteAccountNetworkPolicyRequest` dataclass.
 * Added `databricks.sdk.service.settings.DeleteAccountNetworkPolicyResponse` dataclass.
 * Added `databricks.sdk.service.settings.ReadAccountNetworkPolicyRequest` dataclass.
 * Added `databricks.sdk.service.settings.UpdateAccountNetworkPolicyRequest` dataclass.

OpenAPI SHA: fbdd0fa3e83fed2c798a58d376529bdb1285b915, Date: 2023-07-26
@tanmay-db tanmay-db mentioned this pull request Jul 26, 2023
tanmay-db added a commit that referenced this pull request Jul 27, 2023
* Fixed serialization of lists of enum values ([#248](#248)).
* Handle nested query parameters in ApiClient.do() ([#249](#249)).
* Improve access of `__annotations__` ([#239](#239)).

API Changes:

 * Changed `create()` method for [a.account_metastore_assignments](https://databricks-sdk-py.readthedocs.io/en/latest/account/account_metastore_assignments.html) account-level service to no longer return `databricks.sdk.service.catalog.CreateMetastoreAssignmentsResponseItemList` dataclass.
 * Added `connection_name` field for `databricks.sdk.service.catalog.CreateCatalog`.
 * Added `access_point` field for `databricks.sdk.service.catalog.CreateExternalLocation`.
 * Added `encryption_details` field for `databricks.sdk.service.catalog.CreateExternalLocation`.
 * Removed `databricks.sdk.service.catalog.CreateMetastoreAssignmentsResponseItem` dataclass.
 * Added `access_point` field for `databricks.sdk.service.catalog.ExternalLocationInfo`.
 * Added `encryption_details` field for `databricks.sdk.service.catalog.ExternalLocationInfo`.
 * Added `access_point` field for `databricks.sdk.service.catalog.TableInfo`.
 * Added `encryption_details` field for `databricks.sdk.service.catalog.TableInfo`.
 * Added `access_point` field for `databricks.sdk.service.catalog.UpdateExternalLocation`.
 * Added `encryption_details` field for `databricks.sdk.service.catalog.UpdateExternalLocation`.
 * Added `access_point` field for `databricks.sdk.service.catalog.VolumeInfo`.
 * Added `encryption_details` field for `databricks.sdk.service.catalog.VolumeInfo`.
 * Added `databricks.sdk.service.catalog.EncryptionDetails` dataclass.
 * Added `databricks.sdk.service.catalog.SseEncryptionDetails` dataclass.
 * Added `databricks.sdk.service.catalog.SseEncryptionDetailsAlgorithm` dataclass.
 * Added [a.account_network_policy](https://databricks-sdk-py.readthedocs.io/en/latest/account/account_network_policy.html) account-level service.
 * Added `databricks.sdk.service.settings.AccountNetworkPolicyMessage` dataclass.
 * Added `databricks.sdk.service.settings.DeleteAccountNetworkPolicyRequest` dataclass.
 * Added `databricks.sdk.service.settings.DeleteAccountNetworkPolicyResponse` dataclass.
 * Added `databricks.sdk.service.settings.ReadAccountNetworkPolicyRequest` dataclass.
 * Added `databricks.sdk.service.settings.UpdateAccountNetworkPolicyRequest` dataclass.

OpenAPI SHA: a1b6c1ecfaab6635911d3c060a8dd797ac6b2d4d, Date: 2023-07-27
tanmay-db added a commit that referenced this pull request Jul 27, 2023
* Fixed serialization of lists of enum values
([#248](#248)).
* Fixed examples that used incorrect keyword argument names.
(databricks/databricks-sdk-go#560)
* Handled nested query parameters in ApiClient.do()
([#249](#249)).
* Improved access of `__annotations__`
([#239](#239)).

API Changes:

* Changed `create()` method for
[a.account_metastore_assignments](https://databricks-sdk-py.readthedocs.io/en/latest/account/account_metastore_assignments.html)
account-level service to no longer return
`databricks.sdk.service.catalog.CreateMetastoreAssignmentsResponseItemList`
dataclass.
* Added `connection_name` field for
`databricks.sdk.service.catalog.CreateCatalog`.
* Added `access_point` field for
`databricks.sdk.service.catalog.CreateExternalLocation`.
* Added `encryption_details` field for
`databricks.sdk.service.catalog.CreateExternalLocation`.
* Removed
`databricks.sdk.service.catalog.CreateMetastoreAssignmentsResponseItem`
dataclass.
* Added `access_point` field for
`databricks.sdk.service.catalog.ExternalLocationInfo`.
* Added `encryption_details` field for
`databricks.sdk.service.catalog.ExternalLocationInfo`.
* Added `access_point` field for
`databricks.sdk.service.catalog.TableInfo`.
* Added `encryption_details` field for
`databricks.sdk.service.catalog.TableInfo`.
* Added `access_point` field for
`databricks.sdk.service.catalog.UpdateExternalLocation`.
* Added `encryption_details` field for
`databricks.sdk.service.catalog.UpdateExternalLocation`.
* Added `access_point` field for
`databricks.sdk.service.catalog.VolumeInfo`.
* Added `encryption_details` field for
`databricks.sdk.service.catalog.VolumeInfo`.
 * Added `databricks.sdk.service.catalog.EncryptionDetails` dataclass.
* Added `databricks.sdk.service.catalog.SseEncryptionDetails` dataclass.
* Added `databricks.sdk.service.catalog.SseEncryptionDetailsAlgorithm`
dataclass.
* Added
[a.account_network_policy](https://databricks-sdk-py.readthedocs.io/en/latest/account/account_network_policy.html)
account-level service.
* Added `databricks.sdk.service.settings.AccountNetworkPolicyMessage`
dataclass.
* Added
`databricks.sdk.service.settings.DeleteAccountNetworkPolicyRequest`
dataclass.
* Added
`databricks.sdk.service.settings.DeleteAccountNetworkPolicyResponse`
dataclass.
* Added
`databricks.sdk.service.settings.ReadAccountNetworkPolicyRequest`
dataclass.
* Added
`databricks.sdk.service.settings.UpdateAccountNetworkPolicyRequest`
dataclass.

OpenAPI SHA: a1b6c1ecfaab6635911d3c060a8dd797ac6b2d4d, Date: 2023-07-27

---------

Signed-off-by: Tanmay Rustagi <88379306+tanmay-db@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants