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.
Files changed (403) hide show
  1. databay/__init__.py +5 -0
  2. databay/__main__.py +7 -0
  3. databay/agent_skill.py +184 -0
  4. databay/api.py +626 -0
  5. databay/cli/__init__.py +0 -0
  6. databay/cli/auth.py +377 -0
  7. databay/cli/build.py +89 -0
  8. databay/cli/commands/__init__.py +0 -0
  9. databay/cli/commands/alerting_webhook.py +19 -0
  10. databay/cli/commands/alerting_webhook_tag.py +14 -0
  11. databay/cli/commands/alerting_webhook_type.py +14 -0
  12. databay/cli/commands/alerting_webhook_undelivered.py +15 -0
  13. databay/cli/commands/announcement.py +17 -0
  14. databay/cli/commands/api_key.py +18 -0
  15. databay/cli/commands/api_key_project.py +16 -0
  16. databay/cli/commands/backfill_reason_code.py +14 -0
  17. databay/cli/commands/backfill_run.py +17 -0
  18. databay/cli/commands/canvas.py +16 -0
  19. databay/cli/commands/canvas_graph.py +15 -0
  20. databay/cli/commands/canvas_table_check.py +15 -0
  21. databay/cli/commands/dashboards.py +21 -0
  22. databay/cli/commands/dashboards_card.py +20 -0
  23. databay/cli/commands/dashboards_dataset.py +14 -0
  24. databay/cli/commands/dashboards_folder.py +16 -0
  25. databay/cli/commands/dashboards_home.py +17 -0
  26. databay/cli/commands/dashboards_placement.py +16 -0
  27. databay/cli/commands/db.py +19 -0
  28. databay/cli/commands/db_column.py +14 -0
  29. databay/cli/commands/docs_article.py +16 -0
  30. databay/cli/commands/dq_result.py +14 -0
  31. databay/cli/commands/dq_rule.py +16 -0
  32. databay/cli/commands/feature.py +14 -0
  33. databay/cli/commands/google_ads_source.py +14 -0
  34. databay/cli/commands/google_analytics_source.py +14 -0
  35. databay/cli/commands/instagram_account.py +14 -0
  36. databay/cli/commands/instagram_source.py +14 -0
  37. databay/cli/commands/linkedin_account.py +14 -0
  38. databay/cli/commands/linkedin_source.py +14 -0
  39. databay/cli/commands/me.py +14 -0
  40. databay/cli/commands/meta_ads_source.py +14 -0
  41. databay/cli/commands/metric_models.py +26 -0
  42. databay/cli/commands/metrics.py +14 -0
  43. databay/cli/commands/models.py +16 -0
  44. databay/cli/commands/nlq.py +15 -0
  45. databay/cli/commands/notebook_credential.py +16 -0
  46. databay/cli/commands/org.py +14 -0
  47. databay/cli/commands/org_member.py +17 -0
  48. databay/cli/commands/org_offboarding.py +14 -0
  49. databay/cli/commands/pipe.py +26 -0
  50. databay/cli/commands/pipe_backfill_run.py +14 -0
  51. databay/cli/commands/pipe_config_option.py +14 -0
  52. databay/cli/commands/pipe_destination.py +16 -0
  53. databay/cli/commands/pipe_leftover.py +16 -0
  54. databay/cli/commands/pipe_sink_type.py +14 -0
  55. databay/cli/commands/pipe_source_type.py +14 -0
  56. databay/cli/commands/pipe_status_bucket.py +14 -0
  57. databay/cli/commands/pipe_stuck_delete.py +14 -0
  58. databay/cli/commands/plan.py +14 -0
  59. databay/cli/commands/project.py +21 -0
  60. databay/cli/commands/project_budget.py +15 -0
  61. databay/cli/commands/project_member.py +18 -0
  62. databay/cli/commands/project_privilege.py +16 -0
  63. databay/cli/commands/project_share.py +16 -0
  64. databay/cli/commands/provision.py +14 -0
  65. databay/cli/commands/provisioning.py +14 -0
  66. databay/cli/commands/registry.py +14 -0
  67. databay/cli/commands/resource_home.py +14 -0
  68. databay/cli/commands/schema_change.py +18 -0
  69. databay/cli/commands/schema_history.py +17 -0
  70. databay/cli/commands/schema_version.py +16 -0
  71. databay/cli/commands/shopify_store.py +14 -0
  72. databay/cli/commands/sink_data_type.py +14 -0
  73. databay/cli/commands/source.py +24 -0
  74. databay/cli/commands/source_catalog.py +15 -0
  75. databay/cli/commands/source_check_run.py +17 -0
  76. databay/cli/commands/source_hidden_type.py +14 -0
  77. databay/cli/commands/source_name.py +14 -0
  78. databay/cli/commands/source_pipe.py +14 -0
  79. databay/cli/commands/source_publication.py +16 -0
  80. databay/cli/commands/source_readiness_override.py +15 -0
  81. databay/cli/commands/source_setup_choice.py +16 -0
  82. databay/cli/commands/source_stream.py +15 -0
  83. databay/cli/commands/source_table.py +14 -0
  84. databay/cli/commands/ssbi_job.py +18 -0
  85. databay/cli/commands/transform_type.py +14 -0
  86. databay/cli/commands/usage.py +14 -0
  87. databay/cli/commands/warehouse.py +21 -0
  88. databay/cli/commands/warehouse_access_assignment.py +16 -0
  89. databay/cli/commands/warehouse_access_role.py +22 -0
  90. databay/cli/commands/warehouse_access_settings.py +17 -0
  91. databay/cli/commands/warehouse_login.py +20 -0
  92. databay/cli/commands/warehouse_principal.py +17 -0
  93. databay/cli/commands/warehouse_service_account.py +17 -0
  94. databay/cli/commands/warehouse_service_account_credential.py +18 -0
  95. databay/cli/common.py +93 -0
  96. databay/cli/console.py +121 -0
  97. databay/cli/flags.py +183 -0
  98. databay/cli/handwritten.py +22 -0
  99. databay/cli/main.py +198 -0
  100. databay/cli/metrics.py +171 -0
  101. databay/cli/org.py +193 -0
  102. databay/cli/output.py +134 -0
  103. databay/cli/pipe_wait.py +357 -0
  104. databay/cli/profile.py +230 -0
  105. databay/cli/runner.py +432 -0
  106. databay/cli/skill.py +64 -0
  107. databay/cli/sql.py +84 -0
  108. databay/compat.py +161 -0
  109. databay/credentials.py +217 -0
  110. databay/error_catalog.py +226 -0
  111. databay/error_codes.py +3265 -0
  112. databay/errors.py +222 -0
  113. databay/feature_header.py +40 -0
  114. databay/invoke.py +225 -0
  115. databay/locks.py +41 -0
  116. databay/login_flow.py +245 -0
  117. databay/model_base.py +40 -0
  118. databay/models/__init__.py +0 -0
  119. databay/models/alerting_webhook.py +46 -0
  120. databay/models/alerting_webhook_tag.py +11 -0
  121. databay/models/alerting_webhook_type.py +11 -0
  122. databay/models/alerting_webhook_undelivered.py +23 -0
  123. databay/models/announcement.py +37 -0
  124. databay/models/api_key.py +81 -0
  125. databay/models/api_key_project.py +29 -0
  126. databay/models/backfill_reason_code.py +11 -0
  127. databay/models/backfill_run.py +41 -0
  128. databay/models/canvas.py +68 -0
  129. databay/models/canvas_graph.py +86 -0
  130. databay/models/canvas_table_check.py +181 -0
  131. databay/models/dashboards.py +79 -0
  132. databay/models/dashboards_card.py +37 -0
  133. databay/models/dashboards_dataset.py +27 -0
  134. databay/models/dashboards_folder.py +18 -0
  135. databay/models/dashboards_home.py +28 -0
  136. databay/models/db.py +34 -0
  137. databay/models/db_column.py +11 -0
  138. databay/models/docs_article.py +59 -0
  139. databay/models/dq_result.py +27 -0
  140. databay/models/dq_rule.py +43 -0
  141. databay/models/feature.py +15 -0
  142. databay/models/google_ads_source.py +11 -0
  143. databay/models/google_analytics_source.py +11 -0
  144. databay/models/instagram_source.py +11 -0
  145. databay/models/linkedin_source.py +11 -0
  146. databay/models/me.py +71 -0
  147. databay/models/meta_ads_source.py +11 -0
  148. databay/models/metric_models.py +274 -0
  149. databay/models/metrics.py +158 -0
  150. databay/models/models.py +73 -0
  151. databay/models/nlq.py +92 -0
  152. databay/models/notebook_credential.py +51 -0
  153. databay/models/org.py +44 -0
  154. databay/models/org_member.py +123 -0
  155. databay/models/org_offboarding.py +36 -0
  156. databay/models/pipe.py +340 -0
  157. databay/models/pipe_config_option.py +25 -0
  158. databay/models/pipe_destination.py +128 -0
  159. databay/models/pipe_leftover.py +51 -0
  160. databay/models/pipe_sink_type.py +11 -0
  161. databay/models/pipe_source_type.py +11 -0
  162. databay/models/pipe_status_bucket.py +13 -0
  163. databay/models/pipe_stuck_delete.py +25 -0
  164. databay/models/plan.py +37 -0
  165. databay/models/project.py +154 -0
  166. databay/models/project_budget.py +22 -0
  167. databay/models/project_member.py +67 -0
  168. databay/models/project_privilege.py +21 -0
  169. databay/models/project_share.py +76 -0
  170. databay/models/provision.py +12 -0
  171. databay/models/provisioning.py +20 -0
  172. databay/models/registry.py +18 -0
  173. databay/models/resource_home.py +35 -0
  174. databay/models/schema_change.py +96 -0
  175. databay/models/schema_history.py +32 -0
  176. databay/models/schema_version.py +23 -0
  177. databay/models/shared.py +875 -0
  178. databay/models/shopify_store.py +19 -0
  179. databay/models/sink_data_type.py +11 -0
  180. databay/models/source.py +263 -0
  181. databay/models/source_catalog.py +82 -0
  182. databay/models/source_check_run.py +63 -0
  183. databay/models/source_hidden_type.py +13 -0
  184. databay/models/source_name.py +18 -0
  185. databay/models/source_pipe.py +16 -0
  186. databay/models/source_publication.py +30 -0
  187. databay/models/source_readiness_override.py +13 -0
  188. databay/models/source_setup_choice.py +33 -0
  189. databay/models/source_stream.py +65 -0
  190. databay/models/source_table.py +27 -0
  191. databay/models/sql.py +31 -0
  192. databay/models/ssbi_job.py +97 -0
  193. databay/models/transform_type.py +40 -0
  194. databay/models/usage.py +112 -0
  195. databay/models/warehouse.py +38 -0
  196. databay/models/warehouse_access_assignment.py +70 -0
  197. databay/models/warehouse_access_role.py +148 -0
  198. databay/models/warehouse_access_settings.py +35 -0
  199. databay/models/warehouse_login.py +20 -0
  200. databay/models/warehouse_principal.py +49 -0
  201. databay/models/warehouse_service_account.py +35 -0
  202. databay/models/warehouse_service_account_credential.py +11 -0
  203. databay/oidc.py +205 -0
  204. databay/operation.py +191 -0
  205. databay/operations/__init__.py +0 -0
  206. databay/operations/alerting_webhook.py +317 -0
  207. databay/operations/alerting_webhook_tag.py +35 -0
  208. databay/operations/alerting_webhook_type.py +35 -0
  209. databay/operations/alerting_webhook_undelivered.py +74 -0
  210. databay/operations/announcement.py +135 -0
  211. databay/operations/api_key.py +198 -0
  212. databay/operations/api_key_project.py +130 -0
  213. databay/operations/backfill_reason_code.py +35 -0
  214. databay/operations/backfill_run.py +245 -0
  215. databay/operations/canvas.py +136 -0
  216. databay/operations/canvas_graph.py +102 -0
  217. databay/operations/canvas_table_check.py +101 -0
  218. databay/operations/dashboards.py +441 -0
  219. databay/operations/dashboards_card.py +406 -0
  220. databay/operations/dashboards_dataset.py +50 -0
  221. databay/operations/dashboards_folder.py +146 -0
  222. databay/operations/dashboards_home.py +176 -0
  223. databay/operations/dashboards_placement.py +152 -0
  224. databay/operations/db.py +337 -0
  225. databay/operations/db_column.py +57 -0
  226. databay/operations/docs_article.py +101 -0
  227. databay/operations/dq_result.py +43 -0
  228. databay/operations/dq_rule.py +155 -0
  229. databay/operations/feature.py +35 -0
  230. databay/operations/google_ads_source.py +40 -0
  231. databay/operations/google_analytics_source.py +40 -0
  232. databay/operations/instagram_account.py +47 -0
  233. databay/operations/instagram_source.py +40 -0
  234. databay/operations/linkedin_account.py +47 -0
  235. databay/operations/linkedin_source.py +40 -0
  236. databay/operations/me.py +57 -0
  237. databay/operations/meta_ads_source.py +40 -0
  238. databay/operations/metric_models.py +612 -0
  239. databay/operations/metrics.py +218 -0
  240. databay/operations/models.py +123 -0
  241. databay/operations/nlq.py +100 -0
  242. databay/operations/notebook_credential.py +95 -0
  243. databay/operations/org.py +79 -0
  244. databay/operations/org_member.py +192 -0
  245. databay/operations/org_offboarding.py +43 -0
  246. databay/operations/pipe.py +882 -0
  247. databay/operations/pipe_backfill_run.py +72 -0
  248. databay/operations/pipe_config_option.py +50 -0
  249. databay/operations/pipe_destination.py +178 -0
  250. databay/operations/pipe_leftover.py +110 -0
  251. databay/operations/pipe_sink_type.py +35 -0
  252. databay/operations/pipe_source_type.py +35 -0
  253. databay/operations/pipe_status_bucket.py +35 -0
  254. databay/operations/pipe_stuck_delete.py +52 -0
  255. databay/operations/plan.py +35 -0
  256. databay/operations/project.py +346 -0
  257. databay/operations/project_budget.py +135 -0
  258. databay/operations/project_member.py +226 -0
  259. databay/operations/project_privilege.py +143 -0
  260. databay/operations/project_share.py +160 -0
  261. databay/operations/provision.py +35 -0
  262. databay/operations/provisioning.py +35 -0
  263. databay/operations/registry.py +35 -0
  264. databay/operations/resource_home.py +80 -0
  265. databay/operations/schema_change.py +222 -0
  266. databay/operations/schema_history.py +136 -0
  267. databay/operations/schema_version.py +115 -0
  268. databay/operations/shopify_store.py +40 -0
  269. databay/operations/sink_data_type.py +43 -0
  270. databay/operations/source.py +1207 -0
  271. databay/operations/source_catalog.py +135 -0
  272. databay/operations/source_check_run.py +242 -0
  273. databay/operations/source_hidden_type.py +59 -0
  274. databay/operations/source_name.py +69 -0
  275. databay/operations/source_pipe.py +57 -0
  276. databay/operations/source_publication.py +139 -0
  277. databay/operations/source_readiness_override.py +96 -0
  278. databay/operations/source_setup_choice.py +161 -0
  279. databay/operations/source_stream.py +99 -0
  280. databay/operations/source_table.py +59 -0
  281. databay/operations/sql.py +54 -0
  282. databay/operations/ssbi_job.py +242 -0
  283. databay/operations/transform_type.py +35 -0
  284. databay/operations/usage.py +35 -0
  285. databay/operations/warehouse.py +343 -0
  286. databay/operations/warehouse_access_assignment.py +179 -0
  287. databay/operations/warehouse_access_role.py +473 -0
  288. databay/operations/warehouse_access_settings.py +172 -0
  289. databay/operations/warehouse_login.py +308 -0
  290. databay/operations/warehouse_principal.py +174 -0
  291. databay/operations/warehouse_service_account.py +206 -0
  292. databay/operations/warehouse_service_account_credential.py +285 -0
  293. databay/paths.py +32 -0
  294. databay/platform_check.py +20 -0
  295. databay/profiles.py +181 -0
  296. databay/redact.py +22 -0
  297. databay/reference.py +218 -0
  298. databay/resource.py +167 -0
  299. databay/resources/__init__.py +0 -0
  300. databay/resources/alerting_webhook.py +84 -0
  301. databay/resources/alerting_webhook_tag.py +21 -0
  302. databay/resources/alerting_webhook_type.py +21 -0
  303. databay/resources/alerting_webhook_undelivered.py +35 -0
  304. databay/resources/announcement.py +45 -0
  305. databay/resources/api_key.py +56 -0
  306. databay/resources/api_key_project.py +47 -0
  307. databay/resources/backfill_reason_code.py +21 -0
  308. databay/resources/backfill_run.py +78 -0
  309. databay/resources/canvas.py +43 -0
  310. databay/resources/canvas_graph.py +38 -0
  311. databay/resources/canvas_table_check.py +38 -0
  312. databay/resources/dashboards.py +105 -0
  313. databay/resources/dashboards_card.py +97 -0
  314. databay/resources/dashboards_dataset.py +27 -0
  315. databay/resources/dashboards_folder.py +47 -0
  316. databay/resources/dashboards_home.py +59 -0
  317. databay/resources/dashboards_placement.py +47 -0
  318. databay/resources/db.py +87 -0
  319. databay/resources/db_column.py +28 -0
  320. databay/resources/docs_article.py +37 -0
  321. databay/resources/dq_result.py +25 -0
  322. databay/resources/dq_rule.py +48 -0
  323. databay/resources/feature.py +21 -0
  324. databay/resources/google_ads_source.py +25 -0
  325. databay/resources/google_analytics_source.py +25 -0
  326. databay/resources/instagram_account.py +27 -0
  327. databay/resources/instagram_source.py +25 -0
  328. databay/resources/linkedin_account.py +27 -0
  329. databay/resources/linkedin_source.py +25 -0
  330. databay/resources/me.py +27 -0
  331. databay/resources/meta_ads_source.py +25 -0
  332. databay/resources/metric_models.py +154 -0
  333. databay/resources/metrics.py +57 -0
  334. databay/resources/models.py +42 -0
  335. databay/resources/nlq.py +34 -0
  336. databay/resources/notebook_credential.py +41 -0
  337. databay/resources/org.py +29 -0
  338. databay/resources/org_member.py +53 -0
  339. databay/resources/org_offboarding.py +25 -0
  340. databay/resources/pipe.py +208 -0
  341. databay/resources/pipe_backfill_run.py +28 -0
  342. databay/resources/pipe_config_option.py +26 -0
  343. databay/resources/pipe_destination.py +49 -0
  344. databay/resources/pipe_leftover.py +42 -0
  345. databay/resources/pipe_sink_type.py +21 -0
  346. databay/resources/pipe_source_type.py +21 -0
  347. databay/resources/pipe_status_bucket.py +21 -0
  348. databay/resources/pipe_stuck_delete.py +27 -0
  349. databay/resources/plan.py +21 -0
  350. databay/resources/project.py +92 -0
  351. databay/resources/project_budget.py +38 -0
  352. databay/resources/project_member.py +68 -0
  353. databay/resources/project_privilege.py +48 -0
  354. databay/resources/project_share.py +47 -0
  355. databay/resources/provision.py +21 -0
  356. databay/resources/provisioning.py +21 -0
  357. databay/resources/registry.py +21 -0
  358. databay/resources/resource_home.py +29 -0
  359. databay/resources/schema_change.py +62 -0
  360. databay/resources/schema_history.py +52 -0
  361. databay/resources/schema_version.py +43 -0
  362. databay/resources/shopify_store.py +25 -0
  363. databay/resources/sink_data_type.py +25 -0
  364. databay/resources/source.py +132 -0
  365. databay/resources/source_catalog.py +34 -0
  366. databay/resources/source_check_run.py +67 -0
  367. databay/resources/source_hidden_type.py +25 -0
  368. databay/resources/source_name.py +27 -0
  369. databay/resources/source_pipe.py +28 -0
  370. databay/resources/source_publication.py +47 -0
  371. databay/resources/source_readiness_override.py +37 -0
  372. databay/resources/source_setup_choice.py +50 -0
  373. databay/resources/source_stream.py +38 -0
  374. databay/resources/source_table.py +27 -0
  375. databay/resources/sql.py +27 -0
  376. databay/resources/ssbi_job.py +69 -0
  377. databay/resources/transform_type.py +21 -0
  378. databay/resources/usage.py +21 -0
  379. databay/resources/warehouse.py +136 -0
  380. databay/resources/warehouse_access_assignment.py +51 -0
  381. databay/resources/warehouse_access_role.py +118 -0
  382. databay/resources/warehouse_access_settings.py +56 -0
  383. databay/resources/warehouse_login.py +81 -0
  384. databay/resources/warehouse_principal.py +51 -0
  385. databay/resources/warehouse_service_account.py +61 -0
  386. databay/resources/warehouse_service_account_credential.py +78 -0
  387. databay/sdk.py +77 -0
  388. databay/settings.py +90 -0
  389. databay/skill/SKILL.md +357 -0
  390. databay/skill/references/commands.md +7025 -0
  391. databay/skill/references/errors.md +727 -0
  392. databay/spec.py +362 -0
  393. databay/stored_token.py +134 -0
  394. databay/tokens.py +108 -0
  395. databay/transport.py +357 -0
  396. databay/update_check.py +151 -0
  397. databay/version.py +6 -0
  398. databay/waits.py +330 -0
  399. databay_cli-0.1.0.dist-info/METADATA +42 -0
  400. databay_cli-0.1.0.dist-info/RECORD +403 -0
  401. databay_cli-0.1.0.dist-info/WHEEL +4 -0
  402. databay_cli-0.1.0.dist-info/entry_points.txt +2 -0
  403. 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
+ )