tinybird-cli 5.13.3.dev0__tar.gz → 5.13.4.dev0__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 (48) hide show
  1. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/PKG-INFO +12 -1
  2. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/__cli__.py +2 -2
  3. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/datafile.py +55 -1
  4. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/feedback_manager.py +6 -0
  5. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/common.py +19 -17
  6. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird_cli.egg-info/PKG-INFO +12 -1
  7. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/setup.cfg +0 -0
  8. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/ch_utils/constants.py +0 -0
  9. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/ch_utils/engine.py +0 -0
  10. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/check_pypi.py +0 -0
  11. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/client.py +0 -0
  12. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/config.py +0 -0
  13. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/connectors.py +0 -0
  14. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/context.py +0 -0
  15. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/datatypes.py +0 -0
  16. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/git_settings.py +0 -0
  17. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/sql.py +0 -0
  18. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/sql_template.py +0 -0
  19. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/sql_template_fmt.py +0 -0
  20. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/sql_toolset.py +0 -0
  21. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/syncasync.py +0 -0
  22. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli.py +0 -0
  23. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/auth.py +0 -0
  24. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/branch.py +0 -0
  25. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/cicd.py +0 -0
  26. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/cli.py +0 -0
  27. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/config.py +0 -0
  28. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/connection.py +0 -0
  29. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/datasource.py +0 -0
  30. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/exceptions.py +0 -0
  31. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/fmt.py +0 -0
  32. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/job.py +0 -0
  33. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/pipe.py +0 -0
  34. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/regions.py +0 -0
  35. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/tag.py +0 -0
  36. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/telemetry.py +0 -0
  37. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/test.py +0 -0
  38. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
  39. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py +0 -0
  40. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/token.py +0 -0
  41. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/workspace.py +0 -0
  42. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tb_cli_modules/workspace_members.py +0 -0
  43. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird/tornado_template.py +0 -0
  44. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird_cli.egg-info/SOURCES.txt +0 -0
  45. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird_cli.egg-info/dependency_links.txt +0 -0
  46. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird_cli.egg-info/entry_points.txt +0 -0
  47. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird_cli.egg-info/requires.txt +0 -0
  48. {tinybird_cli-5.13.3.dev0 → tinybird_cli-5.13.4.dev0}/tinybird_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tinybird_cli
3
- Version: 5.13.3.dev0
3
+ Version: 5.13.4.dev0
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/cli
6
6
  Author: Tinybird
@@ -18,9 +18,20 @@ The Tinybird command-line tool allows you to use all the Tinybird functionality
18
18
  Changelog
19
19
  ----------
20
20
 
21
+ 5.13.3
22
+ ***********
23
+
24
+ - `Fixed` updating the cron schedule of a BigQuery data source when having a query but no external_data_source setting.
25
+ - `Fixed` handle Kafka connector with multiple brokers properly.
26
+
21
27
  5.13.2
22
28
  ***********
23
29
 
30
+ - `Fixed` Correctly handle Kafka connector with multiple brokers
31
+
32
+ 5.13.1.dev2
33
+ ***********
34
+
24
35
  - `Added` comply with [PEP 625](https://peps.python.org/pep-0625/)
25
36
  - `Added` `eu-west-1` region to the list of available regions.
26
37
 
@@ -4,5 +4,5 @@ __description__ = 'Tinybird Command Line Tool'
4
4
  __url__ = 'https://www.tinybird.co/docs/cli'
5
5
  __author__ = 'Tinybird'
6
6
  __author_email__ = 'support@tinybird.co'
7
- __version__ = '5.13.3.dev0'
8
- __revision__ = 'd9e1309'
7
+ __version__ = '5.13.4.dev0'
8
+ __revision__ = '3595fd7'
@@ -3434,14 +3434,33 @@ async def new_ds(
3434
3434
  DATASOURCE_VALID_SERVICES_TO_UPDATE = ["bigquery", "snowflake"]
3435
3435
  if datasource_exists and service and service in [*DATASOURCE_VALID_SERVICES_TO_UPDATE, *PREVIEW_CONNECTOR_SERVICES]:
3436
3436
  connector_required_params = {
3437
- "bigquery": ["service", "cron", "external_data_source"],
3437
+ "bigquery": ["service", "cron"],
3438
3438
  "snowflake": ["connector", "service", "cron", "external_data_source"],
3439
3439
  "s3": ["connector", "service", "cron", "bucket_uri"],
3440
3440
  "s3_iamrole": ["connector", "service", "cron", "bucket_uri"],
3441
3441
  "gcs": ["connector", "service", "cron", "bucket_uri"],
3442
3442
  }.get(service, [])
3443
3443
 
3444
+ connector_at_least_one_required_param = {
3445
+ "bigquery": ["external_data_source", "query"],
3446
+ }.get(service, [])
3447
+
3448
+ if connector_at_least_one_required_param and not any(
3449
+ key in ds_params for key in connector_at_least_one_required_param
3450
+ ):
3451
+ params = [
3452
+ (ImportReplacements.get_datafile_param_for_linker_param(service, param) or param).upper()
3453
+ for param in connector_at_least_one_required_param
3454
+ ]
3455
+ click.echo(FeedbackManager.error_updating_connector_missing_at_least_one_param(param=" or ".join(params)))
3456
+ return
3457
+
3444
3458
  if not all(key in ds_params for key in connector_required_params):
3459
+ params = [
3460
+ (ImportReplacements.get_datafile_param_for_linker_param(service, param) or param).upper()
3461
+ for param in connector_required_params
3462
+ ]
3463
+ click.echo(FeedbackManager.error_updating_connector_missing_params(param=", ".join(params)))
3445
3464
  return
3446
3465
 
3447
3466
  connector = ds_params.get("connector", None)
@@ -5589,3 +5608,38 @@ def is_file_a_datasource(filename: str) -> bool:
5589
5608
  return True
5590
5609
 
5591
5610
  return False
5611
+
5612
+
5613
+ def update_connector_params(service: str, ds_params: Dict[str, Any], connector_required_params: List[str]) -> None:
5614
+ """
5615
+ Update connector parameters for a given service, ensuring required parameters exist.
5616
+
5617
+ :param service: The name of the service (e.g., 'bigquery').
5618
+ :param ds_params: The data source parameters to be checked.
5619
+ :param connector_required_params: The list of required parameters for the connector.
5620
+ :return: None
5621
+ """
5622
+
5623
+ connector_at_least_one_required_param: List[str] = {
5624
+ "bigquery": ["external_data_source", "query"],
5625
+ }.get(service, [])
5626
+
5627
+ # Handle the "at least one param" requirement
5628
+ if connector_at_least_one_required_param and not any(
5629
+ key in ds_params for key in connector_at_least_one_required_param
5630
+ ):
5631
+ params = [
5632
+ (ImportReplacements.get_datafile_param_for_linker_param(service, param) or param).upper()
5633
+ for param in connector_at_least_one_required_param
5634
+ ]
5635
+ click.echo(FeedbackManager.error_updating_connector_missing_at_least_one_param(param=" or ".join(params)))
5636
+ return
5637
+
5638
+ # Handle the mandatory params requirement
5639
+ if not all(key in ds_params for key in connector_required_params):
5640
+ params = [
5641
+ (ImportReplacements.get_datafile_param_for_linker_param(service, param) or param).upper()
5642
+ for param in connector_required_params
5643
+ ]
5644
+ click.echo(FeedbackManager.error_updating_connector_missing_params(param=", ".join(params)))
5645
+ return
@@ -130,6 +130,12 @@ class FeedbackManager:
130
130
  error_remove_no_endpoint = error_message("Pipe does not have any endpoint")
131
131
  error_updating_pipe = error_message("Failed updating pipe {error}")
132
132
  error_updating_connector_not_supported = error_message("Changing {param} is not currently supported")
133
+ error_updating_connector_missing_at_least_one_param = error_message(
134
+ "Connection settings not updated. Connection info should have at least one of {param} settings"
135
+ )
136
+ error_updating_connector_missing_params = error_message(
137
+ "Connection settings not updated. Connection info should have {param} settings"
138
+ )
133
139
  error_removing_node = error_message("Failed removing node from pipe {pipe}: {error}")
134
140
  error_pushing_pipe = error_message("Failed pushing pipe {pipe}: {error}")
135
141
  error_creating_endpoint = error_message("Failed creating endpoint in node {node} on pipe {pipe}: {error}")
@@ -1252,26 +1252,28 @@ def is_url_valid(url):
1252
1252
  return False
1253
1253
 
1254
1254
 
1255
- def validate_kafka_bootstrap_servers(host_and_port):
1256
- if not isinstance(host_and_port, str):
1255
+ def validate_kafka_bootstrap_servers(bootstrap_servers):
1256
+ if not isinstance(bootstrap_servers, str):
1257
1257
  raise CLIException(FeedbackManager.error_kafka_bootstrap_server())
1258
- parts = host_and_port.split(":")
1259
- if len(parts) > 2:
1260
- raise CLIException(FeedbackManager.error_kafka_bootstrap_server())
1261
- host = parts[0]
1262
- port_str = parts[1] if len(parts) == 2 else "9092"
1263
- try:
1264
- port = int(port_str)
1265
- except Exception:
1266
- raise CLIException(FeedbackManager.error_kafka_bootstrap_server())
1267
- with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock:
1258
+
1259
+ for host_and_port in bootstrap_servers.split(","):
1260
+ parts = host_and_port.split(":")
1261
+ if len(parts) > 2:
1262
+ raise CLIException(FeedbackManager.error_kafka_bootstrap_server())
1263
+ host = parts[0]
1264
+ port_str = parts[1] if len(parts) == 2 else "9092"
1268
1265
  try:
1269
- sock.settimeout(3)
1270
- sock.connect((host, port))
1271
- except socket.timeout:
1272
- raise CLIException(FeedbackManager.error_kafka_bootstrap_server_conn_timeout())
1266
+ port = int(port_str)
1273
1267
  except Exception:
1274
- raise CLIException(FeedbackManager.error_kafka_bootstrap_server_conn())
1268
+ raise CLIException(FeedbackManager.error_kafka_bootstrap_server())
1269
+ with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock:
1270
+ try:
1271
+ sock.settimeout(3)
1272
+ sock.connect((host, port))
1273
+ except socket.timeout:
1274
+ raise CLIException(FeedbackManager.error_kafka_bootstrap_server_conn_timeout())
1275
+ except Exception:
1276
+ raise CLIException(FeedbackManager.error_kafka_bootstrap_server_conn())
1275
1277
 
1276
1278
 
1277
1279
  def validate_kafka_key(s):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tinybird-cli
3
- Version: 5.13.3.dev0
3
+ Version: 5.13.4.dev0
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/cli
6
6
  Author: Tinybird
@@ -18,9 +18,20 @@ The Tinybird command-line tool allows you to use all the Tinybird functionality
18
18
  Changelog
19
19
  ----------
20
20
 
21
+ 5.13.3
22
+ ***********
23
+
24
+ - `Fixed` updating the cron schedule of a BigQuery data source when having a query but no external_data_source setting.
25
+ - `Fixed` handle Kafka connector with multiple brokers properly.
26
+
21
27
  5.13.2
22
28
  ***********
23
29
 
30
+ - `Fixed` Correctly handle Kafka connector with multiple brokers
31
+
32
+ 5.13.1.dev2
33
+ ***********
34
+
24
35
  - `Added` comply with [PEP 625](https://peps.python.org/pep-0625/)
25
36
  - `Added` `eu-west-1` region to the list of available regions.
26
37