tinybird 4.5.9.dev0__tar.gz → 4.5.10__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 (126) hide show
  1. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/PKG-INFO +11 -1
  2. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/client.py +43 -7
  3. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/service_datasources.py +2 -0
  4. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/__cli__.py +2 -2
  5. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/create.py +6 -7
  6. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datasource.py +16 -13
  7. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird.egg-info/PKG-INFO +11 -1
  8. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/setup.cfg +0 -0
  9. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/__cli__.py +0 -0
  10. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/ch_utils/constants.py +0 -0
  11. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/ch_utils/engine.py +0 -0
  12. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/check_pypi.py +0 -0
  13. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/config.py +0 -0
  14. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/context.py +0 -0
  15. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/datafile/common.py +0 -0
  16. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/datafile/exceptions.py +0 -0
  17. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/datafile/parse_connection.py +0 -0
  18. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/datafile/parse_datasource.py +0 -0
  19. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/datafile/parse_pipe.py +0 -0
  20. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/datatypes.py +0 -0
  21. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/feedback_manager.py +0 -0
  22. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/git_settings.py +0 -0
  23. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/prompts.py +0 -0
  24. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/sql.py +0 -0
  25. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/sql_template.py +0 -0
  26. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/sql_template_fmt.py +0 -0
  27. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/sql_toolset.py +0 -0
  28. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/syncasync.py +0 -0
  29. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/check_pypi.py +0 -0
  30. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/cli.py +0 -0
  31. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/client.py +0 -0
  32. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/config.py +0 -0
  33. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/branch.py +0 -0
  34. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/build.py +0 -0
  35. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/build_common.py +0 -0
  36. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/cicd.py +0 -0
  37. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/cli.py +0 -0
  38. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/common.py +0 -0
  39. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/config.py +0 -0
  40. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/connection.py +0 -0
  41. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/connection_kafka.py +0 -0
  42. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/connection_s3.py +0 -0
  43. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/copy.py +0 -0
  44. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/build.py +0 -0
  45. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/build_common.py +0 -0
  46. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/build_datasource.py +0 -0
  47. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/build_pipe.py +0 -0
  48. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/diff.py +0 -0
  49. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/fixture.py +0 -0
  50. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/format_common.py +0 -0
  51. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/format_connection.py +0 -0
  52. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/format_datasource.py +0 -0
  53. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/format_pipe.py +0 -0
  54. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/pipe_checker.py +0 -0
  55. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/playground.py +0 -0
  56. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/datafile/pull.py +0 -0
  57. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/deployment.py +0 -0
  58. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/deployment_common.py +0 -0
  59. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/deprecations.py +0 -0
  60. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/endpoint.py +0 -0
  61. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/exceptions.py +0 -0
  62. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/feedback_manager.py +0 -0
  63. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/fmt.py +0 -0
  64. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/info.py +0 -0
  65. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/infra.py +0 -0
  66. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/job.py +0 -0
  67. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/job_common.py +0 -0
  68. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/llm.py +0 -0
  69. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/llm_utils.py +0 -0
  70. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/local.py +0 -0
  71. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/local_common.py +0 -0
  72. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/local_logs.py +0 -0
  73. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/login.py +0 -0
  74. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/login_common.py +0 -0
  75. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/logout.py +0 -0
  76. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/logs.py +0 -0
  77. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/materialization.py +0 -0
  78. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/open.py +0 -0
  79. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/pipe.py +0 -0
  80. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/preview.py +0 -0
  81. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/project.py +0 -0
  82. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/project_commands.py +0 -0
  83. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/py_project.py +0 -0
  84. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/query_output.py +0 -0
  85. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/regions.py +0 -0
  86. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/secret.py +0 -0
  87. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/secret_common.py +0 -0
  88. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/sink.py +0 -0
  89. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/table.py +0 -0
  90. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/telemetry.py +0 -0
  91. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/test.py +0 -0
  92. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/test_common.py +0 -0
  93. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/tinyunit/tinyunit.py +0 -0
  94. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/tinyunit/tinyunit_lib.py +0 -0
  95. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/token.py +0 -0
  96. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/ts_project.py +0 -0
  97. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/watch.py +0 -0
  98. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/workspace.py +0 -0
  99. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb/modules/workspace_members.py +0 -0
  100. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli.py +0 -0
  101. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/auth.py +0 -0
  102. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/branch.py +0 -0
  103. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/cicd.py +0 -0
  104. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/cli.py +0 -0
  105. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/common.py +0 -0
  106. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/config.py +0 -0
  107. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/connection.py +0 -0
  108. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/datasource.py +0 -0
  109. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/exceptions.py +0 -0
  110. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/fmt.py +0 -0
  111. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/job.py +0 -0
  112. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/pipe.py +0 -0
  113. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/regions.py +0 -0
  114. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/tag.py +0 -0
  115. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/telemetry.py +0 -0
  116. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/test.py +0 -0
  117. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
  118. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py +0 -0
  119. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/workspace.py +0 -0
  120. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tb_cli_modules/workspace_members.py +0 -0
  121. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird/tornado_template.py +0 -0
  122. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird.egg-info/SOURCES.txt +0 -0
  123. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird.egg-info/dependency_links.txt +0 -0
  124. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird.egg-info/entry_points.txt +0 -0
  125. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/tinybird.egg-info/requires.txt +0 -0
  126. {tinybird-4.5.9.dev0 → tinybird-4.5.10}/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.5.9.dev0
3
+ Version: 4.5.10
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.5.10
56
+ *******
57
+
58
+ - `Fixed` `tb init` now persists `folder` in `tinybird.config.json`, so subsequent resource creation targets the configured project folder instead of the repository root.
59
+
60
+ 4.5.9
61
+ *******
62
+
63
+ - `Fixed` Manage correctly LLM errors when analyzing quarantine errors.
64
+
55
65
  4.5.8
56
66
  *******
57
67
 
@@ -340,10 +340,14 @@ class TinyB:
340
340
  for c in connectors
341
341
  ]
342
342
 
343
- async def get_datasource(self, ds_name: str, used_by: bool = False) -> Dict[str, Any]:
343
+ async def get_datasource(
344
+ self, ds_name: str, used_by: bool = False, include_workspace_names: bool = False
345
+ ) -> Dict[str, Any]:
344
346
  params = {
345
347
  "attrs": "used_by" if used_by else "",
346
348
  }
349
+ if include_workspace_names:
350
+ params["include_workspace_names"] = "true"
347
351
  return await self._req(f"/v0/datasources/{ds_name}?{urlencode(params)}")
348
352
 
349
353
  async def alter_datasource(
@@ -489,12 +493,32 @@ class TinyB:
489
493
 
490
494
  return await self._req(f"/v0/dependencies?{urlencode(params)}", timeout=60)
491
495
 
492
- async def datasource_share(self, datasource_id: str, current_workspace_id: str, destination_workspace_id: str):
493
- params = {"origin_workspace_id": current_workspace_id, "destination_workspace_id": destination_workspace_id}
496
+ async def datasource_share(
497
+ self,
498
+ datasource_id: str,
499
+ current_workspace_id: str,
500
+ destination_workspace_id: Optional[str] = None,
501
+ destination_workspace_name: Optional[str] = None,
502
+ ) -> Dict[str, Any]:
503
+ params = {"origin_workspace_id": current_workspace_id}
504
+ if destination_workspace_id:
505
+ params["destination_workspace_id"] = destination_workspace_id
506
+ if destination_workspace_name:
507
+ params["destination_workspace_name"] = destination_workspace_name
494
508
  return await self._req(f"/v0/datasources/{datasource_id}/share", method="POST", data=params)
495
509
 
496
- async def datasource_unshare(self, datasource_id: str, current_workspace_id: str, destination_workspace_id: str):
497
- params = {"origin_workspace_id": current_workspace_id, "destination_workspace_id": destination_workspace_id}
510
+ async def datasource_unshare(
511
+ self,
512
+ datasource_id: str,
513
+ current_workspace_id: str,
514
+ destination_workspace_id: Optional[str] = None,
515
+ destination_workspace_name: Optional[str] = None,
516
+ ) -> Dict[str, Any]:
517
+ params = {"origin_workspace_id": current_workspace_id}
518
+ if destination_workspace_id:
519
+ params["destination_workspace_id"] = destination_workspace_id
520
+ if destination_workspace_name:
521
+ params["destination_workspace_name"] = destination_workspace_name
498
522
  return await self._req(f"/v0/datasources/{datasource_id}/share", method="DELETE", data=params)
499
523
 
500
524
  async def datasource_sync(self, datasource_id: str):
@@ -972,16 +996,28 @@ class TinyB:
972
996
  kafka_sasl_mechanism="PLAIN",
973
997
  kafka_security_protocol="SASL_SSL",
974
998
  kafka_ssl_ca_pem=None,
999
+ kafka_sasl_oauthbearer_method=None,
1000
+ kafka_sasl_oauthbearer_aws_region=None,
1001
+ kafka_sasl_oauthbearer_aws_role_arn=None,
1002
+ kafka_sasl_oauthbearer_aws_external_id=None,
975
1003
  ):
1004
+ is_oauthbearer = kafka_sasl_mechanism == "OAUTHBEARER"
976
1005
  params = {
977
1006
  "service": "kafka",
978
1007
  "kafka_security_protocol": kafka_security_protocol,
979
1008
  "kafka_sasl_mechanism": kafka_sasl_mechanism,
980
1009
  "kafka_bootstrap_servers": kafka_bootstrap_servers,
981
- "kafka_sasl_plain_username": kafka_key,
982
- "kafka_sasl_plain_password": kafka_secret,
983
1010
  "name": kafka_connection_name,
984
1011
  }
1012
+ if is_oauthbearer:
1013
+ params["kafka_sasl_oauthbearer_method"] = kafka_sasl_oauthbearer_method
1014
+ params["kafka_sasl_oauthbearer_aws_region"] = kafka_sasl_oauthbearer_aws_region
1015
+ params["kafka_sasl_oauthbearer_aws_role_arn"] = kafka_sasl_oauthbearer_aws_role_arn
1016
+ if kafka_sasl_oauthbearer_aws_external_id:
1017
+ params["kafka_sasl_oauthbearer_aws_external_id"] = kafka_sasl_oauthbearer_aws_external_id
1018
+ else:
1019
+ params["kafka_sasl_plain_username"] = kafka_key
1020
+ params["kafka_sasl_plain_password"] = kafka_secret
985
1021
 
986
1022
  if kafka_schema_registry_url:
987
1023
  params["kafka_schema_registry_url"] = kafka_schema_registry_url
@@ -219,6 +219,7 @@ def get_tinybird_service_datasources() -> List[Dict[str, Any]]:
219
219
  {"name": "processed_messages", "type": "Int32"},
220
220
  {"name": "processed_bytes", "type": "Int32"},
221
221
  {"name": "committed_messages", "type": "Int32"},
222
+ {"name": "time_process", "type": "Float32"},
222
223
  {"name": "msg", "type": "String"},
223
224
  ],
224
225
  },
@@ -879,6 +880,7 @@ def get_organization_service_datasources() -> List[Dict[str, Any]]:
879
880
  {"name": "processed_messages", "type": "Int32"},
880
881
  {"name": "processed_bytes", "type": "Int32"},
881
882
  {"name": "committed_messages", "type": "Int32"},
883
+ {"name": "time_process", "type": "Float32"},
882
884
  {"name": "msg", "type": "String"},
883
885
  ],
884
886
  },
@@ -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.5.9.dev0'
8
- __revision__ = '4b9bf45'
7
+ __version__ = '4.5.10'
8
+ __revision__ = 'e0b2a62'
@@ -503,7 +503,6 @@ def persist_tinybird_config(root_folder: str, project_type: str, dev_mode: str,
503
503
  config_path = Path(root_folder) / "tinybird.config.json"
504
504
  config_data: Dict[str, Any] = {}
505
505
  created = not config_path.exists()
506
- include = [folder]
507
506
 
508
507
  if config_path.exists():
509
508
  try:
@@ -516,17 +515,17 @@ def persist_tinybird_config(root_folder: str, project_type: str, dev_mode: str,
516
515
  if project_type == "typescript":
517
516
  updates = {
518
517
  "devMode": dev_mode,
519
- "include": include,
518
+ "folder": folder,
520
519
  }
521
- keys_to_remove = ("type", "projectType", "project_type", "dev_mode", "sdk", "folder")
522
- preferred_order = ("devMode", "include")
520
+ keys_to_remove = ("type", "projectType", "project_type", "dev_mode", "sdk", "include")
521
+ preferred_order = ("devMode", "folder")
523
522
  else:
524
523
  updates = {
525
524
  "dev_mode": dev_mode,
526
- "include": include,
525
+ "folder": folder,
527
526
  }
528
- keys_to_remove = ("type", "projectType", "project_type", "devMode", "sdk", "folder")
529
- preferred_order = ("dev_mode", "include")
527
+ keys_to_remove = ("type", "projectType", "project_type", "devMode", "sdk", "include")
528
+ preferred_order = ("dev_mode", "folder")
530
529
 
531
530
  changed = False
532
531
  for key in keys_to_remove:
@@ -1476,19 +1476,22 @@ def analyze_quarantine(datasource_name: str, project: Project, client: TinyB):
1476
1476
  user_token = config.get_user_token()
1477
1477
  click.echo(FeedbackManager.gray(message=f"\n» Analyzing errors in {datasource_name}_quarantine..."))
1478
1478
  if user_token:
1479
- llm = LLM(user_token=user_token, host=config.get_client().host)
1480
- ds_filenames = project.get_datasource_files()
1481
- datasource_definition = next(
1482
- (Path(f).read_text() for f in ds_filenames if f.endswith(f"{datasource_name}.datasource")), ""
1483
- )
1484
- response_llm = llm.ask(
1485
- system_prompt=quarantine_prompt(datasource_definition),
1486
- prompt=f"The quarantine errors are:\n{json.dumps(quarantine_data)}",
1487
- feature="tb_datasource_append_analyze_quarantine",
1488
- )
1489
- response = extract_xml(response_llm, "quarantine_errors")
1490
- error_message += "\n" + response
1491
- click.echo(response)
1479
+ try:
1480
+ llm = LLM(user_token=user_token, host=config.get_client().host)
1481
+ ds_filenames = project.get_datasource_files()
1482
+ datasource_definition = next(
1483
+ (Path(f).read_text() for f in ds_filenames if f.endswith(f"{datasource_name}.datasource")), ""
1484
+ )
1485
+ response_llm = llm.ask(
1486
+ system_prompt=quarantine_prompt(datasource_definition),
1487
+ prompt=f"The quarantine errors are:\n{json.dumps(quarantine_data)}",
1488
+ feature="tb_datasource_append_analyze_quarantine",
1489
+ )
1490
+ response = extract_xml(response_llm, "quarantine_errors")
1491
+ error_message += "\n" + response
1492
+ click.echo(response)
1493
+ except Exception:
1494
+ click.echo(FeedbackManager.error(message="There was an error analyzing the quarantine errors"))
1492
1495
  else:
1493
1496
  echo_safe_humanfriendly_tables_format_smart_table(
1494
1497
  data=[d.values() for d in res["data"]], column_names=res["data"][0].keys()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 4.5.9.dev0
3
+ Version: 4.5.10
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.5.10
56
+ *******
57
+
58
+ - `Fixed` `tb init` now persists `folder` in `tinybird.config.json`, so subsequent resource creation targets the configured project folder instead of the repository root.
59
+
60
+ 4.5.9
61
+ *******
62
+
63
+ - `Fixed` Manage correctly LLM errors when analyzing quarantine errors.
64
+
55
65
  4.5.8
56
66
  *******
57
67
 
File without changes
File without changes