tinybird 0.0.1.dev209__tar.gz → 0.0.1.dev211__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.dev209 → tinybird-0.0.1.dev211}/PKG-INFO +1 -1
  2. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/__cli__.py +2 -2
  3. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/config.py +4 -1
  4. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/info.py +23 -4
  5. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/login.py +56 -1
  6. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird.egg-info/PKG-INFO +1 -1
  7. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/setup.cfg +0 -0
  8. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/__cli__.py +0 -0
  9. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/ch_utils/constants.py +0 -0
  10. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/ch_utils/engine.py +0 -0
  11. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/check_pypi.py +0 -0
  12. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/client.py +0 -0
  13. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/config.py +0 -0
  14. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/connectors.py +0 -0
  15. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/context.py +0 -0
  16. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/datafile.py +0 -0
  17. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/datatypes.py +0 -0
  18. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/feedback_manager.py +0 -0
  19. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/git_settings.py +0 -0
  20. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/prompts.py +0 -0
  21. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/sql.py +0 -0
  22. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/sql_template.py +0 -0
  23. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/sql_template_fmt.py +0 -0
  24. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/sql_toolset.py +0 -0
  25. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/syncasync.py +0 -0
  26. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/check_pypi.py +0 -0
  27. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/cli.py +0 -0
  28. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/client.py +0 -0
  29. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/config.py +0 -0
  30. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/build.py +0 -0
  31. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/cicd.py +0 -0
  32. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/cli.py +0 -0
  33. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/common.py +0 -0
  34. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/connection.py +0 -0
  35. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/copy.py +0 -0
  36. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/create.py +0 -0
  37. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/build.py +0 -0
  38. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/build_common.py +0 -0
  39. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/build_datasource.py +0 -0
  40. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/build_pipe.py +0 -0
  41. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/common.py +0 -0
  42. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/diff.py +0 -0
  43. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/exceptions.py +0 -0
  44. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/fixture.py +0 -0
  45. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/format_common.py +0 -0
  46. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/format_datasource.py +0 -0
  47. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/format_pipe.py +0 -0
  48. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/parse_datasource.py +0 -0
  49. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/parse_pipe.py +0 -0
  50. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/pipe_checker.py +0 -0
  51. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/playground.py +0 -0
  52. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datafile/pull.py +0 -0
  53. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/datasource.py +0 -0
  54. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/deployment.py +0 -0
  55. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/deprecations.py +0 -0
  56. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/dev_server.py +0 -0
  57. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/endpoint.py +0 -0
  58. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/exceptions.py +0 -0
  59. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/feedback_manager.py +0 -0
  60. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/infra.py +0 -0
  61. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/job.py +0 -0
  62. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/llm.py +0 -0
  63. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/llm_utils.py +0 -0
  64. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/local.py +0 -0
  65. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/local_common.py +0 -0
  66. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/logout.py +0 -0
  67. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/materialization.py +0 -0
  68. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/mock.py +0 -0
  69. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/open.py +0 -0
  70. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/pipe.py +0 -0
  71. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/project.py +0 -0
  72. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/regions.py +0 -0
  73. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/secret.py +0 -0
  74. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/shell.py +0 -0
  75. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/table.py +0 -0
  76. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/telemetry.py +0 -0
  77. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/test.py +0 -0
  78. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/tinyunit/tinyunit.py +0 -0
  79. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/tinyunit/tinyunit_lib.py +0 -0
  80. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/token.py +0 -0
  81. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/watch.py +0 -0
  82. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/workspace.py +0 -0
  83. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb/modules/workspace_members.py +0 -0
  84. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli.py +0 -0
  85. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/auth.py +0 -0
  86. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/branch.py +0 -0
  87. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/cicd.py +0 -0
  88. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/cli.py +0 -0
  89. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/common.py +0 -0
  90. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/config.py +0 -0
  91. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/connection.py +0 -0
  92. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/datasource.py +0 -0
  93. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/exceptions.py +0 -0
  94. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/fmt.py +0 -0
  95. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/job.py +0 -0
  96. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/pipe.py +0 -0
  97. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/regions.py +0 -0
  98. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/tag.py +0 -0
  99. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/telemetry.py +0 -0
  100. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/test.py +0 -0
  101. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
  102. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py +0 -0
  103. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/workspace.py +0 -0
  104. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tb_cli_modules/workspace_members.py +0 -0
  105. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird/tornado_template.py +0 -0
  106. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird.egg-info/SOURCES.txt +0 -0
  107. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird.egg-info/dependency_links.txt +0 -0
  108. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird.egg-info/entry_points.txt +0 -0
  109. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/tinybird.egg-info/requires.txt +0 -0
  110. {tinybird-0.0.1.dev209 → tinybird-0.0.1.dev211}/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.dev209
3
+ Version: 0.0.1.dev211
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.dev209'
8
- __revision__ = '07df479'
7
+ __version__ = '0.0.1.dev211'
8
+ __revision__ = 'b26a42d'
@@ -248,7 +248,10 @@ class CLIConfig:
248
248
  return self.get_client(self.get_user_token(), host)
249
249
 
250
250
  def get_user_email(self) -> Optional[str]:
251
- return self["user_email"]
251
+ try:
252
+ return self["user_email"]
253
+ except KeyError:
254
+ return None
252
255
 
253
256
  def set_workspace_token(self, workspace_id: str, token: str) -> None:
254
257
  pass
@@ -7,6 +7,7 @@ from tinybird.tb.client import TinyB
7
7
  from tinybird.tb.config import get_display_cloud_host
8
8
  from tinybird.tb.modules.cli import CLIConfig, cli
9
9
  from tinybird.tb.modules.common import coro, echo_json, force_echo, format_robust_table
10
+ from tinybird.tb.modules.exceptions import CLILocalException
10
11
  from tinybird.tb.modules.feedback_manager import FeedbackManager
11
12
  from tinybird.tb.modules.local_common import TB_LOCAL_ADDRESS, get_tinybird_local_config
12
13
  from tinybird.tb.modules.project import Project
@@ -75,18 +76,27 @@ async def get_local_info(config: Dict[str, Any]) -> Tuple[Iterable[Any], List[st
75
76
  user_token = local_config.get_user_token() or "No user token found"
76
77
  api_host = TB_LOCAL_ADDRESS
77
78
  ui_host = get_display_cloud_host(api_host)
78
- return await get_env_info(local_client, config, user_email, token, user_token, api_host, ui_host)
79
- except Exception:
79
+ return await get_env_info(local_client, config, user_email, token, user_token, api_host, ui_host, is_local=True)
80
+ except CLILocalException as e:
81
+ raise e
82
+ except Exception as e:
80
83
  click.echo(
81
84
  FeedbackManager.warning(
82
- message="\n⚠ Could not retrieve Tinybird Local info. Please run `tb local start` first."
85
+ message=f"\n⚠ Tinybird Local is running but could not retrieve the workspace info. Please run `tb login` first or check that you are located in the correct directory. {e}"
83
86
  )
84
87
  )
85
88
  return [], []
86
89
 
87
90
 
88
91
  async def get_env_info(
89
- client: TinyB, config: Dict[str, Any], user_email: str, token: str, user_token: str, api_host: str, ui_host: str
92
+ client: TinyB,
93
+ config: Dict[str, Any],
94
+ user_email: str,
95
+ token: str,
96
+ user_token: str,
97
+ api_host: str,
98
+ ui_host: str,
99
+ is_local=False,
90
100
  ) -> Tuple[List[Any], List[str]]:
91
101
  user_workspaces = await client.user_workspaces(version="v1")
92
102
  current_workspace = await client.workspace_info(version="v1")
@@ -113,6 +123,15 @@ async def get_env_info(
113
123
  (user_email, current_main_workspace["name"], current_main_workspace["id"], token, user_token, api_host, ui_host)
114
124
  ]
115
125
 
126
+ if is_local and (
127
+ "Tinybird_Local_Build_" in current_main_workspace["name"]
128
+ or "Tinybird_Local_Testing" in current_main_workspace["name"]
129
+ ):
130
+ click.echo(
131
+ FeedbackManager.warning(
132
+ message="\n⚠ Tinybird Local is running but you are logged locally in a temporal workspace until you run `tb login` or check that you are located in the correct directory."
133
+ )
134
+ )
116
135
  click.echo(format_robust_table(table, column_names=columns))
117
136
  return table, columns
118
137
 
@@ -1,6 +1,9 @@
1
1
  import http.server
2
2
  import os
3
+ import platform
4
+ import shutil
3
5
  import socketserver
6
+ import subprocess
4
7
  import sys
5
8
  import threading
6
9
  import time
@@ -173,7 +176,7 @@ async def login(host: Optional[str], auth_host: str, workspace: str, interactive
173
176
  params["workspace"] = workspace
174
177
 
175
178
  auth_url = f"{auth_host}/api/cli-login?{urlencode(params)}"
176
- webbrowser.open(auth_url)
179
+ open_url(auth_url)
177
180
 
178
181
  click.echo(FeedbackManager.info(message="\nIf browser does not open, please open the following URL manually:"))
179
182
  click.echo(FeedbackManager.info(message=auth_url))
@@ -217,3 +220,55 @@ async def login(host: Optional[str], auth_host: str, workspace: str, interactive
217
220
  raise Exception("Authentication failed or timed out.")
218
221
  except Exception as e:
219
222
  raise CLILoginException(FeedbackManager.error(message=str(e)))
223
+
224
+
225
+ def _running_in_wsl() -> bool:
226
+ """Return True when Python is executing inside a WSL distro."""
227
+ # Fast positive check (modern WSL always sets at least one of these):
228
+ if "WSL_DISTRO_NAME" in os.environ or "WSL_INTEROP" in os.environ:
229
+ return True
230
+
231
+ # Fall back to kernel /proc data
232
+ release = platform.uname().release.lower()
233
+ if "microsoft" in release: # covers stock WSL kernels
234
+ return True
235
+ try:
236
+ if "microsoft" in open("/proc/version").read().lower():
237
+ return True
238
+ except FileNotFoundError:
239
+ pass
240
+ return False
241
+
242
+
243
+ def open_url(url: str, *, new_tab: bool = False) -> bool:
244
+ # 1. Try the standard library first on CPython ≥ 3.11 this already
245
+ # recognises WSL and fires up the Windows default browser for us.
246
+ try:
247
+ wb: Any = webbrowser.get() # mypy: Any for Py < 3.10
248
+ if new_tab:
249
+ if wb.open_new_tab(url):
250
+ return True
251
+ else:
252
+ if wb.open(url):
253
+ return True
254
+ except webbrowser.Error:
255
+ pass # keep going
256
+
257
+ # 2. Inside WSL, prefer `wslview` if the user has it (wslu package).
258
+ if _running_in_wsl() and shutil.which("wslview"):
259
+ subprocess.Popen(["wslview", url])
260
+ return True
261
+
262
+ # 3. Secondary WSL fallback use Windows **start** through cmd.exe.
263
+ # Empty "" argument is required so long URLs are not treated as a window title.
264
+ if _running_in_wsl():
265
+ subprocess.Popen(["cmd.exe", "/c", "start", "", url])
266
+ return True
267
+
268
+ # 4. Unix last-ditch fallback xdg-open (most minimal container images have it)
269
+ if shutil.which("xdg-open"):
270
+ subprocess.Popen(["xdg-open", url])
271
+ return True
272
+
273
+ # 5. If everything failed, let the caller know.
274
+ return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 0.0.1.dev209
3
+ Version: 0.0.1.dev211
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird