tinybird 0.0.1.dev57__tar.gz → 0.0.1.dev58__tar.gz

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 tinybird might be problematic. Click here for more details.

Files changed (101) hide show
  1. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/PKG-INFO +1 -1
  2. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/__cli__.py +2 -2
  3. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/deployment.py +59 -7
  4. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/project.py +6 -0
  5. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird.egg-info/PKG-INFO +1 -1
  6. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/setup.cfg +0 -0
  7. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/__cli__.py +0 -0
  8. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/ch_utils/constants.py +0 -0
  9. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/ch_utils/engine.py +0 -0
  10. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/check_pypi.py +0 -0
  11. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/client.py +0 -0
  12. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/config.py +0 -0
  13. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/connectors.py +0 -0
  14. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/context.py +0 -0
  15. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/datafile.py +0 -0
  16. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/datatypes.py +0 -0
  17. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/feedback_manager.py +0 -0
  18. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/git_settings.py +0 -0
  19. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/prompts.py +0 -0
  20. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/sql.py +0 -0
  21. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/sql_template.py +0 -0
  22. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/sql_template_fmt.py +0 -0
  23. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/sql_toolset.py +0 -0
  24. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/syncasync.py +0 -0
  25. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/cli.py +0 -0
  26. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/auth.py +0 -0
  27. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/build.py +0 -0
  28. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/cicd.py +0 -0
  29. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/cli.py +0 -0
  30. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/common.py +0 -0
  31. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/config.py +0 -0
  32. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/copy.py +0 -0
  33. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/create.py +0 -0
  34. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/build.py +0 -0
  35. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/build_common.py +0 -0
  36. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/build_datasource.py +0 -0
  37. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/build_pipe.py +0 -0
  38. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/common.py +0 -0
  39. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/diff.py +0 -0
  40. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/exceptions.py +0 -0
  41. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/fixture.py +0 -0
  42. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/format_common.py +0 -0
  43. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/format_datasource.py +0 -0
  44. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/format_pipe.py +0 -0
  45. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/parse_datasource.py +0 -0
  46. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/parse_pipe.py +0 -0
  47. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/pipe_checker.py +0 -0
  48. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datafile/pull.py +0 -0
  49. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/datasource.py +0 -0
  50. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/endpoint.py +0 -0
  51. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/exceptions.py +0 -0
  52. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/feedback_manager.py +0 -0
  53. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/fmt.py +0 -0
  54. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/job.py +0 -0
  55. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/llm.py +0 -0
  56. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/llm_utils.py +0 -0
  57. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/local.py +0 -0
  58. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/local_common.py +0 -0
  59. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/login.py +0 -0
  60. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/materialization.py +0 -0
  61. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/mock.py +0 -0
  62. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/pipe.py +0 -0
  63. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/regions.py +0 -0
  64. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/shell.py +0 -0
  65. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/table.py +0 -0
  66. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/tag.py +0 -0
  67. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/telemetry.py +0 -0
  68. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/test.py +0 -0
  69. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/tinyunit/tinyunit.py +0 -0
  70. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/tinyunit/tinyunit_lib.py +0 -0
  71. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/token.py +0 -0
  72. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/watch.py +0 -0
  73. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/workspace.py +0 -0
  74. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb/modules/workspace_members.py +0 -0
  75. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli.py +0 -0
  76. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/auth.py +0 -0
  77. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/branch.py +0 -0
  78. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/cicd.py +0 -0
  79. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/cli.py +0 -0
  80. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/common.py +0 -0
  81. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/config.py +0 -0
  82. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/connection.py +0 -0
  83. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/datasource.py +0 -0
  84. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/exceptions.py +0 -0
  85. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/fmt.py +0 -0
  86. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/job.py +0 -0
  87. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/pipe.py +0 -0
  88. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/regions.py +0 -0
  89. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/tag.py +0 -0
  90. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/telemetry.py +0 -0
  91. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/test.py +0 -0
  92. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
  93. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py +0 -0
  94. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/workspace.py +0 -0
  95. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tb_cli_modules/workspace_members.py +0 -0
  96. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird/tornado_template.py +0 -0
  97. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird.egg-info/SOURCES.txt +0 -0
  98. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird.egg-info/dependency_links.txt +0 -0
  99. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird.egg-info/entry_points.txt +0 -0
  100. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird.egg-info/requires.txt +0 -0
  101. {tinybird-0.0.1.dev57 → tinybird-0.0.1.dev58}/tinybird.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tinybird
3
- Version: 0.0.1.dev57
3
+ Version: 0.0.1.dev58
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/cli/introduction.html
6
6
  Author: Tinybird
@@ -4,5 +4,5 @@ __description__ = 'Tinybird Command Line Tool'
4
4
  __url__ = 'https://www.tinybird.co/docs/cli/introduction.html'
5
5
  __author__ = 'Tinybird'
6
6
  __author_email__ = 'support@tinybird.co'
7
- __version__ = '0.0.1.dev57'
8
- __revision__ = '0af16b9'
7
+ __version__ = '0.0.1.dev58'
8
+ __revision__ = '35a8d6e'
@@ -153,12 +153,18 @@ def deployment_group() -> None:
153
153
  default=False,
154
154
  help="Auto-promote the deployment. Only works if --wait is enabled. Disabled by default.",
155
155
  )
156
+ @click.option(
157
+ "--check/--no-check",
158
+ is_flag=True,
159
+ default=False,
160
+ help="Validate the deployment before creating it. Disabled by default.",
161
+ )
156
162
  @click.pass_context
157
- def deployment_create(ctx: click.Context, wait: bool, auto: bool) -> None:
163
+ def deployment_create(ctx: click.Context, wait: bool, auto: bool, check: bool) -> None:
158
164
  """
159
165
  Validate and deploy the project server side.
160
166
  """
161
- create_deployment(ctx, wait, auto)
167
+ create_deployment(ctx, wait, auto, check)
162
168
 
163
169
 
164
170
  @deployment_group.command(name="ls")
@@ -246,15 +252,21 @@ def deployment_rollback(ctx: click.Context, wait: bool) -> None:
246
252
  default=False,
247
253
  help="Auto-promote the deployment. Only works if --wait is enabled. Disabled by default.",
248
254
  )
255
+ @click.option(
256
+ "--check",
257
+ is_flag=True,
258
+ default=False,
259
+ help="Validate the deployment before creating it. Disabled by default.",
260
+ )
249
261
  @click.pass_context
250
- def deploy(ctx: click.Context, wait: bool, auto: bool) -> None:
262
+ def deploy(ctx: click.Context, wait: bool, auto: bool, check: bool) -> None:
251
263
  """
252
264
  Deploy the project.
253
265
  """
254
- create_deployment(ctx, wait, auto)
266
+ create_deployment(ctx, wait, auto, check)
255
267
 
256
268
 
257
- def create_deployment(ctx: click.Context, wait: bool, auto: bool) -> None:
269
+ def create_deployment(ctx: click.Context, wait: bool, auto: bool, check: Optional[bool] = None) -> None:
258
270
  # TODO: This code is duplicated in build_server.py
259
271
  # Should be refactored to be shared
260
272
  MULTIPART_BOUNDARY_DATA_PROJECT = "data_project://"
@@ -281,11 +293,23 @@ def create_deployment(ctx: click.Context, wait: bool, auto: bool) -> None:
281
293
  deployment = None
282
294
  try:
283
295
  HEADERS = {"Authorization": f"Bearer {TINYBIRD_API_KEY}"}
284
-
285
- r = requests.post(TINYBIRD_API_URL, files=files, headers=HEADERS)
296
+ params = {}
297
+ if check:
298
+ click.echo(FeedbackManager.highlight(message="\n» Validating deployment...\n"))
299
+ params["check"] = "true"
300
+ r = requests.post(TINYBIRD_API_URL, files=files, headers=HEADERS, params=params)
286
301
  result = r.json()
287
302
  logging.debug(json.dumps(result, indent=2))
288
303
 
304
+ if check:
305
+ print_changes(result, project)
306
+ status = result.get("result")
307
+ if status == "success":
308
+ click.echo(FeedbackManager.success(message="\n✓ Deployment is valid"))
309
+ else:
310
+ click.echo(FeedbackManager.error(message="\n✗ Deployment is not valid"))
311
+ return
312
+
289
313
  deploy_result = result.get("result")
290
314
  if deploy_result == "success":
291
315
  click.echo(FeedbackManager.success(message="Deployment submitted successfully"))
@@ -308,6 +332,8 @@ def create_deployment(ctx: click.Context, wait: bool, auto: bool) -> None:
308
332
  click.echo(FeedbackManager.error(message=f"{deploy_error.get('error')}"))
309
333
  else:
310
334
  click.echo(FeedbackManager.error(message=f"Unknown build result {deploy_result}"))
335
+ except Exception as e:
336
+ click.echo(FeedbackManager.error_exception(error=e))
311
337
  finally:
312
338
  for fd in fds:
313
339
  fd.close()
@@ -343,3 +369,29 @@ def create_deployment(ctx: click.Context, wait: bool, auto: bool) -> None:
343
369
 
344
370
  if auto:
345
371
  promote_deployment(client.host, HEADERS, wait=wait)
372
+
373
+
374
+ def print_changes(result: dict, project: Project) -> None:
375
+ deployment = result.get("deployment", {})
376
+ columns = ["status", "name", "path"]
377
+ resources: list[list[str]] = []
378
+
379
+ for ds in deployment.get("new_datasources", []):
380
+ resources.append(["new", ds, project.get_resource_path(ds, "datasource")])
381
+
382
+ for p in deployment.get("new_pipes", []):
383
+ resources.append(["new", p, project.get_resource_path(p, "pipe")])
384
+
385
+ for ds in deployment.get("changed_datasources", []):
386
+ resources.append(["modified", ds, project.get_resource_path(ds, "datasource")])
387
+
388
+ for p in deployment.get("changed_pipes", []):
389
+ resources.append(["modified", p, project.get_resource_path(p, "pipe")])
390
+
391
+ for ds in deployment.get("deleted_datasources", []):
392
+ resources.append(["deleted", ds, project.get_resource_path(ds, "datasource")])
393
+
394
+ for p in deployment.get("deleted_pipes", []):
395
+ resources.append(["deleted", p, project.get_resource_path(p, "pipe")])
396
+
397
+ echo_safe_humanfriendly_tables_format_smart_table(resources, column_names=columns)
@@ -32,6 +32,12 @@ class Project:
32
32
  project_files.append(project_file)
33
33
  return project_files
34
34
 
35
+ def get_resource_path(self, resource_name: str, resource_type: str) -> Optional[str]:
36
+ full_path = next((p for p in self.get_project_files() if p.endswith(resource_name + f".{resource_type}")), "")
37
+ if not full_path:
38
+ return None
39
+ return Path(full_path).relative_to(self.path)
40
+
35
41
  def get_vendor_files(self) -> List[str]:
36
42
  vendor_files: List[str] = []
37
43
  for project_file in glob.glob(f"{self.vendor_path}/**/*.datasource", recursive=True):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tinybird
3
- Version: 0.0.1.dev57
3
+ Version: 0.0.1.dev58
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/cli/introduction.html
6
6
  Author: Tinybird
File without changes