tinybird 4.6.7.dev0__tar.gz → 4.6.8__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.
Files changed (127) hide show
  1. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/PKG-INFO +11 -1
  2. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/sql_template.py +9 -12
  3. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/__cli__.py +2 -2
  4. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/cli.py +4 -2
  5. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/local.py +25 -12
  6. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/local_common.py +6 -1
  7. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/login_common.py +12 -3
  8. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird.egg-info/PKG-INFO +11 -1
  9. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/setup.cfg +0 -0
  10. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/__cli__.py +0 -0
  11. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/ch_utils/constants.py +0 -0
  12. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/ch_utils/engine.py +0 -0
  13. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/check_pypi.py +0 -0
  14. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/client.py +0 -0
  15. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/config.py +0 -0
  16. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/context.py +0 -0
  17. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/datafile/common.py +0 -0
  18. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/datafile/exceptions.py +0 -0
  19. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/datafile/parse_connection.py +0 -0
  20. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/datafile/parse_datasource.py +0 -0
  21. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/datafile/parse_pipe.py +0 -0
  22. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/datatypes.py +0 -0
  23. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/feedback_manager.py +0 -0
  24. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/git_settings.py +0 -0
  25. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/iterating/__init__.py +0 -0
  26. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/iterating/data_branch_modes.py +0 -0
  27. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/prompts.py +0 -0
  28. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/service_datasources.py +0 -0
  29. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/sql.py +0 -0
  30. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/sql_template_fmt.py +0 -0
  31. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/sql_toolset.py +0 -0
  32. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/syncasync.py +0 -0
  33. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/check_pypi.py +0 -0
  34. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/cli.py +0 -0
  35. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/client.py +0 -0
  36. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/config.py +0 -0
  37. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/branch.py +0 -0
  38. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/build.py +0 -0
  39. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/build_common.py +0 -0
  40. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/cicd.py +0 -0
  41. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/common.py +0 -0
  42. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/config.py +0 -0
  43. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/connection.py +0 -0
  44. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/connection_dynamodb.py +0 -0
  45. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/connection_kafka.py +0 -0
  46. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/connection_s3.py +0 -0
  47. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/copy.py +0 -0
  48. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/create.py +0 -0
  49. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/build.py +0 -0
  50. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/build_common.py +0 -0
  51. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/build_datasource.py +0 -0
  52. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/build_pipe.py +0 -0
  53. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/diff.py +0 -0
  54. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/fixture.py +0 -0
  55. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/format_common.py +0 -0
  56. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/format_connection.py +0 -0
  57. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/format_datasource.py +0 -0
  58. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/format_pipe.py +0 -0
  59. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/pipe_checker.py +0 -0
  60. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/playground.py +0 -0
  61. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datafile/pull.py +0 -0
  62. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/datasource.py +0 -0
  63. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/deployment.py +0 -0
  64. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/deployment_common.py +0 -0
  65. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/deprecations.py +0 -0
  66. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/endpoint.py +0 -0
  67. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/exceptions.py +0 -0
  68. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/feedback_manager.py +0 -0
  69. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/fmt.py +0 -0
  70. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/info.py +0 -0
  71. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/infra.py +0 -0
  72. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/job.py +0 -0
  73. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/job_common.py +0 -0
  74. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/llm.py +0 -0
  75. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/llm_utils.py +0 -0
  76. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/local_logs.py +0 -0
  77. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/login.py +0 -0
  78. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/logout.py +0 -0
  79. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/logs.py +0 -0
  80. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/materialization.py +0 -0
  81. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/open.py +0 -0
  82. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/pipe.py +0 -0
  83. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/preview.py +0 -0
  84. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/project.py +0 -0
  85. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/project_commands.py +0 -0
  86. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/py_project.py +0 -0
  87. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/query_output.py +0 -0
  88. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/regions.py +0 -0
  89. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/secret.py +0 -0
  90. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/secret_common.py +0 -0
  91. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/sink.py +0 -0
  92. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/table.py +0 -0
  93. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/telemetry.py +0 -0
  94. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/test.py +0 -0
  95. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/test_common.py +0 -0
  96. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/tinyunit/tinyunit.py +0 -0
  97. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/token.py +0 -0
  98. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/ts_project.py +0 -0
  99. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/watch.py +0 -0
  100. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/workspace.py +0 -0
  101. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb/modules/workspace_members.py +0 -0
  102. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli.py +0 -0
  103. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/auth.py +0 -0
  104. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/branch.py +0 -0
  105. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/cicd.py +0 -0
  106. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/cli.py +0 -0
  107. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/common.py +0 -0
  108. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/config.py +0 -0
  109. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/connection.py +0 -0
  110. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/datasource.py +0 -0
  111. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/exceptions.py +0 -0
  112. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/fmt.py +0 -0
  113. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/job.py +0 -0
  114. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/pipe.py +0 -0
  115. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/regions.py +0 -0
  116. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/tag.py +0 -0
  117. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/telemetry.py +0 -0
  118. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/test.py +0 -0
  119. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
  120. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/workspace.py +0 -0
  121. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tb_cli_modules/workspace_members.py +0 -0
  122. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird/tornado_template.py +0 -0
  123. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird.egg-info/SOURCES.txt +0 -0
  124. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird.egg-info/dependency_links.txt +0 -0
  125. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird.egg-info/entry_points.txt +0 -0
  126. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird.egg-info/requires.txt +0 -0
  127. {tinybird-4.6.7.dev0 → tinybird-4.6.8}/tinybird.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 4.6.7.dev0
3
+ Version: 4.6.8
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird
@@ -52,6 +52,16 @@ The Tinybird command-line tool allows you to use all the Tinybird functionality
52
52
  Changelog
53
53
  ----------
54
54
 
55
+ 4.6.8
56
+ *******
57
+
58
+ - `Fixed` Tinybird Local CLI commands to respect Git branch local workspaces correctly.
59
+
60
+ 4.6.7
61
+ *******
62
+
63
+ - `Fixed` `tb login` now raises an actionable error when the CLI cannot complete the authentication.
64
+
55
65
  4.6.6
56
66
  *******
57
67
 
@@ -1953,11 +1953,12 @@ def get_var_data(content, node_id=None):
1953
1953
  """
1954
1954
 
1955
1955
  def node_to_value(x):
1956
- if type(x) in (ast.Bytes, ast.Str):
1957
- return x.s
1958
- elif type(x) == ast.Num: # noqa: E721
1959
- return x.n
1960
- elif type(x) == ast.NameConstant: # noqa: E721
1956
+ # ast.Constant supersedes the deprecated ast.Bytes/ast.Str/ast.Num/
1957
+ # ast.NameConstant node classes. Those were aliases of ast.Constant
1958
+ # since Python 3.8 (emitting DeprecationWarning on access in 3.12) and
1959
+ # were removed in Python 3.14. The parser only ever produces
1960
+ # ast.Constant nodes, so .value holds str/bytes/int/float/bool/None.
1961
+ if type(x) == ast.Constant: # noqa: E721
1961
1962
  return x.value
1962
1963
  elif type(x) == ast.Name: # noqa: E721
1963
1964
  return x.id
@@ -1971,8 +1972,6 @@ def get_var_data(content, node_id=None):
1971
1972
  if not r:
1972
1973
  r = node_to_value(x.right)
1973
1974
  return r
1974
- elif type(x) == ast.Constant: # noqa: E721
1975
- return x.value
1976
1975
  elif type(x) == ast.UnaryOp and type(x.operand) == ast.Constant: # noqa: E721
1977
1976
  if type(x.op) == ast.USub: # noqa: E721
1978
1977
  return x.operand.value * -1
@@ -1991,11 +1990,9 @@ def get_var_data(content, node_id=None):
1991
1990
  return []
1992
1991
 
1993
1992
  first_elem = x.elts[0]
1994
- if type(first_elem) in (ast.Bytes, ast.Str):
1995
- return [elem.s for elem in x.elts]
1996
- elif type(first_elem) == ast.Num: # noqa: E721
1997
- return [elem.n for elem in x.elts]
1998
- elif type(first_elem) == ast.NameConstant or type(first_elem) == ast.Constant: # noqa: E721
1993
+ # See node_to_value: ast.Constant supersedes the deprecated
1994
+ # ast.Bytes/ast.Str/ast.Num/ast.NameConstant (removed in 3.14).
1995
+ if type(first_elem) == ast.Constant: # noqa: E721
1999
1996
  return [elem.value for elem in x.elts]
2000
1997
  elif type(first_elem) == ast.Name: # noqa: E721
2001
1998
  return [elem.id for elem in x.elts]
@@ -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__ = '4.6.7.dev0'
8
- __revision__ = 'd3cbd87'
7
+ __version__ = '4.6.8'
8
+ __revision__ = '13f02ee'
@@ -1153,15 +1153,17 @@ def create_ctx_client(
1153
1153
  if show_warnings and command:
1154
1154
  click.echo(FeedbackManager.gray(message="Running against Tinybird Local"))
1155
1155
  local_branch = None
1156
- if command in ("build", "dev") and not test:
1156
+ if not test:
1157
1157
  git_branch = get_current_git_branch()
1158
1158
  if git_branch and not is_main_git_branch(git_branch):
1159
1159
  local_branch = get_tinybird_branch_name_from_git_branch(git_branch)
1160
1160
  ctx.ensure_object(dict)["git_branch"] = git_branch
1161
1161
  client, workspace_created = get_tinybird_local_client(config, test=test, staging=staging, branch=local_branch)
1162
- if local_branch:
1162
+ if local_branch and config.get("local_workspace_name") == local_branch:
1163
1163
  ctx.ensure_object(dict)["local_branch"] = local_branch
1164
1164
  ctx.ensure_object(dict)["branch_created"] = workspace_created
1165
+ if show_warnings and command not in ("build", "dev"):
1166
+ click.echo(FeedbackManager.gray(message=f"Using Tinybird Local branch '{local_branch}'"))
1165
1167
  return client
1166
1168
 
1167
1169
 
@@ -9,7 +9,12 @@ import requests
9
9
  from docker.client import DockerClient
10
10
 
11
11
  from tinybird.tb.client import AuthNoTokenException
12
- from tinybird.tb.modules.cli import cli
12
+ from tinybird.tb.modules.cli import (
13
+ cli,
14
+ get_current_git_branch,
15
+ get_tinybird_branch_name_from_git_branch,
16
+ is_main_git_branch,
17
+ )
13
18
  from tinybird.tb.modules.common import (
14
19
  _get_workspace_plan_name,
15
20
  echo_json,
@@ -80,9 +85,6 @@ def clear_local_workspace() -> None:
80
85
  user_token = tokens["user_token"]
81
86
  admin_token = tokens["admin_token"]
82
87
  user_client = config.get_client(host=TB_LOCAL_ADDRESS, token=user_token)
83
- ws_name = config.get("name")
84
- if not ws_name:
85
- raise AuthNoTokenException()
86
88
 
87
89
  user_workspaces = requests.get(
88
90
  f"{TB_LOCAL_ADDRESS}/v1/user/workspaces?with_organization=true&token={admin_token}"
@@ -90,19 +92,30 @@ def clear_local_workspace() -> None:
90
92
  user_org_id = user_workspaces.get("organization_id", {})
91
93
  local_workspaces = user_workspaces.get("workspaces", [])
92
94
 
95
+ branch_ws_name = None
96
+ ws_name = config.get("name")
97
+ git_branch = get_current_git_branch()
98
+ if git_branch and not is_main_git_branch(git_branch):
99
+ branch_ws_name = get_tinybird_branch_name_from_git_branch(git_branch)
100
+ if branch_ws_name:
101
+ ws_name = branch_ws_name
102
+ if not ws_name:
103
+ raise AuthNoTokenException()
104
+
93
105
  ws = next((ws for ws in local_workspaces if ws["name"] == ws_name), None)
94
106
 
95
- if not ws:
107
+ if not ws and ws_name != branch_ws_name:
96
108
  raise CLILocalException(FeedbackManager.error(message=f"Workspace '{ws_name}' not found."))
97
109
 
98
- requests.delete(f"{TB_LOCAL_ADDRESS}/v1/workspaces/{ws['id']}?token={user_token}&hard_delete_confirmation=yes")
99
- user_workspaces = user_client.user_workspaces(version="v1")
100
- ws = next((ws for ws in user_workspaces["workspaces"] if ws["name"] == ws_name), None)
101
-
102
110
  if ws:
103
- raise CLILocalException(
104
- FeedbackManager.error(message=f"Workspace '{ws_name}' was not cleared properly. Please try again.")
105
- )
111
+ requests.delete(f"{TB_LOCAL_ADDRESS}/v1/workspaces/{ws['id']}?token={user_token}&hard_delete_confirmation=yes")
112
+ user_workspaces = user_client.user_workspaces(version="v1")
113
+ ws = next((ws for ws in user_workspaces["workspaces"] if ws["name"] == ws_name), None)
114
+
115
+ if ws:
116
+ raise CLILocalException(
117
+ FeedbackManager.error(message=f"Workspace '{ws_name}' was not cleared properly. Please try again.")
118
+ )
106
119
 
107
120
  user_client.create_workspace(ws_name, assign_to_organization_id=user_org_id, version="v1")
108
121
  user_workspaces = requests.get(f"{TB_LOCAL_ADDRESS}/v1/user/workspaces?token={admin_token}").json()
@@ -79,7 +79,10 @@ def get_tinybird_local_client(
79
79
 
80
80
 
81
81
  def get_tinybird_local_config(
82
- config_obj: Dict[str, Any], test: bool = False, silent: bool = False, branch: Optional[str] = None
82
+ config_obj: Dict[str, Any],
83
+ test: bool = False,
84
+ silent: bool = False,
85
+ branch: Optional[str] = None,
83
86
  ) -> tuple[CLIConfig, bool]:
84
87
  """Craft a client config with a workspace name based on the path of the project files.
85
88
 
@@ -143,6 +146,8 @@ def get_tinybird_local_config(
143
146
  raise AuthNoTokenException()
144
147
  workspace_created = True
145
148
 
149
+ config_obj["local_workspace_name"] = ws_name
150
+
146
151
  ws_token = ws["token"]
147
152
  config.set_token(ws_token)
148
153
  config.set_token_for_host(TB_LOCAL_ADDRESS, ws_token)
@@ -213,13 +213,22 @@ def login(
213
213
 
214
214
  # Wait for the authentication to complete or timeout
215
215
  if auth_event.wait(timeout=SERVER_MAX_WAIT_TIME): # Wait for up to 180 seconds
216
- params = {}
217
- params["code"] = auth_code[0]
216
+ params = {"code": auth_code[0]}
218
217
  response = requests.get(
219
218
  f"{auth_host}/api/cli-login?{urlencode(params)}",
219
+ allow_redirects=False,
220
220
  )
221
221
 
222
- data = response.json()
222
+ if response.status_code != 200:
223
+ raise Exception("Could not complete the authentication. Please try running the login command again.")
224
+
225
+ try:
226
+ data = response.json()
227
+ except ValueError:
228
+ raise Exception(
229
+ "Received an unexpected response while completing the authentication. "
230
+ "Please try running the login command again."
231
+ )
223
232
  authenticate_with_tokens(data, cli_config)
224
233
  else:
225
234
  raise Exception("Authentication failed or timed out.")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 4.6.7.dev0
3
+ Version: 4.6.8
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird
@@ -52,6 +52,16 @@ The Tinybird command-line tool allows you to use all the Tinybird functionality
52
52
  Changelog
53
53
  ----------
54
54
 
55
+ 4.6.8
56
+ *******
57
+
58
+ - `Fixed` Tinybird Local CLI commands to respect Git branch local workspaces correctly.
59
+
60
+ 4.6.7
61
+ *******
62
+
63
+ - `Fixed` `tb login` now raises an actionable error when the CLI cannot complete the authentication.
64
+
55
65
  4.6.6
56
66
  *******
57
67
 
File without changes
File without changes