tinybird 0.0.1.dev161__tar.gz → 0.0.1.dev162__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 (110) hide show
  1. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/PKG-INFO +1 -1
  2. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/__cli__.py +2 -2
  3. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/local_common.py +27 -25
  4. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/workspace.py +60 -1
  5. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird.egg-info/PKG-INFO +1 -1
  6. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/setup.cfg +0 -0
  7. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/__cli__.py +0 -0
  8. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/ch_utils/constants.py +0 -0
  9. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/ch_utils/engine.py +0 -0
  10. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/check_pypi.py +0 -0
  11. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/client.py +0 -0
  12. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/config.py +0 -0
  13. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/connectors.py +0 -0
  14. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/context.py +0 -0
  15. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/datafile.py +0 -0
  16. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/datatypes.py +0 -0
  17. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/feedback_manager.py +0 -0
  18. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/git_settings.py +0 -0
  19. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/prompts.py +0 -0
  20. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/sql.py +0 -0
  21. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/sql_template.py +0 -0
  22. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/sql_template_fmt.py +0 -0
  23. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/sql_toolset.py +0 -0
  24. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/syncasync.py +0 -0
  25. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/check_pypi.py +0 -0
  26. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/cli.py +0 -0
  27. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/client.py +0 -0
  28. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/config.py +0 -0
  29. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/build.py +0 -0
  30. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/cicd.py +0 -0
  31. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/cli.py +0 -0
  32. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/common.py +0 -0
  33. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/config.py +0 -0
  34. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/connection.py +0 -0
  35. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/copy.py +0 -0
  36. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/create.py +0 -0
  37. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/build.py +0 -0
  38. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/build_common.py +0 -0
  39. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/build_datasource.py +0 -0
  40. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/build_pipe.py +0 -0
  41. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/common.py +0 -0
  42. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/diff.py +0 -0
  43. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/exceptions.py +0 -0
  44. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/fixture.py +0 -0
  45. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/format_common.py +0 -0
  46. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/format_datasource.py +0 -0
  47. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/format_pipe.py +0 -0
  48. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/parse_datasource.py +0 -0
  49. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/parse_pipe.py +0 -0
  50. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/pipe_checker.py +0 -0
  51. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/playground.py +0 -0
  52. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datafile/pull.py +0 -0
  53. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/datasource.py +0 -0
  54. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/deployment.py +0 -0
  55. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/deprecations.py +0 -0
  56. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/dev_server.py +0 -0
  57. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/endpoint.py +0 -0
  58. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/exceptions.py +0 -0
  59. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/feedback_manager.py +0 -0
  60. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/info.py +0 -0
  61. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/infra.py +0 -0
  62. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/job.py +0 -0
  63. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/llm.py +0 -0
  64. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/llm_utils.py +0 -0
  65. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/local.py +0 -0
  66. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/login.py +0 -0
  67. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/logout.py +0 -0
  68. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/materialization.py +0 -0
  69. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/mock.py +0 -0
  70. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/open.py +0 -0
  71. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/pipe.py +0 -0
  72. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/project.py +0 -0
  73. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/regions.py +0 -0
  74. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/secret.py +0 -0
  75. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/shell.py +0 -0
  76. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/table.py +0 -0
  77. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/telemetry.py +0 -0
  78. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/test.py +0 -0
  79. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/tinyunit/tinyunit.py +0 -0
  80. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/tinyunit/tinyunit_lib.py +0 -0
  81. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/token.py +0 -0
  82. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/watch.py +0 -0
  83. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb/modules/workspace_members.py +0 -0
  84. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli.py +0 -0
  85. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/auth.py +0 -0
  86. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/branch.py +0 -0
  87. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/cicd.py +0 -0
  88. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/cli.py +0 -0
  89. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/common.py +0 -0
  90. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/config.py +0 -0
  91. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/connection.py +0 -0
  92. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/datasource.py +0 -0
  93. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/exceptions.py +0 -0
  94. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/fmt.py +0 -0
  95. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/job.py +0 -0
  96. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/pipe.py +0 -0
  97. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/regions.py +0 -0
  98. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/tag.py +0 -0
  99. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/telemetry.py +0 -0
  100. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/test.py +0 -0
  101. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
  102. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py +0 -0
  103. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/workspace.py +0 -0
  104. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tb_cli_modules/workspace_members.py +0 -0
  105. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird/tornado_template.py +0 -0
  106. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird.egg-info/SOURCES.txt +0 -0
  107. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird.egg-info/dependency_links.txt +0 -0
  108. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird.egg-info/entry_points.txt +0 -0
  109. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird.egg-info/requires.txt +0 -0
  110. {tinybird-0.0.1.dev161 → tinybird-0.0.1.dev162}/tinybird.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 0.0.1.dev161
3
+ Version: 0.0.1.dev162
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird
@@ -4,5 +4,5 @@ __description__ = 'Tinybird Command Line Tool'
4
4
  __url__ = 'https://www.tinybird.co/docs/forward/commands'
5
5
  __author__ = 'Tinybird'
6
6
  __author_email__ = 'support@tinybird.co'
7
- __version__ = '0.0.1.dev161'
8
- __revision__ = '29ac536'
7
+ __version__ = '0.0.1.dev162'
8
+ __revision__ = 'ccf549a'
@@ -36,31 +36,7 @@ async def get_tinybird_local_config(config_obj: Dict[str, Any], test: bool = Fal
36
36
  """
37
37
  path = config_obj.get("path")
38
38
  config = CLIConfig.get_project_config()
39
-
40
- try:
41
- # ruff: noqa: ASYNC210
42
- tokens = requests.get(f"{TB_LOCAL_ADDRESS}/tokens").json()
43
- except Exception:
44
- try:
45
- # Check if tinybird-local is running with docker, in case it's a config issue
46
- output = subprocess.check_output(["docker", "ps"], text=True) # noqa: ASYNC221
47
- header_row = next((line for line in output.splitlines() if "CONTAINER ID" in line), "")
48
- tb_local_row = next(
49
- (line for line in output.splitlines() if TB_CONTAINER_NAME in line),
50
- f"{TB_CONTAINER_NAME} not found in output",
51
- )
52
- add_telemetry_event(
53
- "docker_debug",
54
- data={
55
- "docker_ps_output": header_row + tb_local_row,
56
- },
57
- )
58
- except Exception:
59
- pass
60
- raise CLILocalException(
61
- FeedbackManager.error(message="Tinybird local is not running. Please run `tb local start` first.")
62
- )
63
-
39
+ tokens = get_local_tokens()
64
40
  user_token = tokens["user_token"]
65
41
  admin_token = tokens["admin_token"]
66
42
  default_token = tokens["workspace_admin_token"]
@@ -118,3 +94,29 @@ def get_build_workspace_name(path: str) -> str:
118
94
  def get_test_workspace_name(path: str) -> str:
119
95
  folder_hash = hashlib.sha256(path.encode()).hexdigest()
120
96
  return f"Tinybird_Local_Test_{folder_hash}"
97
+
98
+
99
+ def get_local_tokens() -> Dict[str, str]:
100
+ try:
101
+ # ruff: noqa: ASYNC210
102
+ return requests.get(f"{TB_LOCAL_ADDRESS}/tokens").json()
103
+ except Exception:
104
+ try:
105
+ # Check if tinybird-local is running with docker, in case it's a config issue
106
+ output = subprocess.check_output(["docker", "ps"], text=True)
107
+ header_row = next((line for line in output.splitlines() if "CONTAINER ID" in line), "")
108
+ tb_local_row = next(
109
+ (line for line in output.splitlines() if TB_CONTAINER_NAME in line),
110
+ f"{TB_CONTAINER_NAME} not found in output",
111
+ )
112
+ add_telemetry_event(
113
+ "docker_debug",
114
+ data={
115
+ "docker_ps_output": header_row + tb_local_row,
116
+ },
117
+ )
118
+ except Exception:
119
+ pass
120
+ raise CLILocalException(
121
+ FeedbackManager.error(message="Tinybird local is not running. Please run `tb local start` first.")
122
+ )
@@ -6,9 +6,10 @@
6
6
  from typing import Any, Dict, List, Optional
7
7
 
8
8
  import click
9
+ import requests
9
10
  from click import Context
10
11
 
11
- from tinybird.tb.client import TinyB
12
+ from tinybird.tb.client import AuthNoTokenException, TinyB
12
13
  from tinybird.tb.modules.cli import cli
13
14
  from tinybird.tb.modules.common import (
14
15
  _get_workspace_plan_name,
@@ -26,6 +27,10 @@ from tinybird.tb.modules.common import (
26
27
  from tinybird.tb.modules.config import CLIConfig
27
28
  from tinybird.tb.modules.exceptions import CLIWorkspaceException
28
29
  from tinybird.tb.modules.feedback_manager import FeedbackManager
30
+ from tinybird.tb.modules.local_common import (
31
+ TB_LOCAL_ADDRESS,
32
+ get_local_tokens,
33
+ )
29
34
 
30
35
 
31
36
  @cli.group()
@@ -221,3 +226,57 @@ async def delete_workspace(
221
226
  click.echo(FeedbackManager.success_workspace_deleted(workspace_name=workspace_to_delete["name"]))
222
227
  except Exception as e:
223
228
  raise CLIWorkspaceException(FeedbackManager.error_exception(error=str(e)))
229
+
230
+
231
+ @workspace.command(name="clear", short_help="Clear a workspace. Only available against Tinybird Local.")
232
+ @click.option("--yes", is_flag=True, default=False, help="Don't ask for confirmation")
233
+ @click.pass_context
234
+ @coro
235
+ async def workspace_clear(ctx: Context, yes: bool) -> None:
236
+ """Delete a workspace where you are an admin."""
237
+ is_cloud = ctx.ensure_object(dict)["env"] == "cloud"
238
+ if is_cloud:
239
+ raise CLIWorkspaceException(
240
+ FeedbackManager.error(
241
+ message="`tb workspace clear` is not available against Tinybird Cloud. Use `tb --cloud deploy` instead."
242
+ )
243
+ )
244
+ yes = yes or click.confirm(
245
+ FeedbackManager.warning(message="Are you sure you want to clear the workspace? [y/N]:"),
246
+ show_default=False,
247
+ prompt_suffix="",
248
+ )
249
+ if yes:
250
+ await clear_workspace()
251
+
252
+
253
+ async def clear_workspace() -> None:
254
+ config = CLIConfig.get_project_config()
255
+ tokens = get_local_tokens()
256
+
257
+ user_token = tokens["user_token"]
258
+ admin_token = tokens["admin_token"]
259
+ user_client = config.get_client(host=TB_LOCAL_ADDRESS, token=user_token)
260
+ ws_name = config.get("name")
261
+ if not ws_name:
262
+ raise AuthNoTokenException()
263
+
264
+ user_workspaces = requests.get( # noqa: ASYNC210
265
+ f"{TB_LOCAL_ADDRESS}/v1/user/workspaces?with_organization=true&token={admin_token}"
266
+ ).json()
267
+ user_org_id = user_workspaces.get("organization_id", {})
268
+ local_workspaces = user_workspaces.get("workspaces", [])
269
+
270
+ ws = next((ws for ws in local_workspaces if ws["name"] == ws_name), None)
271
+
272
+ if ws:
273
+ requests.delete(f"{TB_LOCAL_ADDRESS}/v1/workspaces/{ws['id']}?token={user_token}&hard_delete_confirmation=yes") # noqa: ASYNC210
274
+ ws = None
275
+
276
+ if not ws:
277
+ await user_client.create_workspace(ws_name, assign_to_organization_id=user_org_id, version="v1")
278
+ user_workspaces = requests.get(f"{TB_LOCAL_ADDRESS}/v1/user/workspaces?token={admin_token}").json() # noqa: ASYNC210
279
+ ws = next((ws for ws in user_workspaces["workspaces"] if ws["name"] == ws_name), None)
280
+
281
+ if ws:
282
+ click.echo(FeedbackManager.success(message=f"\n✓ Workspace '{ws_name}' cleared"))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 0.0.1.dev161
3
+ Version: 0.0.1.dev162
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird