tinybird 0.0.1.dev170__tar.gz → 0.0.1.dev171__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.dev170 → tinybird-0.0.1.dev171}/PKG-INFO +1 -1
  2. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/__cli__.py +2 -2
  3. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/cli.py +29 -3
  4. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/common.py +4 -0
  5. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/info.py +29 -12
  6. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird.egg-info/PKG-INFO +1 -1
  7. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/setup.cfg +0 -0
  8. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/__cli__.py +0 -0
  9. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/ch_utils/constants.py +0 -0
  10. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/ch_utils/engine.py +0 -0
  11. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/check_pypi.py +0 -0
  12. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/client.py +0 -0
  13. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/config.py +0 -0
  14. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/connectors.py +0 -0
  15. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/context.py +0 -0
  16. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/datafile.py +0 -0
  17. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/datatypes.py +0 -0
  18. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/feedback_manager.py +0 -0
  19. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/git_settings.py +0 -0
  20. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/prompts.py +0 -0
  21. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/sql.py +0 -0
  22. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/sql_template.py +0 -0
  23. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/sql_template_fmt.py +0 -0
  24. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/sql_toolset.py +0 -0
  25. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/syncasync.py +0 -0
  26. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/check_pypi.py +0 -0
  27. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/cli.py +0 -0
  28. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/client.py +0 -0
  29. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/config.py +0 -0
  30. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/build.py +0 -0
  31. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/cicd.py +0 -0
  32. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/config.py +0 -0
  33. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/connection.py +0 -0
  34. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/copy.py +0 -0
  35. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/create.py +0 -0
  36. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/build.py +0 -0
  37. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/build_common.py +0 -0
  38. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/build_datasource.py +0 -0
  39. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/build_pipe.py +0 -0
  40. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/common.py +0 -0
  41. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/diff.py +0 -0
  42. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/exceptions.py +0 -0
  43. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/fixture.py +0 -0
  44. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/format_common.py +0 -0
  45. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/format_datasource.py +0 -0
  46. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/format_pipe.py +0 -0
  47. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/parse_datasource.py +0 -0
  48. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/parse_pipe.py +0 -0
  49. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/pipe_checker.py +0 -0
  50. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/playground.py +0 -0
  51. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/pull.py +0 -0
  52. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datasource.py +0 -0
  53. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/deployment.py +0 -0
  54. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/deprecations.py +0 -0
  55. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/dev_server.py +0 -0
  56. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/endpoint.py +0 -0
  57. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/exceptions.py +0 -0
  58. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/feedback_manager.py +0 -0
  59. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/infra.py +0 -0
  60. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/job.py +0 -0
  61. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/llm.py +0 -0
  62. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/llm_utils.py +0 -0
  63. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/local.py +0 -0
  64. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/local_common.py +0 -0
  65. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/login.py +0 -0
  66. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/logout.py +0 -0
  67. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/materialization.py +0 -0
  68. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/mock.py +0 -0
  69. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/open.py +0 -0
  70. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/pipe.py +0 -0
  71. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/project.py +0 -0
  72. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/regions.py +0 -0
  73. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/secret.py +0 -0
  74. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/shell.py +0 -0
  75. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/table.py +0 -0
  76. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/telemetry.py +0 -0
  77. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/test.py +0 -0
  78. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/tinyunit/tinyunit.py +0 -0
  79. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/tinyunit/tinyunit_lib.py +0 -0
  80. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/token.py +0 -0
  81. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/watch.py +0 -0
  82. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/workspace.py +0 -0
  83. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb/modules/workspace_members.py +0 -0
  84. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli.py +0 -0
  85. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/auth.py +0 -0
  86. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/branch.py +0 -0
  87. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/cicd.py +0 -0
  88. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/cli.py +0 -0
  89. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/common.py +0 -0
  90. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/config.py +0 -0
  91. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/connection.py +0 -0
  92. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/datasource.py +0 -0
  93. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/exceptions.py +0 -0
  94. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/fmt.py +0 -0
  95. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/job.py +0 -0
  96. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/pipe.py +0 -0
  97. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/regions.py +0 -0
  98. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/tag.py +0 -0
  99. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/telemetry.py +0 -0
  100. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/test.py +0 -0
  101. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
  102. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py +0 -0
  103. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/workspace.py +0 -0
  104. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/workspace_members.py +0 -0
  105. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird/tornado_template.py +0 -0
  106. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird.egg-info/SOURCES.txt +0 -0
  107. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird.egg-info/dependency_links.txt +0 -0
  108. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird.egg-info/entry_points.txt +0 -0
  109. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/tinybird.egg-info/requires.txt +0 -0
  110. {tinybird-0.0.1.dev170 → tinybird-0.0.1.dev171}/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.dev170
3
+ Version: 0.0.1.dev171
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.dev170'
8
- __revision__ = '0c715ac'
7
+ __version__ = '0.0.1.dev171'
8
+ __revision__ = 'a5eb91f'
@@ -71,6 +71,9 @@ VERSION = f"{__cli__.__version__} (rev {__cli__.__revision__})"
71
71
  @click.option("--show-tokens", is_flag=True, default=False, help="Enable the output of tokens.")
72
72
  @click.option("--cloud/--local", is_flag=True, default=False, help="Run against cloud or local.")
73
73
  @click.option("--staging", is_flag=True, default=False, help="Run against a staging deployment.")
74
+ @click.option(
75
+ "--output", type=click.Choice(["json", "human"], case_sensitive=False), default="human", help="Output format"
76
+ )
74
77
  @click.version_option(version=VERSION)
75
78
  @click.pass_context
76
79
  @coro
@@ -84,15 +87,19 @@ async def cli(
84
87
  show_tokens: bool,
85
88
  cloud: bool,
86
89
  staging: bool,
90
+ output: str,
87
91
  ) -> None:
88
92
  """
89
93
  Use `OBFUSCATE_REGEX_PATTERN` and `OBFUSCATE_PATTERN_SEPARATOR` environment variables to define a regex pattern and a separator (in case of a single string with multiple regex) to obfuscate secrets in the CLI output.
90
94
  """
91
95
  # We need to unpatch for our tests not to break
92
- if show_tokens or not cloud or ctx.invoked_subcommand == "build":
93
- __unpatch_click_output()
96
+ if output == "json":
97
+ __hide_click_output()
94
98
  else:
95
- __patch_click_output()
99
+ if show_tokens or not cloud or ctx.invoked_subcommand == "build":
100
+ __unpatch_click_output()
101
+ else:
102
+ __patch_click_output()
96
103
 
97
104
  if getenv_bool("TB_DISABLE_SSL_CHECKS", False):
98
105
  click.echo(FeedbackManager.warning_disabled_ssl_checks())
@@ -167,6 +174,7 @@ async def cli(
167
174
 
168
175
  ctx.ensure_object(dict)["project"] = project
169
176
  ctx.ensure_object(dict)["env"] = get_target_env(cloud)
177
+ ctx.ensure_object(dict)["output"] = output
170
178
 
171
179
 
172
180
  @cli.command(hidden=True)
@@ -316,6 +324,24 @@ def __unpatch_click_output():
316
324
  click.secho = __old_click_secho
317
325
 
318
326
 
327
+ def __hide_click_output() -> None:
328
+ """
329
+ Modify click.echo and click.secho to only output when explicitly requested.
330
+ Adds a 'force_output' parameter to both functions that defaults to False.
331
+ """
332
+
333
+ def silent_echo(msg: Any, *args: Any, force_output: bool = False, **kwargs: Any) -> None:
334
+ if force_output:
335
+ __old_click_echo(msg, *args, **kwargs)
336
+
337
+ def silent_secho(msg: Any, *args: Any, force_output: bool = False, **kwargs: Any) -> None:
338
+ if force_output:
339
+ __old_click_secho(msg, *args, **kwargs)
340
+
341
+ click.echo = silent_echo # type: ignore
342
+ click.secho = silent_secho # type: ignore
343
+
344
+
319
345
  async def create_ctx_client(ctx: Context, config: Dict[str, Any], cloud: bool, staging: bool):
320
346
  commands_without_ctx_client = [
321
347
  "auth",
@@ -2227,3 +2227,7 @@ def get_error_event(error: str) -> Tuple[str, str]:
2227
2227
  error_event = "error"
2228
2228
  silent_error_msg = "Unknown error"
2229
2229
  return error_event, silent_error_msg
2230
+
2231
+
2232
+ def echo_json(data: Dict[str, Any]) -> None:
2233
+ click.echo(json.dumps(data), force_output=True) # type: ignore
@@ -1,12 +1,12 @@
1
1
  import os
2
- from typing import Any, Dict, Iterable, List, Optional
2
+ from typing import Any, Dict, Iterable, List, Optional, Tuple
3
3
 
4
4
  import click
5
5
 
6
6
  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
- from tinybird.tb.modules.common import coro, format_robust_table
9
+ from tinybird.tb.modules.common import coro, echo_json, format_robust_table
10
10
  from tinybird.tb.modules.feedback_manager import FeedbackManager
11
11
  from tinybird.tb.modules.local_common import TB_LOCAL_ADDRESS, get_tinybird_local_config
12
12
  from tinybird.tb.modules.project import Project
@@ -19,15 +19,29 @@ async def info(ctx: click.Context) -> None:
19
19
  """Get information about the project that is currently being used"""
20
20
  ctx_config = ctx.ensure_object(dict)["config"]
21
21
  project: Project = ctx.ensure_object(dict)["project"]
22
+ is_json = ctx.ensure_object(dict)["output"] == "json"
22
23
  click.echo(FeedbackManager.highlight(message="» Tinybird Cloud:"))
23
- await get_cloud_info(ctx_config)
24
+ cloud_table, cloud_columns = await get_cloud_info(ctx_config)
24
25
  click.echo(FeedbackManager.highlight(message="\n» Tinybird Local:"))
25
- await get_local_info(ctx_config)
26
+ local_table, local_columns = await get_local_info(ctx_config)
26
27
  click.echo(FeedbackManager.highlight(message="\n» Project:"))
27
- await get_project_info(project.folder)
28
+ project_table, project_columns = await get_project_info(project.folder)
29
+ if is_json:
30
+ cloud_data = {}
31
+ if cloud_columns and cloud_table and isinstance(cloud_table, list) and len(cloud_table) > 0:
32
+ cloud_data = {column: cloud_table[0][i] for i, column in enumerate(cloud_columns)}
28
33
 
34
+ local_data = {}
35
+ if local_columns and local_table and isinstance(local_table, list) and len(local_table) > 0:
36
+ local_data = {column: local_table[0][i] for i, column in enumerate(local_columns)}
29
37
 
30
- async def get_cloud_info(ctx_config: Dict[str, Any]) -> None:
38
+ project_data = {}
39
+ if project_columns and project_table and isinstance(project_table, list) and len(project_table) > 0:
40
+ project_data = {column: project_table[0][i] for i, column in enumerate(project_columns)}
41
+ echo_json({"cloud": cloud_data, "local": local_data, "project": project_data})
42
+
43
+
44
+ async def get_cloud_info(ctx_config: Dict[str, Any]) -> Tuple[Iterable[Any], List[str]]:
31
45
  config = CLIConfig.get_project_config()
32
46
 
33
47
  try:
@@ -37,16 +51,17 @@ async def get_cloud_info(ctx_config: Dict[str, Any]) -> None:
37
51
  ui_host = get_display_cloud_host(api_host)
38
52
  user_email = config.get("user_email") or "No user email found"
39
53
  user_token = config.get_user_token() or "No user token found"
40
- await get_env_info(client, ctx_config, user_email, token, user_token, api_host, ui_host)
54
+ return await get_env_info(client, ctx_config, user_email, token, user_token, api_host, ui_host)
41
55
  except Exception:
42
56
  click.echo(
43
57
  FeedbackManager.warning(
44
58
  message="\n⚠ Could not retrieve Tinybird Cloud info. Please run `tb login` first or check that you are located in the correct directory."
45
59
  )
46
60
  )
61
+ return [], []
47
62
 
48
63
 
49
- async def get_local_info(config: Dict[str, Any]) -> None:
64
+ async def get_local_info(config: Dict[str, Any]) -> Tuple[Iterable[Any], List[str]]:
50
65
  try:
51
66
  local_config = await get_tinybird_local_config(config, test=False, silent=False)
52
67
  local_client = local_config.get_client(host=TB_LOCAL_ADDRESS, staging=False)
@@ -55,19 +70,19 @@ async def get_local_info(config: Dict[str, Any]) -> None:
55
70
  user_token = local_config.get_user_token() or "No user token found"
56
71
  api_host = TB_LOCAL_ADDRESS
57
72
  ui_host = get_display_cloud_host(api_host)
58
- await get_env_info(local_client, config, user_email, token, user_token, api_host, ui_host)
73
+ return await get_env_info(local_client, config, user_email, token, user_token, api_host, ui_host)
59
74
  except Exception:
60
75
  click.echo(
61
76
  FeedbackManager.warning(
62
77
  message="\n⚠ Could not retrieve Tinybird Local info. Please run `tb local start` first."
63
78
  )
64
79
  )
65
- return
80
+ return [], []
66
81
 
67
82
 
68
83
  async def get_env_info(
69
84
  client: TinyB, config: Dict[str, Any], user_email: str, token: str, user_token: str, api_host: str, ui_host: str
70
- ) -> None:
85
+ ) -> Tuple[List[Any], List[str]]:
71
86
  user_workspaces = await client.user_workspaces(version="v1")
72
87
  current_workspace = await client.workspace_info(version="v1")
73
88
 
@@ -94,9 +109,10 @@ async def get_env_info(
94
109
  ]
95
110
 
96
111
  click.echo(format_robust_table(table, column_names=columns))
112
+ return table, columns
97
113
 
98
114
 
99
- async def get_project_info(project_path: Optional[str] = None) -> None:
115
+ async def get_project_info(project_path: Optional[str] = None) -> Tuple[Iterable[Any], List[str]]:
100
116
  config = CLIConfig.get_project_config()
101
117
  tinyb_path = config.get_tinyb_file()
102
118
  current_path = os.getcwd()
@@ -110,3 +126,4 @@ async def get_project_info(project_path: Optional[str] = None) -> None:
110
126
  columns = ["current", ".tinyb", "project"]
111
127
  table: Iterable[Any] = [(current_path, tinyb_path, project_path)]
112
128
  click.echo(format_robust_table(table, column_names=columns))
129
+ return table, columns
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 0.0.1.dev170
3
+ Version: 0.0.1.dev171
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird