tinybird 0.0.1.dev169__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.dev169 → tinybird-0.0.1.dev171}/PKG-INFO +1 -1
  2. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/__cli__.py +2 -2
  3. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/cli.py +29 -3
  4. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/common.py +4 -0
  5. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/create.py +2 -7
  6. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/info.py +29 -12
  7. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/project.py +6 -12
  8. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird.egg-info/PKG-INFO +1 -1
  9. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/setup.cfg +0 -0
  10. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/__cli__.py +0 -0
  11. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/ch_utils/constants.py +0 -0
  12. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/ch_utils/engine.py +0 -0
  13. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/check_pypi.py +0 -0
  14. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/client.py +0 -0
  15. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/config.py +0 -0
  16. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/connectors.py +0 -0
  17. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/context.py +0 -0
  18. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/datafile.py +0 -0
  19. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/datatypes.py +0 -0
  20. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/feedback_manager.py +0 -0
  21. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/git_settings.py +0 -0
  22. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/prompts.py +0 -0
  23. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/sql.py +0 -0
  24. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/sql_template.py +0 -0
  25. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/sql_template_fmt.py +0 -0
  26. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/sql_toolset.py +0 -0
  27. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/syncasync.py +0 -0
  28. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/check_pypi.py +0 -0
  29. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/cli.py +0 -0
  30. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/client.py +0 -0
  31. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/config.py +0 -0
  32. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/build.py +0 -0
  33. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/cicd.py +0 -0
  34. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/config.py +0 -0
  35. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/connection.py +0 -0
  36. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/copy.py +0 -0
  37. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/build.py +0 -0
  38. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/build_common.py +0 -0
  39. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/build_datasource.py +0 -0
  40. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/build_pipe.py +0 -0
  41. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/common.py +0 -0
  42. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/diff.py +0 -0
  43. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/exceptions.py +0 -0
  44. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/fixture.py +0 -0
  45. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/format_common.py +0 -0
  46. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/format_datasource.py +0 -0
  47. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/format_pipe.py +0 -0
  48. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/parse_datasource.py +0 -0
  49. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/parse_pipe.py +0 -0
  50. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/pipe_checker.py +0 -0
  51. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/playground.py +0 -0
  52. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datafile/pull.py +0 -0
  53. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/datasource.py +0 -0
  54. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/deployment.py +0 -0
  55. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/deprecations.py +0 -0
  56. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/dev_server.py +0 -0
  57. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/endpoint.py +0 -0
  58. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/exceptions.py +0 -0
  59. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/feedback_manager.py +0 -0
  60. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/infra.py +0 -0
  61. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/job.py +0 -0
  62. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/llm.py +0 -0
  63. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/llm_utils.py +0 -0
  64. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/local.py +0 -0
  65. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/local_common.py +0 -0
  66. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/login.py +0 -0
  67. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/logout.py +0 -0
  68. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/materialization.py +0 -0
  69. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/mock.py +0 -0
  70. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/open.py +0 -0
  71. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/pipe.py +0 -0
  72. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/regions.py +0 -0
  73. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/secret.py +0 -0
  74. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/shell.py +0 -0
  75. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/table.py +0 -0
  76. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/telemetry.py +0 -0
  77. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/test.py +0 -0
  78. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/tinyunit/tinyunit.py +0 -0
  79. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/tinyunit/tinyunit_lib.py +0 -0
  80. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/token.py +0 -0
  81. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/watch.py +0 -0
  82. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/workspace.py +0 -0
  83. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb/modules/workspace_members.py +0 -0
  84. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli.py +0 -0
  85. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/auth.py +0 -0
  86. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/branch.py +0 -0
  87. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/cicd.py +0 -0
  88. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/cli.py +0 -0
  89. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/common.py +0 -0
  90. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/config.py +0 -0
  91. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/connection.py +0 -0
  92. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/datasource.py +0 -0
  93. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/exceptions.py +0 -0
  94. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/fmt.py +0 -0
  95. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/job.py +0 -0
  96. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/pipe.py +0 -0
  97. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/regions.py +0 -0
  98. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/tag.py +0 -0
  99. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/telemetry.py +0 -0
  100. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/test.py +0 -0
  101. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
  102. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py +0 -0
  103. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/workspace.py +0 -0
  104. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tb_cli_modules/workspace_members.py +0 -0
  105. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird/tornado_template.py +0 -0
  106. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird.egg-info/SOURCES.txt +0 -0
  107. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird.egg-info/dependency_links.txt +0 -0
  108. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird.egg-info/entry_points.txt +0 -0
  109. {tinybird-0.0.1.dev169 → tinybird-0.0.1.dev171}/tinybird.egg-info/requires.txt +0 -0
  110. {tinybird-0.0.1.dev169 → 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.dev169
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.dev169'
8
- __revision__ = '0e591e6'
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
@@ -435,13 +435,8 @@ def save_context(prompt: str, feedback: str):
435
435
 
436
436
 
437
437
  def get_resources_xml(project: Project) -> str:
438
- folder = project.folder
439
- datasource_paths = [
440
- Path(folder) / "datasources" / f for f in os.listdir(Path(folder) / "datasources") if f.endswith(".datasource")
441
- ]
442
- pipes_paths = [
443
- Path(folder) / "endpoints" / f for f in os.listdir(Path(folder) / "endpoints") if f.endswith(".pipe")
444
- ]
438
+ datasource_paths = [Path(f) for f in project.get_datasource_files()]
439
+ pipes_paths = [Path(f) for f in project.get_pipe_files()]
445
440
  resources_xml = "\n".join(
446
441
  [
447
442
  f"<resource><type>{resource_type}</type><name>{resource_name}</name><content>{resource_content}</content></resource>"
@@ -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
@@ -38,32 +38,26 @@ class Project:
38
38
  return None
39
39
  return Path(full_path).relative_to(self.path).as_posix()
40
40
 
41
- def get_vendor_files(self) -> List[str]:
42
- vendor_files: List[str] = []
43
- for project_file in glob.glob(f"{self.vendor_path}/**/*.datasource", recursive=False):
44
- vendor_files.append(project_file)
45
- return vendor_files
46
-
47
41
  @property
48
42
  def datasources(self) -> List[str]:
49
- return sorted([Path(f).stem for f in glob.glob(f"{self.path}/**/*.datasource", recursive=False)])
43
+ return sorted([Path(f).stem for f in self.get_datasource_files()])
50
44
 
51
45
  @property
52
46
  def pipes(self) -> List[str]:
53
- return sorted([Path(f).stem for f in glob.glob(f"{self.path}/**/*.pipe", recursive=False)])
47
+ return sorted([Path(f).stem for f in self.get_pipe_files()])
54
48
 
55
49
  @property
56
50
  def connections(self) -> List[str]:
57
- return sorted([Path(f).stem for f in glob.glob(f"{self.path}/**/*.connection", recursive=False)])
51
+ return sorted([Path(f).stem for f in self.get_connection_files()])
58
52
 
59
53
  def get_datasource_files(self) -> List[str]:
60
- return glob.glob(f"{self.path}/**/*.datasource", recursive=False)
54
+ return glob.glob(f"{self.path}/**/*.datasource", recursive=True)
61
55
 
62
56
  def get_pipe_files(self) -> List[str]:
63
- return glob.glob(f"{self.path}/**/*.pipe", recursive=False)
57
+ return glob.glob(f"{self.path}/**/*.pipe", recursive=True)
64
58
 
65
59
  def get_connection_files(self) -> List[str]:
66
- return glob.glob(f"{self.path}/**/*.connection", recursive=False)
60
+ return glob.glob(f"{self.path}/**/*.connection", recursive=True)
67
61
 
68
62
  def get_pipe_datafile(self, filename: str) -> Optional[Datafile]:
69
63
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 0.0.1.dev169
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