tinybird 0.0.1.dev248__py3-none-any.whl → 0.0.1.dev249__py3-none-any.whl

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.

@@ -134,8 +134,9 @@ class TableDetails:
134
134
  _version = self.details.get("version", None)
135
135
  return _version
136
136
 
137
- def is_replicated(self):
138
- return "Replicated" in self.details.get("engine", None)
137
+ def is_replicated(self) -> bool:
138
+ engine: Optional[str] = self.details.get("engine", None)
139
+ return engine is not None and "Replicated" in engine
139
140
 
140
141
  def is_mergetree_family(self) -> bool:
141
142
  return self.engine is not None and "mergetree" in self.engine.lower()
tinybird/tb/__cli__.py CHANGED
@@ -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.dev248'
8
- __revision__ = '8eed30e'
7
+ __version__ = '0.0.1.dev249'
8
+ __revision__ = 'ef4e98c'
@@ -1,3 +1,4 @@
1
+ import shlex
1
2
  import subprocess
2
3
  import sys
3
4
  from datetime import datetime
@@ -60,14 +61,23 @@ from tinybird.tb.modules.project import Project
60
61
 
61
62
 
62
63
  class TinybirdAgent:
63
- def __init__(self, token: str, host: str, project: Project, dangerously_skip_permissions: bool):
64
+ def __init__(
65
+ self,
66
+ token: str,
67
+ user_token: str,
68
+ host: str,
69
+ workspace_id: str,
70
+ project: Project,
71
+ dangerously_skip_permissions: bool,
72
+ ):
64
73
  self.token = token
74
+ self.user_token = user_token
65
75
  self.host = host
66
76
  self.dangerously_skip_permissions = dangerously_skip_permissions
67
77
  self.project = project
68
78
  self.messages: list[ModelMessage] = []
69
79
  self.agent = Agent(
70
- model=create_model(token, host),
80
+ model=create_model(user_token, host, workspace_id),
71
81
  deps_type=TinybirdAgentContext,
72
82
  system_prompt=f"""
73
83
  You are a Tinybird Code, an agentic CLI that can help users to work with Tinybird.
@@ -221,9 +231,10 @@ Today is {datetime.now().strftime("%Y-%m-%d")}
221
231
  def run_agent(config: dict[str, Any], project: Project, dangerously_skip_permissions: bool):
222
232
  token = config.get("token", None)
223
233
  host = config.get("host", None)
224
-
234
+ user_token = config.get("user_token", None)
235
+ workspace_id = config.get("id", None)
225
236
  try:
226
- if not token or not host:
237
+ if not token or not host or not workspace_id or not user_token:
227
238
  yes = click.confirm(
228
239
  FeedbackManager.warning(
229
240
  message="Tinybird Code requires authentication. Do you want to authenticate now? [Y/n]"
@@ -238,16 +249,17 @@ def run_agent(config: dict[str, Any], project: Project, dangerously_skip_permiss
238
249
  click.echo()
239
250
  cli_config = CLIConfig.get_project_config()
240
251
  token = cli_config.get_token()
252
+ user_token = cli_config.get_user_token()
241
253
  host = cli_config.get_host()
242
254
 
243
- if not token or not host:
255
+ if not token or not host or not user_token:
244
256
  click.echo(
245
257
  FeedbackManager.error(message="Tinybird Code requires authentication. Run 'tb login' first.")
246
258
  )
247
259
  return
248
260
 
249
261
  display_banner()
250
- agent = TinybirdAgent(token, host, project, dangerously_skip_permissions)
262
+ agent = TinybirdAgent(token, user_token, host, workspace_id, project, dangerously_skip_permissions)
251
263
  click.echo()
252
264
  click.echo(FeedbackManager.info(message="Describe what you want to create and I'll help you build it"))
253
265
  click.echo(FeedbackManager.info(message="Run /help for more commands"))
@@ -273,7 +285,10 @@ def run_agent(config: dict[str, Any], project: Project, dangerously_skip_permiss
273
285
  }
274
286
  ),
275
287
  )
276
-
288
+ if user_input.startswith("tb "):
289
+ cmd_parts = shlex.split(user_input)
290
+ subprocess.run(cmd_parts, check=True)
291
+ continue
277
292
  if user_input.lower() in ["/exit", "/quit"]:
278
293
  click.echo(FeedbackManager.info(message="Goodbye!"))
279
294
  break
@@ -7,11 +7,12 @@ from pydantic_ai.providers.anthropic import AnthropicProvider
7
7
  def create_model(
8
8
  token: str,
9
9
  base_url: str,
10
+ workspace_id: str,
10
11
  model: AnthropicModelName = "claude-4-sonnet-20250514",
11
12
  ):
12
13
  client = AsyncAnthropic(
13
14
  base_url=base_url,
14
- http_client=AsyncClient(params={"token": token}),
15
+ http_client=AsyncClient(params={"token": token, "workspace_id": workspace_id}),
15
16
  auth_token=token,
16
17
  )
17
18
  return AnthropicModel(
@@ -211,6 +211,7 @@ def deployment_ls(ctx: click.Context, include_deleted: bool) -> None:
211
211
  List all the deployments you have in the project.
212
212
  """
213
213
  client = ctx.ensure_object(dict)["client"]
214
+ output = ctx.ensure_object(dict)["output"]
214
215
 
215
216
  TINYBIRD_API_KEY = client.token
216
217
  HEADERS = {"Authorization": f"Bearer {TINYBIRD_API_KEY}"}
@@ -243,7 +244,27 @@ def deployment_ls(ctx: click.Context, include_deleted: bool) -> None:
243
244
  )
244
245
 
245
246
  table.reverse()
246
- echo_safe_humanfriendly_tables_format_smart_table(table, column_names=columns)
247
+
248
+ # Handle different output formats
249
+ if output == "json":
250
+ # Create JSON structure
251
+ deployments_json = []
252
+ for row in table:
253
+ deployments_json.append({"id": row[0], "status": row[1], "created_at": row[2]})
254
+ from tinybird.tb.modules.common import echo_json
255
+
256
+ echo_json({"deployments": deployments_json})
257
+ elif output == "csv":
258
+ # Create CSV output
259
+ csv_output = f"{columns[0]},{columns[1]},{columns[2]}\n"
260
+ for row in table:
261
+ csv_output += f"{row[0]},{row[1]},{row[2]}\n"
262
+ from tinybird.tb.modules.common import force_echo
263
+
264
+ force_echo(csv_output)
265
+ else:
266
+ # Default human-readable output
267
+ echo_safe_humanfriendly_tables_format_smart_table(table, column_names=columns)
247
268
 
248
269
 
249
270
  @deployment_group.command(name="promote")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 0.0.1.dev248
3
+ Version: 0.0.1.dev249
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird
@@ -11,13 +11,13 @@ tinybird/sql_toolset.py,sha256=M2rpLYkgV2W8NnYEYPC1tJdpy4uZHXVF64NBSKLQka4,19549
11
11
  tinybird/syncasync.py,sha256=IPnOx6lMbf9SNddN1eBtssg8vCLHMt76SuZ6YNYm-Yk,27761
12
12
  tinybird/tornado_template.py,sha256=jjNVDMnkYFWXflmT8KU_Ssbo5vR8KQq3EJMk5vYgXRw,41959
13
13
  tinybird/ch_utils/constants.py,sha256=fPgZtwbr1ymxaW7uqVWHKmAbt7uGj3SxCCS3xsEMJqA,4151
14
- tinybird/ch_utils/engine.py,sha256=X4tE9OrfaUy6kO9cqVEzyI9cDcmOF3IAssRRzsTsfEQ,40781
14
+ tinybird/ch_utils/engine.py,sha256=4X1B-iuhdW_mxKnX_m3iCsxgP9RPVgR75g7yH1vsJ6A,40851
15
15
  tinybird/datafile/common.py,sha256=J0Oydru3Nh3oCx66EEEHGxm2-r5_NfxvZxiFhBjgAH0,98428
16
16
  tinybird/datafile/exceptions.py,sha256=8rw2umdZjtby85QbuRKFO5ETz_eRHwUY5l7eHsy1wnI,556
17
17
  tinybird/datafile/parse_connection.py,sha256=tRyn2Rpr1TeWet5BXmMoQgaotbGdYep1qiTak_OqC5E,1825
18
18
  tinybird/datafile/parse_datasource.py,sha256=ssW8QeFSgglVFi3sDZj_HgkJiTJ2069v2JgqnH3CkDE,1825
19
19
  tinybird/datafile/parse_pipe.py,sha256=xf4m0Tw44QWJzHzAm7Z7FwUoUUtr7noMYjU1NiWnX0k,3880
20
- tinybird/tb/__cli__.py,sha256=XU7dQJoJUS04mQcPTcpDweJQbUllPEGhxSfkfVitr2Y,247
20
+ tinybird/tb/__cli__.py,sha256=WAhvVHhg2X2uVpfHu3VLfJ2jxnMmru4kGnAeWrgBzQE,247
21
21
  tinybird/tb/check_pypi.py,sha256=Gp0HkHHDFMSDL6nxKlOY51z7z1Uv-2LRexNTZSHHGmM,552
22
22
  tinybird/tb/cli.py,sha256=FdDFEIayjmsZEVsVSSvRiVYn_FHOVg_zWQzchnzfWho,1008
23
23
  tinybird/tb/client.py,sha256=pJbdkWMXGAqKseNAvdsRRnl_c7I-DCMB0dWCQnG82nU,54146
@@ -32,7 +32,7 @@ tinybird/tb/modules/connection.py,sha256=-MY56NUAai6EMC4-wpi7bT0_nz_SA8QzTmHkV7H
32
32
  tinybird/tb/modules/copy.py,sha256=dPZkcIDvxjJrlQUIvToO0vsEEEs4EYumbNV77-BzNoU,4404
33
33
  tinybird/tb/modules/create.py,sha256=pJxHXG69c9Z_21s-7VuJ3RZOF_nJU51LEwiAkvI3dZY,23251
34
34
  tinybird/tb/modules/datasource.py,sha256=cxq0VVjjidxq-v_JSIIAH7L90XNRctgNKsHRoQ_42OI,41632
35
- tinybird/tb/modules/deployment.py,sha256=Fw9wSNqmLBGCpKwmZsn3KPsy-6kmQzI8YzSdXWoDb6k,12046
35
+ tinybird/tb/modules/deployment.py,sha256=c-iYgq9dgVsa3m3Oqn24CT3A1omw-p4nfVnUiUynatw,12795
36
36
  tinybird/tb/modules/deployment_common.py,sha256=Y0r3g-3d6AcihsVVa0OHer3ow3xHSV1VPskF1eI03KI,17644
37
37
  tinybird/tb/modules/deprecations.py,sha256=rrszC1f_JJeJ8mUxGoCxckQTJFBCR8wREf4XXXN-PRc,4507
38
38
  tinybird/tb/modules/dev_server.py,sha256=57FCKuWpErwYUYgHspYDkLWEm9F4pbvVOtMrFXX1fVU,10129
@@ -68,11 +68,11 @@ tinybird/tb/modules/watch.py,sha256=No0bK1M1_3CYuMaIgylxf7vYFJ72lTJe3brz6xQ-mJo,
68
68
  tinybird/tb/modules/workspace.py,sha256=Q_8HcxMsNg8QG9aBlwcWS2umrDP5IkTIHqqz3sfmGuc,11341
69
69
  tinybird/tb/modules/workspace_members.py,sha256=5JdkJgfuEwbq-t6vxkBhYwgsiTDxF790wsa6Xfif9nk,8608
70
70
  tinybird/tb/modules/agent/__init__.py,sha256=i3oe3vDIWWPaicdCM0zs7D7BJ1W0k7th93ooskHAV00,54
71
- tinybird/tb/modules/agent/agent.py,sha256=8NBSwQuu3AagieLfbNOXSWeud3WGyThBuyPuzZTtxJQ,17932
71
+ tinybird/tb/modules/agent/agent.py,sha256=dch7zQzdw_8KvORGDj73dGfiz03bGEISkdGYN_r9QQg,18519
72
72
  tinybird/tb/modules/agent/animations.py,sha256=z0MNLf8TnUO8qAjgYvth_wc9a9283pNVz1Z4jl15Ggs,2558
73
73
  tinybird/tb/modules/agent/banner.py,sha256=KX_e467uiy1gWOZ4ofTZt0GCFGQqHQ_8Ob27XLQqda0,3053
74
74
  tinybird/tb/modules/agent/memory.py,sha256=H6SJK--2L5C87B7AJd_jMqsq3sCvFvZwZXmajuT0GBE,1171
75
- tinybird/tb/modules/agent/models.py,sha256=Of74wcU8oX05ricTqmhMHVHfeYo_pQbnbCI_q3mlx5E,682
75
+ tinybird/tb/modules/agent/models.py,sha256=LW1D27gjcd_jwFmghEzteCgToDfodX2B6B5S8BYbysw,735
76
76
  tinybird/tb/modules/agent/prompts.py,sha256=fZMTbTbq8SHWob8-wA5fQFnZ9lJa7Y_66_9JvJT3xuc,6818
77
77
  tinybird/tb/modules/agent/utils.py,sha256=7Y8bq_rZlqre8_OvLVjIvE8ZLOBpuKmXamyaNs02zzc,25231
78
78
  tinybird/tb/modules/agent/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -106,8 +106,8 @@ tinybird/tb_cli_modules/config.py,sha256=IsgdtFRnUrkY8-Zo32lmk6O7u3bHie1QCxLwgp4
106
106
  tinybird/tb_cli_modules/exceptions.py,sha256=pmucP4kTF4irIt7dXiG-FcnI-o3mvDusPmch1L8RCWk,3367
107
107
  tinybird/tb_cli_modules/regions.py,sha256=QjsL5H6Kg-qr0aYVLrvb1STeJ5Sx_sjvbOYO0LrEGMk,166
108
108
  tinybird/tb_cli_modules/telemetry.py,sha256=Hh2Io8ZPROSunbOLuMvuIFU4TqwWPmQTqal4WS09K1A,10449
109
- tinybird-0.0.1.dev248.dist-info/METADATA,sha256=Q2bYzjGQkmxcw_IutVCHU3qK6Au414Yse04ys2JugeA,1733
110
- tinybird-0.0.1.dev248.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
111
- tinybird-0.0.1.dev248.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
112
- tinybird-0.0.1.dev248.dist-info/top_level.txt,sha256=VqqqEmkAy7UNaD8-V51FCoMMWXjLUlR0IstvK7tJYVY,54
113
- tinybird-0.0.1.dev248.dist-info/RECORD,,
109
+ tinybird-0.0.1.dev249.dist-info/METADATA,sha256=Mp5zwKJya4hnqnJMIPbvKeUKcal8q0tvZUcmCXD-Nsk,1733
110
+ tinybird-0.0.1.dev249.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
111
+ tinybird-0.0.1.dev249.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
112
+ tinybird-0.0.1.dev249.dist-info/top_level.txt,sha256=VqqqEmkAy7UNaD8-V51FCoMMWXjLUlR0IstvK7tJYVY,54
113
+ tinybird-0.0.1.dev249.dist-info/RECORD,,