databay-cli 0.1.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.
- databay/__init__.py +5 -0
- databay/__main__.py +7 -0
- databay/agent_skill.py +184 -0
- databay/api.py +626 -0
- databay/cli/__init__.py +0 -0
- databay/cli/auth.py +377 -0
- databay/cli/build.py +89 -0
- databay/cli/commands/__init__.py +0 -0
- databay/cli/commands/alerting_webhook.py +19 -0
- databay/cli/commands/alerting_webhook_tag.py +14 -0
- databay/cli/commands/alerting_webhook_type.py +14 -0
- databay/cli/commands/alerting_webhook_undelivered.py +15 -0
- databay/cli/commands/announcement.py +17 -0
- databay/cli/commands/api_key.py +18 -0
- databay/cli/commands/api_key_project.py +16 -0
- databay/cli/commands/backfill_reason_code.py +14 -0
- databay/cli/commands/backfill_run.py +17 -0
- databay/cli/commands/canvas.py +16 -0
- databay/cli/commands/canvas_graph.py +15 -0
- databay/cli/commands/canvas_table_check.py +15 -0
- databay/cli/commands/dashboards.py +21 -0
- databay/cli/commands/dashboards_card.py +20 -0
- databay/cli/commands/dashboards_dataset.py +14 -0
- databay/cli/commands/dashboards_folder.py +16 -0
- databay/cli/commands/dashboards_home.py +17 -0
- databay/cli/commands/dashboards_placement.py +16 -0
- databay/cli/commands/db.py +19 -0
- databay/cli/commands/db_column.py +14 -0
- databay/cli/commands/docs_article.py +16 -0
- databay/cli/commands/dq_result.py +14 -0
- databay/cli/commands/dq_rule.py +16 -0
- databay/cli/commands/feature.py +14 -0
- databay/cli/commands/google_ads_source.py +14 -0
- databay/cli/commands/google_analytics_source.py +14 -0
- databay/cli/commands/instagram_account.py +14 -0
- databay/cli/commands/instagram_source.py +14 -0
- databay/cli/commands/linkedin_account.py +14 -0
- databay/cli/commands/linkedin_source.py +14 -0
- databay/cli/commands/me.py +14 -0
- databay/cli/commands/meta_ads_source.py +14 -0
- databay/cli/commands/metric_models.py +26 -0
- databay/cli/commands/metrics.py +14 -0
- databay/cli/commands/models.py +16 -0
- databay/cli/commands/nlq.py +15 -0
- databay/cli/commands/notebook_credential.py +16 -0
- databay/cli/commands/org.py +14 -0
- databay/cli/commands/org_member.py +17 -0
- databay/cli/commands/org_offboarding.py +14 -0
- databay/cli/commands/pipe.py +26 -0
- databay/cli/commands/pipe_backfill_run.py +14 -0
- databay/cli/commands/pipe_config_option.py +14 -0
- databay/cli/commands/pipe_destination.py +16 -0
- databay/cli/commands/pipe_leftover.py +16 -0
- databay/cli/commands/pipe_sink_type.py +14 -0
- databay/cli/commands/pipe_source_type.py +14 -0
- databay/cli/commands/pipe_status_bucket.py +14 -0
- databay/cli/commands/pipe_stuck_delete.py +14 -0
- databay/cli/commands/plan.py +14 -0
- databay/cli/commands/project.py +21 -0
- databay/cli/commands/project_budget.py +15 -0
- databay/cli/commands/project_member.py +18 -0
- databay/cli/commands/project_privilege.py +16 -0
- databay/cli/commands/project_share.py +16 -0
- databay/cli/commands/provision.py +14 -0
- databay/cli/commands/provisioning.py +14 -0
- databay/cli/commands/registry.py +14 -0
- databay/cli/commands/resource_home.py +14 -0
- databay/cli/commands/schema_change.py +18 -0
- databay/cli/commands/schema_history.py +17 -0
- databay/cli/commands/schema_version.py +16 -0
- databay/cli/commands/shopify_store.py +14 -0
- databay/cli/commands/sink_data_type.py +14 -0
- databay/cli/commands/source.py +24 -0
- databay/cli/commands/source_catalog.py +15 -0
- databay/cli/commands/source_check_run.py +17 -0
- databay/cli/commands/source_hidden_type.py +14 -0
- databay/cli/commands/source_name.py +14 -0
- databay/cli/commands/source_pipe.py +14 -0
- databay/cli/commands/source_publication.py +16 -0
- databay/cli/commands/source_readiness_override.py +15 -0
- databay/cli/commands/source_setup_choice.py +16 -0
- databay/cli/commands/source_stream.py +15 -0
- databay/cli/commands/source_table.py +14 -0
- databay/cli/commands/ssbi_job.py +18 -0
- databay/cli/commands/transform_type.py +14 -0
- databay/cli/commands/usage.py +14 -0
- databay/cli/commands/warehouse.py +21 -0
- databay/cli/commands/warehouse_access_assignment.py +16 -0
- databay/cli/commands/warehouse_access_role.py +22 -0
- databay/cli/commands/warehouse_access_settings.py +17 -0
- databay/cli/commands/warehouse_login.py +20 -0
- databay/cli/commands/warehouse_principal.py +17 -0
- databay/cli/commands/warehouse_service_account.py +17 -0
- databay/cli/commands/warehouse_service_account_credential.py +18 -0
- databay/cli/common.py +93 -0
- databay/cli/console.py +121 -0
- databay/cli/flags.py +183 -0
- databay/cli/handwritten.py +22 -0
- databay/cli/main.py +198 -0
- databay/cli/metrics.py +171 -0
- databay/cli/org.py +193 -0
- databay/cli/output.py +134 -0
- databay/cli/pipe_wait.py +357 -0
- databay/cli/profile.py +230 -0
- databay/cli/runner.py +432 -0
- databay/cli/skill.py +64 -0
- databay/cli/sql.py +84 -0
- databay/compat.py +161 -0
- databay/credentials.py +217 -0
- databay/error_catalog.py +226 -0
- databay/error_codes.py +3265 -0
- databay/errors.py +222 -0
- databay/feature_header.py +40 -0
- databay/invoke.py +225 -0
- databay/locks.py +41 -0
- databay/login_flow.py +245 -0
- databay/model_base.py +40 -0
- databay/models/__init__.py +0 -0
- databay/models/alerting_webhook.py +46 -0
- databay/models/alerting_webhook_tag.py +11 -0
- databay/models/alerting_webhook_type.py +11 -0
- databay/models/alerting_webhook_undelivered.py +23 -0
- databay/models/announcement.py +37 -0
- databay/models/api_key.py +81 -0
- databay/models/api_key_project.py +29 -0
- databay/models/backfill_reason_code.py +11 -0
- databay/models/backfill_run.py +41 -0
- databay/models/canvas.py +68 -0
- databay/models/canvas_graph.py +86 -0
- databay/models/canvas_table_check.py +181 -0
- databay/models/dashboards.py +79 -0
- databay/models/dashboards_card.py +37 -0
- databay/models/dashboards_dataset.py +27 -0
- databay/models/dashboards_folder.py +18 -0
- databay/models/dashboards_home.py +28 -0
- databay/models/db.py +34 -0
- databay/models/db_column.py +11 -0
- databay/models/docs_article.py +59 -0
- databay/models/dq_result.py +27 -0
- databay/models/dq_rule.py +43 -0
- databay/models/feature.py +15 -0
- databay/models/google_ads_source.py +11 -0
- databay/models/google_analytics_source.py +11 -0
- databay/models/instagram_source.py +11 -0
- databay/models/linkedin_source.py +11 -0
- databay/models/me.py +71 -0
- databay/models/meta_ads_source.py +11 -0
- databay/models/metric_models.py +274 -0
- databay/models/metrics.py +158 -0
- databay/models/models.py +73 -0
- databay/models/nlq.py +92 -0
- databay/models/notebook_credential.py +51 -0
- databay/models/org.py +44 -0
- databay/models/org_member.py +123 -0
- databay/models/org_offboarding.py +36 -0
- databay/models/pipe.py +340 -0
- databay/models/pipe_config_option.py +25 -0
- databay/models/pipe_destination.py +128 -0
- databay/models/pipe_leftover.py +51 -0
- databay/models/pipe_sink_type.py +11 -0
- databay/models/pipe_source_type.py +11 -0
- databay/models/pipe_status_bucket.py +13 -0
- databay/models/pipe_stuck_delete.py +25 -0
- databay/models/plan.py +37 -0
- databay/models/project.py +154 -0
- databay/models/project_budget.py +22 -0
- databay/models/project_member.py +67 -0
- databay/models/project_privilege.py +21 -0
- databay/models/project_share.py +76 -0
- databay/models/provision.py +12 -0
- databay/models/provisioning.py +20 -0
- databay/models/registry.py +18 -0
- databay/models/resource_home.py +35 -0
- databay/models/schema_change.py +96 -0
- databay/models/schema_history.py +32 -0
- databay/models/schema_version.py +23 -0
- databay/models/shared.py +875 -0
- databay/models/shopify_store.py +19 -0
- databay/models/sink_data_type.py +11 -0
- databay/models/source.py +263 -0
- databay/models/source_catalog.py +82 -0
- databay/models/source_check_run.py +63 -0
- databay/models/source_hidden_type.py +13 -0
- databay/models/source_name.py +18 -0
- databay/models/source_pipe.py +16 -0
- databay/models/source_publication.py +30 -0
- databay/models/source_readiness_override.py +13 -0
- databay/models/source_setup_choice.py +33 -0
- databay/models/source_stream.py +65 -0
- databay/models/source_table.py +27 -0
- databay/models/sql.py +31 -0
- databay/models/ssbi_job.py +97 -0
- databay/models/transform_type.py +40 -0
- databay/models/usage.py +112 -0
- databay/models/warehouse.py +38 -0
- databay/models/warehouse_access_assignment.py +70 -0
- databay/models/warehouse_access_role.py +148 -0
- databay/models/warehouse_access_settings.py +35 -0
- databay/models/warehouse_login.py +20 -0
- databay/models/warehouse_principal.py +49 -0
- databay/models/warehouse_service_account.py +35 -0
- databay/models/warehouse_service_account_credential.py +11 -0
- databay/oidc.py +205 -0
- databay/operation.py +191 -0
- databay/operations/__init__.py +0 -0
- databay/operations/alerting_webhook.py +317 -0
- databay/operations/alerting_webhook_tag.py +35 -0
- databay/operations/alerting_webhook_type.py +35 -0
- databay/operations/alerting_webhook_undelivered.py +74 -0
- databay/operations/announcement.py +135 -0
- databay/operations/api_key.py +198 -0
- databay/operations/api_key_project.py +130 -0
- databay/operations/backfill_reason_code.py +35 -0
- databay/operations/backfill_run.py +245 -0
- databay/operations/canvas.py +136 -0
- databay/operations/canvas_graph.py +102 -0
- databay/operations/canvas_table_check.py +101 -0
- databay/operations/dashboards.py +441 -0
- databay/operations/dashboards_card.py +406 -0
- databay/operations/dashboards_dataset.py +50 -0
- databay/operations/dashboards_folder.py +146 -0
- databay/operations/dashboards_home.py +176 -0
- databay/operations/dashboards_placement.py +152 -0
- databay/operations/db.py +337 -0
- databay/operations/db_column.py +57 -0
- databay/operations/docs_article.py +101 -0
- databay/operations/dq_result.py +43 -0
- databay/operations/dq_rule.py +155 -0
- databay/operations/feature.py +35 -0
- databay/operations/google_ads_source.py +40 -0
- databay/operations/google_analytics_source.py +40 -0
- databay/operations/instagram_account.py +47 -0
- databay/operations/instagram_source.py +40 -0
- databay/operations/linkedin_account.py +47 -0
- databay/operations/linkedin_source.py +40 -0
- databay/operations/me.py +57 -0
- databay/operations/meta_ads_source.py +40 -0
- databay/operations/metric_models.py +612 -0
- databay/operations/metrics.py +218 -0
- databay/operations/models.py +123 -0
- databay/operations/nlq.py +100 -0
- databay/operations/notebook_credential.py +95 -0
- databay/operations/org.py +79 -0
- databay/operations/org_member.py +192 -0
- databay/operations/org_offboarding.py +43 -0
- databay/operations/pipe.py +882 -0
- databay/operations/pipe_backfill_run.py +72 -0
- databay/operations/pipe_config_option.py +50 -0
- databay/operations/pipe_destination.py +178 -0
- databay/operations/pipe_leftover.py +110 -0
- databay/operations/pipe_sink_type.py +35 -0
- databay/operations/pipe_source_type.py +35 -0
- databay/operations/pipe_status_bucket.py +35 -0
- databay/operations/pipe_stuck_delete.py +52 -0
- databay/operations/plan.py +35 -0
- databay/operations/project.py +346 -0
- databay/operations/project_budget.py +135 -0
- databay/operations/project_member.py +226 -0
- databay/operations/project_privilege.py +143 -0
- databay/operations/project_share.py +160 -0
- databay/operations/provision.py +35 -0
- databay/operations/provisioning.py +35 -0
- databay/operations/registry.py +35 -0
- databay/operations/resource_home.py +80 -0
- databay/operations/schema_change.py +222 -0
- databay/operations/schema_history.py +136 -0
- databay/operations/schema_version.py +115 -0
- databay/operations/shopify_store.py +40 -0
- databay/operations/sink_data_type.py +43 -0
- databay/operations/source.py +1207 -0
- databay/operations/source_catalog.py +135 -0
- databay/operations/source_check_run.py +242 -0
- databay/operations/source_hidden_type.py +59 -0
- databay/operations/source_name.py +69 -0
- databay/operations/source_pipe.py +57 -0
- databay/operations/source_publication.py +139 -0
- databay/operations/source_readiness_override.py +96 -0
- databay/operations/source_setup_choice.py +161 -0
- databay/operations/source_stream.py +99 -0
- databay/operations/source_table.py +59 -0
- databay/operations/sql.py +54 -0
- databay/operations/ssbi_job.py +242 -0
- databay/operations/transform_type.py +35 -0
- databay/operations/usage.py +35 -0
- databay/operations/warehouse.py +343 -0
- databay/operations/warehouse_access_assignment.py +179 -0
- databay/operations/warehouse_access_role.py +473 -0
- databay/operations/warehouse_access_settings.py +172 -0
- databay/operations/warehouse_login.py +308 -0
- databay/operations/warehouse_principal.py +174 -0
- databay/operations/warehouse_service_account.py +206 -0
- databay/operations/warehouse_service_account_credential.py +285 -0
- databay/paths.py +32 -0
- databay/platform_check.py +20 -0
- databay/profiles.py +181 -0
- databay/redact.py +22 -0
- databay/reference.py +218 -0
- databay/resource.py +167 -0
- databay/resources/__init__.py +0 -0
- databay/resources/alerting_webhook.py +84 -0
- databay/resources/alerting_webhook_tag.py +21 -0
- databay/resources/alerting_webhook_type.py +21 -0
- databay/resources/alerting_webhook_undelivered.py +35 -0
- databay/resources/announcement.py +45 -0
- databay/resources/api_key.py +56 -0
- databay/resources/api_key_project.py +47 -0
- databay/resources/backfill_reason_code.py +21 -0
- databay/resources/backfill_run.py +78 -0
- databay/resources/canvas.py +43 -0
- databay/resources/canvas_graph.py +38 -0
- databay/resources/canvas_table_check.py +38 -0
- databay/resources/dashboards.py +105 -0
- databay/resources/dashboards_card.py +97 -0
- databay/resources/dashboards_dataset.py +27 -0
- databay/resources/dashboards_folder.py +47 -0
- databay/resources/dashboards_home.py +59 -0
- databay/resources/dashboards_placement.py +47 -0
- databay/resources/db.py +87 -0
- databay/resources/db_column.py +28 -0
- databay/resources/docs_article.py +37 -0
- databay/resources/dq_result.py +25 -0
- databay/resources/dq_rule.py +48 -0
- databay/resources/feature.py +21 -0
- databay/resources/google_ads_source.py +25 -0
- databay/resources/google_analytics_source.py +25 -0
- databay/resources/instagram_account.py +27 -0
- databay/resources/instagram_source.py +25 -0
- databay/resources/linkedin_account.py +27 -0
- databay/resources/linkedin_source.py +25 -0
- databay/resources/me.py +27 -0
- databay/resources/meta_ads_source.py +25 -0
- databay/resources/metric_models.py +154 -0
- databay/resources/metrics.py +57 -0
- databay/resources/models.py +42 -0
- databay/resources/nlq.py +34 -0
- databay/resources/notebook_credential.py +41 -0
- databay/resources/org.py +29 -0
- databay/resources/org_member.py +53 -0
- databay/resources/org_offboarding.py +25 -0
- databay/resources/pipe.py +208 -0
- databay/resources/pipe_backfill_run.py +28 -0
- databay/resources/pipe_config_option.py +26 -0
- databay/resources/pipe_destination.py +49 -0
- databay/resources/pipe_leftover.py +42 -0
- databay/resources/pipe_sink_type.py +21 -0
- databay/resources/pipe_source_type.py +21 -0
- databay/resources/pipe_status_bucket.py +21 -0
- databay/resources/pipe_stuck_delete.py +27 -0
- databay/resources/plan.py +21 -0
- databay/resources/project.py +92 -0
- databay/resources/project_budget.py +38 -0
- databay/resources/project_member.py +68 -0
- databay/resources/project_privilege.py +48 -0
- databay/resources/project_share.py +47 -0
- databay/resources/provision.py +21 -0
- databay/resources/provisioning.py +21 -0
- databay/resources/registry.py +21 -0
- databay/resources/resource_home.py +29 -0
- databay/resources/schema_change.py +62 -0
- databay/resources/schema_history.py +52 -0
- databay/resources/schema_version.py +43 -0
- databay/resources/shopify_store.py +25 -0
- databay/resources/sink_data_type.py +25 -0
- databay/resources/source.py +132 -0
- databay/resources/source_catalog.py +34 -0
- databay/resources/source_check_run.py +67 -0
- databay/resources/source_hidden_type.py +25 -0
- databay/resources/source_name.py +27 -0
- databay/resources/source_pipe.py +28 -0
- databay/resources/source_publication.py +47 -0
- databay/resources/source_readiness_override.py +37 -0
- databay/resources/source_setup_choice.py +50 -0
- databay/resources/source_stream.py +38 -0
- databay/resources/source_table.py +27 -0
- databay/resources/sql.py +27 -0
- databay/resources/ssbi_job.py +69 -0
- databay/resources/transform_type.py +21 -0
- databay/resources/usage.py +21 -0
- databay/resources/warehouse.py +136 -0
- databay/resources/warehouse_access_assignment.py +51 -0
- databay/resources/warehouse_access_role.py +118 -0
- databay/resources/warehouse_access_settings.py +56 -0
- databay/resources/warehouse_login.py +81 -0
- databay/resources/warehouse_principal.py +51 -0
- databay/resources/warehouse_service_account.py +61 -0
- databay/resources/warehouse_service_account_credential.py +78 -0
- databay/sdk.py +77 -0
- databay/settings.py +90 -0
- databay/skill/SKILL.md +357 -0
- databay/skill/references/commands.md +7025 -0
- databay/skill/references/errors.md +727 -0
- databay/spec.py +362 -0
- databay/stored_token.py +134 -0
- databay/tokens.py +108 -0
- databay/transport.py +357 -0
- databay/update_check.py +151 -0
- databay/version.py +6 -0
- databay/waits.py +330 -0
- databay_cli-0.1.0.dist-info/METADATA +42 -0
- databay_cli-0.1.0.dist-info/RECORD +403 -0
- databay_cli-0.1.0.dist-info/WHEEL +4 -0
- databay_cli-0.1.0.dist-info/entry_points.txt +2 -0
- databay_cli-0.1.0.dist-info/licenses/LICENSE +202 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""``client.warehouse_principal``: the ``warehouse-principal`` operations.
|
|
2
|
+
|
|
3
|
+
Generated by python/tools/gen_client.py from contract/core.json; do not edit.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from typing import TYPE_CHECKING
|
|
9
|
+
|
|
10
|
+
from databay.operations import warehouse_principal as _ops
|
|
11
|
+
from databay.resource import Resource, UNSET, Unset
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from databay.models.warehouse_principal import PrincipalStateOut, WarehousePrincipalListProjectResponse, WarehousePrincipalListResponse
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class WarehousePrincipalResource(Resource):
|
|
18
|
+
|
|
19
|
+
def disable(
|
|
20
|
+
self,
|
|
21
|
+
*,
|
|
22
|
+
principal_id: str,
|
|
23
|
+
reason: str,
|
|
24
|
+
project_id: str | Unset = UNSET,
|
|
25
|
+
project: str | None = None,
|
|
26
|
+
) -> PrincipalStateOut:
|
|
27
|
+
"""Disable Principal. ``databay warehouse-principal disable``."""
|
|
28
|
+
return self._call(_ops.WAREHOUSE_PRINCIPAL_DISABLE, {'project_id': project_id, 'principal_id': principal_id, 'reason': reason}, project=project)
|
|
29
|
+
|
|
30
|
+
def enable(
|
|
31
|
+
self,
|
|
32
|
+
*,
|
|
33
|
+
principal_id: str,
|
|
34
|
+
project_id: str | Unset = UNSET,
|
|
35
|
+
project: str | None = None,
|
|
36
|
+
) -> PrincipalStateOut:
|
|
37
|
+
"""Enable Principal. ``databay warehouse-principal enable``."""
|
|
38
|
+
return self._call(_ops.WAREHOUSE_PRINCIPAL_ENABLE, {'project_id': project_id, 'principal_id': principal_id}, project=project)
|
|
39
|
+
|
|
40
|
+
def list(self) -> WarehousePrincipalListResponse:
|
|
41
|
+
"""List Principals. ``databay warehouse-principal list``."""
|
|
42
|
+
return self._call(_ops.WAREHOUSE_PRINCIPAL_LIST, {})
|
|
43
|
+
|
|
44
|
+
def list_project(
|
|
45
|
+
self,
|
|
46
|
+
*,
|
|
47
|
+
project_id: str | Unset = UNSET,
|
|
48
|
+
project: str | None = None,
|
|
49
|
+
) -> WarehousePrincipalListProjectResponse:
|
|
50
|
+
"""List Project Logins. ``databay warehouse-principal list-project``."""
|
|
51
|
+
return self._call(_ops.WAREHOUSE_PRINCIPAL_LIST_PROJECT, {'project_id': project_id}, project=project)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"""``client.warehouse_service_account``: the ``warehouse-service-account`` operations.
|
|
2
|
+
|
|
3
|
+
Generated by python/tools/gen_client.py from contract/core.json; do not edit.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from typing import TYPE_CHECKING
|
|
9
|
+
|
|
10
|
+
from databay.operations import warehouse_service_account as _ops
|
|
11
|
+
from databay.resource import Resource, UNSET, Unset
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from databay.models.warehouse_service_account import ServiceAccountOut, WarehouseServiceAccountListResponse
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class WarehouseServiceAccountResource(Resource):
|
|
18
|
+
|
|
19
|
+
def create(
|
|
20
|
+
self,
|
|
21
|
+
*,
|
|
22
|
+
name: str,
|
|
23
|
+
role_ids: list[str],
|
|
24
|
+
project_id: str | Unset = UNSET,
|
|
25
|
+
description: str | Unset = UNSET,
|
|
26
|
+
project: str | None = None,
|
|
27
|
+
idempotency_key: str | None = None,
|
|
28
|
+
) -> ServiceAccountOut:
|
|
29
|
+
"""Create Service Account. ``databay warehouse-service-account create``."""
|
|
30
|
+
return self._call(_ops.WAREHOUSE_SERVICE_ACCOUNT_CREATE, {'project_id': project_id, 'description': description, 'name': name, 'role_ids': role_ids}, project=project, idempotency_key=idempotency_key)
|
|
31
|
+
|
|
32
|
+
def delete(
|
|
33
|
+
self,
|
|
34
|
+
*,
|
|
35
|
+
service_account_id: str,
|
|
36
|
+
project_id: str | Unset = UNSET,
|
|
37
|
+
project: str | None = None,
|
|
38
|
+
) -> None:
|
|
39
|
+
"""Delete Service Account. ``databay warehouse-service-account delete``."""
|
|
40
|
+
return self._call(_ops.WAREHOUSE_SERVICE_ACCOUNT_DELETE, {'project_id': project_id, 'service_account_id': service_account_id}, project=project)
|
|
41
|
+
|
|
42
|
+
def list(
|
|
43
|
+
self,
|
|
44
|
+
*,
|
|
45
|
+
project_id: str | Unset = UNSET,
|
|
46
|
+
project: str | None = None,
|
|
47
|
+
) -> WarehouseServiceAccountListResponse:
|
|
48
|
+
"""List Service Accounts. ``databay warehouse-service-account list``."""
|
|
49
|
+
return self._call(_ops.WAREHOUSE_SERVICE_ACCOUNT_LIST, {'project_id': project_id}, project=project)
|
|
50
|
+
|
|
51
|
+
def update(
|
|
52
|
+
self,
|
|
53
|
+
*,
|
|
54
|
+
service_account_id: str,
|
|
55
|
+
project_id: str | Unset = UNSET,
|
|
56
|
+
description: str | None | Unset = UNSET,
|
|
57
|
+
name: str | None | Unset = UNSET,
|
|
58
|
+
project: str | None = None,
|
|
59
|
+
) -> ServiceAccountOut:
|
|
60
|
+
"""Update Service Account. ``databay warehouse-service-account update``."""
|
|
61
|
+
return self._call(_ops.WAREHOUSE_SERVICE_ACCOUNT_UPDATE, {'project_id': project_id, 'service_account_id': service_account_id, 'description': description, 'name': name}, project=project)
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"""``client.warehouse_service_account_credential``: the ``warehouse-service-account-credential`` operations.
|
|
2
|
+
|
|
3
|
+
Generated by python/tools/gen_client.py from contract/core.json; do not edit.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from typing import TYPE_CHECKING
|
|
9
|
+
|
|
10
|
+
from databay.operations import warehouse_service_account_credential as _ops
|
|
11
|
+
from databay.resource import Resource, UNSET, Unset
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from databay.models.shared import IssuedLoginOut, LoginOut
|
|
15
|
+
from databay.models.warehouse_service_account_credential import WarehouseServiceAccountCredentialListResponse
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class WarehouseServiceAccountCredentialResource(Resource):
|
|
19
|
+
|
|
20
|
+
def create(
|
|
21
|
+
self,
|
|
22
|
+
*,
|
|
23
|
+
service_account_id: str,
|
|
24
|
+
db_uuid: str,
|
|
25
|
+
project_id: str | Unset = UNSET,
|
|
26
|
+
allowed_hosts: list[str] | None | Unset = UNSET,
|
|
27
|
+
valid_until: str | None | Unset = UNSET,
|
|
28
|
+
project: str | None = None,
|
|
29
|
+
idempotency_key: str | None = None,
|
|
30
|
+
) -> IssuedLoginOut:
|
|
31
|
+
"""Create Service Credential. ``databay warehouse-service-account-credential create``."""
|
|
32
|
+
return self._call(_ops.WAREHOUSE_SERVICE_ACCOUNT_CREDENTIAL_CREATE, {'project_id': project_id, 'service_account_id': service_account_id, 'allowed_hosts': allowed_hosts, 'db_uuid': db_uuid, 'valid_until': valid_until}, project=project, idempotency_key=idempotency_key)
|
|
33
|
+
|
|
34
|
+
def delete(
|
|
35
|
+
self,
|
|
36
|
+
*,
|
|
37
|
+
service_account_id: str,
|
|
38
|
+
principal_id: str,
|
|
39
|
+
project_id: str | Unset = UNSET,
|
|
40
|
+
project: str | None = None,
|
|
41
|
+
) -> None:
|
|
42
|
+
"""Delete Service Credential. ``databay warehouse-service-account-credential delete``."""
|
|
43
|
+
return self._call(_ops.WAREHOUSE_SERVICE_ACCOUNT_CREDENTIAL_DELETE, {'project_id': project_id, 'service_account_id': service_account_id, 'principal_id': principal_id}, project=project)
|
|
44
|
+
|
|
45
|
+
def list(
|
|
46
|
+
self,
|
|
47
|
+
*,
|
|
48
|
+
service_account_id: str,
|
|
49
|
+
project_id: str | Unset = UNSET,
|
|
50
|
+
project: str | None = None,
|
|
51
|
+
) -> WarehouseServiceAccountCredentialListResponse:
|
|
52
|
+
"""List Service Credentials. ``databay warehouse-service-account-credential list``."""
|
|
53
|
+
return self._call(_ops.WAREHOUSE_SERVICE_ACCOUNT_CREDENTIAL_LIST, {'project_id': project_id, 'service_account_id': service_account_id}, project=project)
|
|
54
|
+
|
|
55
|
+
def rotate(
|
|
56
|
+
self,
|
|
57
|
+
*,
|
|
58
|
+
service_account_id: str,
|
|
59
|
+
principal_id: str,
|
|
60
|
+
project_id: str | Unset = UNSET,
|
|
61
|
+
project: str | None = None,
|
|
62
|
+
idempotency_key: str | None = None,
|
|
63
|
+
) -> IssuedLoginOut:
|
|
64
|
+
"""Rotate Service Credential. ``databay warehouse-service-account-credential rotate``."""
|
|
65
|
+
return self._call(_ops.WAREHOUSE_SERVICE_ACCOUNT_CREDENTIAL_ROTATE, {'project_id': project_id, 'service_account_id': service_account_id, 'principal_id': principal_id}, project=project, idempotency_key=idempotency_key)
|
|
66
|
+
|
|
67
|
+
def update(
|
|
68
|
+
self,
|
|
69
|
+
*,
|
|
70
|
+
service_account_id: str,
|
|
71
|
+
principal_id: str,
|
|
72
|
+
project_id: str | Unset = UNSET,
|
|
73
|
+
allowed_hosts: list[str] | None | Unset = UNSET,
|
|
74
|
+
valid_until: str | None | Unset = UNSET,
|
|
75
|
+
project: str | None = None,
|
|
76
|
+
) -> LoginOut:
|
|
77
|
+
"""Update Service Credential. ``databay warehouse-service-account-credential update``."""
|
|
78
|
+
return self._call(_ops.WAREHOUSE_SERVICE_ACCOUNT_CREDENTIAL_UPDATE, {'project_id': project_id, 'service_account_id': service_account_id, 'principal_id': principal_id, 'allowed_hosts': allowed_hosts, 'valid_until': valid_until}, project=project)
|
databay/sdk.py
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"""
|
|
2
|
+
The SDK client.
|
|
3
|
+
|
|
4
|
+
::
|
|
5
|
+
|
|
6
|
+
from databay import Databay
|
|
7
|
+
from databay.tokens import EnvToken
|
|
8
|
+
|
|
9
|
+
with Databay("https://databay.example.com", EnvToken(), project="<project id>") as client:
|
|
10
|
+
pipe = client.pipe.create(source_id=..., table_name="orders", ...)
|
|
11
|
+
done = client.pipe.status(pipe_uuid=pipe.uuid, wait=True)
|
|
12
|
+
|
|
13
|
+
``Databay.from_profile()`` reads the server, the token source and the active project from a CLI
|
|
14
|
+
profile instead. One attribute per noun (``client.pipe``, ``client.backfill_run``) is generated in
|
|
15
|
+
``databay.api``.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
20
|
+
from typing import TYPE_CHECKING, Self
|
|
21
|
+
|
|
22
|
+
from databay.api import Api
|
|
23
|
+
from databay.invoke import Session
|
|
24
|
+
from databay.platform_check import ensure_supported
|
|
25
|
+
from databay.transport import EventSink, Transport, no_events
|
|
26
|
+
|
|
27
|
+
if TYPE_CHECKING:
|
|
28
|
+
from types import TracebackType
|
|
29
|
+
|
|
30
|
+
import httpx
|
|
31
|
+
|
|
32
|
+
from databay.tokens import TokenProvider
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class Databay(Api):
|
|
36
|
+
def __init__(
|
|
37
|
+
self,
|
|
38
|
+
server: str,
|
|
39
|
+
token: TokenProvider,
|
|
40
|
+
*,
|
|
41
|
+
project: str | None = None,
|
|
42
|
+
retries: bool = True,
|
|
43
|
+
events: EventSink = no_events,
|
|
44
|
+
http: httpx.Client | None = None,
|
|
45
|
+
profile: str | None = None,
|
|
46
|
+
) -> None:
|
|
47
|
+
ensure_supported()
|
|
48
|
+
transport = Transport(
|
|
49
|
+
server=server.rstrip("/"), tokens=token, client_kind="sdk", retries=retries, events=events, http=http
|
|
50
|
+
)
|
|
51
|
+
super().__init__(Session(transport, active_project=project, profile=profile))
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def from_profile(cls, name: str | None = None, **kwargs: object) -> Self:
|
|
55
|
+
"""A client for the CLI profile ``name``, else the config's ``current_profile``."""
|
|
56
|
+
from databay.profiles import load_profile # noqa: PLC0415
|
|
57
|
+
from databay.tokens import token_provider # noqa: PLC0415
|
|
58
|
+
|
|
59
|
+
profile = load_profile(name)
|
|
60
|
+
return cls(
|
|
61
|
+
profile.server,
|
|
62
|
+
token_provider(profile, kwargs.get("http")), # type: ignore[arg-type]
|
|
63
|
+
project=profile.active_project,
|
|
64
|
+
profile=profile.name,
|
|
65
|
+
**kwargs, # type: ignore[arg-type]
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
def close(self) -> None:
|
|
69
|
+
self._session.transport.close()
|
|
70
|
+
|
|
71
|
+
def __enter__(self) -> Self:
|
|
72
|
+
return self
|
|
73
|
+
|
|
74
|
+
def __exit__(
|
|
75
|
+
self, exc_type: type[BaseException] | None, exc: BaseException | None, tb: TracebackType | None
|
|
76
|
+
) -> None:
|
|
77
|
+
self.close()
|
databay/settings.py
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"""
|
|
2
|
+
The client's declared defaults: retries, waits, output, timeouts and where state lives.
|
|
3
|
+
|
|
4
|
+
Every default the SDK or the CLI uses is declared here once, and nowhere else.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from dataclasses import dataclass
|
|
10
|
+
from typing import Literal
|
|
11
|
+
|
|
12
|
+
OutputFormat = Literal["json", "table", "csv"]
|
|
13
|
+
OUTPUT_FORMATS: tuple[OutputFormat, ...] = ("json", "table", "csv")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@dataclass(frozen=True, slots=True)
|
|
17
|
+
class RetryPolicy:
|
|
18
|
+
"""
|
|
19
|
+
Retries of one request: GETs and writes sent with an ``Idempotency-Key`` only.
|
|
20
|
+
|
|
21
|
+
A retried answer is a 408, 429, 502, 503 or 504, or a connect or read failure.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
max_retries: int = 3
|
|
25
|
+
#: Seconds before retry 1, 2, 3.
|
|
26
|
+
backoff_s: tuple[float, ...] = (1.0, 2.0, 4.0)
|
|
27
|
+
#: A ``Retry-After`` longer than this is cut to it.
|
|
28
|
+
retry_after_cap_s: float = 30.0
|
|
29
|
+
statuses: frozenset[int] = frozenset({408, 429, 502, 503, 504})
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@dataclass(frozen=True, slots=True)
|
|
33
|
+
class WaitPolicy:
|
|
34
|
+
"""How a wait polls its status operation."""
|
|
35
|
+
|
|
36
|
+
first_interval_s: float = 2.0
|
|
37
|
+
backoff: float = 1.5
|
|
38
|
+
max_interval_s: float = 15.0
|
|
39
|
+
#: Used when the wait declares no ``timeout_s`` and the caller passes no ``--timeout``.
|
|
40
|
+
default_timeout_s: float = 600.0
|
|
41
|
+
#: ``pipe wait --until data`` without ``--timeout``: one 15-minute freshness-probe cycle plus slack.
|
|
42
|
+
data_timeout_s: float = 1200.0
|
|
43
|
+
#: Past the limit, a tick's later requests still go out for this long, so the last tick, which
|
|
44
|
+
#: starts at the limit after its pause, can finish when the server answers normally.
|
|
45
|
+
tick_grace_s: float = 5.0
|
|
46
|
+
#: Transient failures (5xx, 408, 429, network) in a row that end a wait with that failure.
|
|
47
|
+
max_transient_in_a_row: int = 3
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@dataclass(frozen=True, slots=True)
|
|
51
|
+
class ClientSettings:
|
|
52
|
+
retry: RetryPolicy = RetryPolicy()
|
|
53
|
+
wait: WaitPolicy = WaitPolicy()
|
|
54
|
+
#: Connect timeout and read timeout of one request, in seconds.
|
|
55
|
+
connect_timeout_s: float = 10.0
|
|
56
|
+
read_timeout_s: float = 60.0
|
|
57
|
+
#: How long a server's ``/api/auth/client-config`` answer is reused before it is read again.
|
|
58
|
+
client_config_ttl_s: float = 3600.0
|
|
59
|
+
#: An access token with this many seconds of validity left or fewer is renewed before it is sent.
|
|
60
|
+
refresh_margin_s: float = 60.0
|
|
61
|
+
#: How long ``databay login`` waits for the browser to come back to the loopback callback.
|
|
62
|
+
browser_login_timeout_s: float = 300.0
|
|
63
|
+
#: How often the update notice asks PyPI for the newest release, and how long that request may take.
|
|
64
|
+
update_check_interval_s: float = 86400.0
|
|
65
|
+
update_check_timeout_s: float = 2.0
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
SETTINGS = ClientSettings()
|
|
69
|
+
|
|
70
|
+
#: The profile ``databay login`` writes when no ``--profile`` is passed.
|
|
71
|
+
DEFAULT_PROFILE = "default"
|
|
72
|
+
#: Where ``databay login`` keeps tokens unless ``--token-store`` says otherwise.
|
|
73
|
+
DEFAULT_TOKEN_STORE = "keyring" # noqa: S105 — the store's name, not a secret
|
|
74
|
+
#: Where ``databay skill install`` puts the skill unless ``--scope`` says otherwise: the user's home.
|
|
75
|
+
DEFAULT_SKILL_SCOPE = "user"
|
|
76
|
+
|
|
77
|
+
#: Environment variables the client reads. Each is an explicit input, documented in ``--help``.
|
|
78
|
+
ENV_TOKEN = "DATABAY_TOKEN" # noqa: S105 — the variable's name, not a token
|
|
79
|
+
ENV_OUTPUT = "DATABAY_OUTPUT"
|
|
80
|
+
ENV_CONFIG_DIR = "DATABAY_CONFIG_DIR"
|
|
81
|
+
ENV_STATE_DIR = "DATABAY_STATE_DIR"
|
|
82
|
+
ENV_NO_COLOR = "NO_COLOR"
|
|
83
|
+
ENV_NO_UPDATE_CHECK = "DATABAY_NO_UPDATE_CHECK"
|
|
84
|
+
#: Set by CI systems; the update notice stays off under it.
|
|
85
|
+
ENV_CI = "CI"
|
|
86
|
+
|
|
87
|
+
OUTPUT_RULE = (
|
|
88
|
+
"Output: a table when stdout is a terminal, JSON otherwise. --output json|table|csv, "
|
|
89
|
+
f"or {ENV_OUTPUT}, picks one; --output wins over {ENV_OUTPUT}."
|
|
90
|
+
)
|