tinybird-cli 3.0.0.dev10__py3-none-any.whl → 3.0.0.dev12__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.
tinybird/__cli__.py CHANGED
@@ -4,5 +4,5 @@ __description__ = 'Tinybird Command Line Tool'
4
4
  __url__ = 'https://docs.tinybird.co/cli.html'
5
5
  __author__ = 'Tinybird'
6
6
  __author_email__ = 'support@tinybird.co'
7
- __version__ = '3.0.0.dev10'
8
- __revision__ = 'c176e6c'
7
+ __version__ = '3.0.0.dev12'
8
+ __revision__ = 'f798337'
@@ -21,7 +21,13 @@ from click import Context
21
21
  from packaging import version
22
22
 
23
23
  import tinybird.context as context
24
- from tinybird.client import AuthException, AuthNoTokenException, DoesNotExistException, TinyB
24
+ from tinybird.client import (
25
+ AuthException,
26
+ AuthNoTokenException,
27
+ DoesNotExistException,
28
+ OperationCanNotBePerformed,
29
+ TinyB,
30
+ )
25
31
  from tinybird.config import CURRENT_VERSION, SUPPORTED_CONNECTORS, VERSION, FeatureFlags, get_config
26
32
  from tinybird.datafile import (
27
33
  AlreadyExistsException,
@@ -1420,116 +1426,121 @@ async def deploy(
1420
1426
  fork: bool,
1421
1427
  ) -> None:
1422
1428
  """Deploy in tinybird pushing resources changed from previous release using git"""
1429
+ try:
1430
+ ignore_sql_errors = FeatureFlags.ignore_sql_errors()
1431
+ context.disable_template_security_validation.set(True)
1423
1432
 
1424
- ignore_sql_errors = FeatureFlags.ignore_sql_errors()
1425
- context.disable_template_security_validation.set(True)
1433
+ is_internal = has_internal_datafiles(folder)
1426
1434
 
1427
- is_internal = has_internal_datafiles(folder)
1435
+ client: TinyB = ctx.ensure_object(dict)["client"]
1436
+ config = ctx.ensure_object(dict)["config"]
1437
+ workspaces: List[Dict[str, Any]] = (await client.user_workspaces_and_branches()).get("workspaces", [])
1438
+ current_ws: Dict[str, Any] = next(
1439
+ (workspace for workspace in workspaces if config and workspace.get("id", ".") == config.get("id", "..")), {}
1440
+ )
1428
1441
 
1429
- client: TinyB = ctx.ensure_object(dict)["client"]
1430
- config = ctx.ensure_object(dict)["config"]
1431
- workspaces: List[Dict[str, Any]] = (await client.user_workspaces_and_branches()).get("workspaces", [])
1432
- current_ws: Dict[str, Any] = next(
1433
- (workspace for workspace in workspaces if config and workspace.get("id", ".") == config.get("id", "..")), {}
1434
- )
1442
+ semver = config.get("semver")
1443
+ auto_promote = getenv_bool("TB_AUTO_PROMOTE", True)
1444
+ release = current_ws.get("release", {})
1445
+ current_semver: Optional[str] = None
1446
+ if release and isinstance(release, dict):
1447
+ current_semver = release.get("semver")
1435
1448
 
1436
- semver = config.get("semver")
1437
- auto_promote = getenv_bool("TB_AUTO_PROMOTE", True)
1438
- release = current_ws.get("release", {})
1439
- current_semver: Optional[str] = None
1440
- if release and isinstance(release, dict):
1441
- current_semver = release.get("semver")
1442
-
1443
- if not current_semver:
1444
- click.echo(FeedbackManager.error_init_release(workspace=current_ws.get("name")))
1445
- sys.exit(1)
1446
-
1447
- release_created = False
1448
- new_release = False
1449
- if semver and current_semver:
1450
- new_version = version.parse(semver.split("-snapshot")[0])
1451
- current_version = version.parse(current_semver.split("-snapshot")[0])
1452
- click.echo(FeedbackManager.info_releases_detected(current_semver=current_version, semver=new_version))
1453
- if new_version <= current_version:
1454
- click.echo(FeedbackManager.error_bump_release())
1449
+ if not current_semver:
1450
+ click.echo(FeedbackManager.error_init_release(workspace=current_ws.get("name")))
1455
1451
  sys.exit(1)
1456
1452
 
1457
- if is_post_semver(new_version, current_version):
1458
- click.echo(FeedbackManager.info_local_release(version=new_version))
1459
- yes = True
1460
- auto_promote = False
1461
- new_release = False
1462
- elif is_major_semver(new_version, current_version):
1463
- click.echo(FeedbackManager.info_major_release(version=new_version))
1464
- auto_promote = False
1465
- new_release = True
1466
- else:
1467
- # allows TB_AUTO_PROMOTE=0 so release is left in preview
1468
- auto_promote = getenv_bool("TB_AUTO_PROMOTE", True)
1469
- if auto_promote:
1470
- click.echo(FeedbackManager.info_minor_patch_release_with_autopromote(version=new_version))
1453
+ release_created = False
1454
+ new_release = False
1455
+ if semver and current_semver:
1456
+ new_version = version.parse(semver.split("-snapshot")[0])
1457
+ current_version = version.parse(current_semver.split("-snapshot")[0])
1458
+ click.echo(FeedbackManager.info_releases_detected(current_semver=current_version, semver=new_version))
1459
+ if new_version <= current_version:
1460
+ click.echo(FeedbackManager.error_bump_release())
1461
+ sys.exit(1)
1462
+
1463
+ if is_post_semver(new_version, current_version):
1464
+ click.echo(FeedbackManager.info_local_release(version=new_version))
1465
+ yes = True
1466
+ auto_promote = False
1467
+ new_release = False
1468
+ elif is_major_semver(new_version, current_version):
1469
+ click.echo(FeedbackManager.info_major_release(version=new_version))
1470
+ auto_promote = False
1471
+ new_release = True
1471
1472
  else:
1472
- click.echo(FeedbackManager.info_minor_patch_release_no_autopromote(version=new_version))
1473
- new_release = True
1474
- else:
1475
- click.echo(FeedbackManager.error_bump_release())
1476
- sys.exit(1)
1477
-
1478
- if new_release:
1479
- if not dry_run:
1480
- await create_release(client, config, semver)
1481
- release_created = True
1482
- fork_downstream = True
1483
- try:
1484
- await folder_push(
1485
- tb_client=create_tb_client(ctx),
1486
- dry_run=dry_run,
1487
- check=False,
1488
- push_deps=True,
1489
- debug=debug,
1490
- force=True,
1491
- git_release=True,
1492
- override_datasource=override_datasource,
1493
- populate=populate,
1494
- populate_subset=subset,
1495
- populate_condition=sql_condition,
1496
- unlink_on_populate_error=unlink_on_populate_error,
1497
- upload_fixtures=False,
1498
- wait=wait,
1499
- ignore_sql_errors=ignore_sql_errors,
1500
- skip_confirmation=yes,
1501
- workspace_map=dict(workspace_map),
1502
- workspace_lib_paths=workspace,
1503
- timeout=timeout,
1504
- run_tests=False,
1505
- folder=folder,
1506
- config=ctx.ensure_object(dict)["config"],
1507
- user_token=user_token,
1508
- fork_downstream=fork_downstream,
1509
- fork=fork,
1510
- is_internal=is_internal,
1511
- release_created=release_created,
1512
- )
1513
- except Exception as e:
1514
- if release_created and not dry_run:
1515
- await client.release_failed(config["id"], semver)
1516
- raise e
1473
+ # allows TB_AUTO_PROMOTE=0 so release is left in preview
1474
+ auto_promote = getenv_bool("TB_AUTO_PROMOTE", True)
1475
+ if auto_promote:
1476
+ click.echo(FeedbackManager.info_minor_patch_release_with_autopromote(version=new_version))
1477
+ else:
1478
+ click.echo(FeedbackManager.info_minor_patch_release_no_autopromote(version=new_version))
1479
+ new_release = True
1480
+ else:
1481
+ click.echo(FeedbackManager.error_bump_release())
1482
+ sys.exit(1)
1517
1483
 
1518
- if release_created and not dry_run:
1519
- try:
1520
- await client.release_preview(config["id"], semver)
1521
- click.echo(FeedbackManager.success_release_preview(semver=semver))
1522
- if auto_promote:
1484
+ if new_release:
1485
+ if not dry_run:
1523
1486
  try:
1524
- release = await client.release_promote(config["id"], semver)
1525
- click.echo(FeedbackManager.success_release_promote(semver=semver))
1526
- click.echo(FeedbackManager.success_git_release(release_commit=release["commit"]))
1527
- except Exception as e:
1487
+ await create_release(client, config, semver)
1488
+ except OperationCanNotBePerformed as e:
1528
1489
  raise CLIException(FeedbackManager.error_exception(error=str(e)))
1490
+ release_created = True
1491
+ fork_downstream = True
1492
+ try:
1493
+ await folder_push(
1494
+ tb_client=create_tb_client(ctx),
1495
+ dry_run=dry_run,
1496
+ check=False,
1497
+ push_deps=True,
1498
+ debug=debug,
1499
+ force=True,
1500
+ git_release=True,
1501
+ override_datasource=override_datasource,
1502
+ populate=populate,
1503
+ populate_subset=subset,
1504
+ populate_condition=sql_condition,
1505
+ unlink_on_populate_error=unlink_on_populate_error,
1506
+ upload_fixtures=False,
1507
+ wait=wait,
1508
+ ignore_sql_errors=ignore_sql_errors,
1509
+ skip_confirmation=yes,
1510
+ workspace_map=dict(workspace_map),
1511
+ workspace_lib_paths=workspace,
1512
+ timeout=timeout,
1513
+ run_tests=False,
1514
+ folder=folder,
1515
+ config=ctx.ensure_object(dict)["config"],
1516
+ user_token=user_token,
1517
+ fork_downstream=fork_downstream,
1518
+ fork=fork,
1519
+ is_internal=is_internal,
1520
+ release_created=release_created,
1521
+ )
1529
1522
  except Exception as e:
1530
- raise CLIException(FeedbackManager.error_exception(error=str(e)))
1523
+ if release_created and not dry_run:
1524
+ await client.release_failed(config["id"], semver)
1525
+ raise e
1531
1526
 
1532
- if not new_release and not dry_run:
1533
- client.semver = None
1534
- await client.update_release_semver(config["id"], current_semver, semver)
1535
- click.echo(FeedbackManager.success_release_update(semver=current_semver, new_semver=semver))
1527
+ if release_created and not dry_run:
1528
+ try:
1529
+ await client.release_preview(config["id"], semver)
1530
+ click.echo(FeedbackManager.success_release_preview(semver=semver))
1531
+ if auto_promote:
1532
+ try:
1533
+ release = await client.release_promote(config["id"], semver)
1534
+ click.echo(FeedbackManager.success_release_promote(semver=semver))
1535
+ click.echo(FeedbackManager.success_git_release(release_commit=release["commit"]))
1536
+ except Exception as e:
1537
+ raise CLIException(FeedbackManager.error_exception(error=str(e)))
1538
+ except Exception as e:
1539
+ raise CLIException(FeedbackManager.error_exception(error=str(e)))
1540
+
1541
+ if not new_release and not dry_run:
1542
+ client.semver = None
1543
+ await client.update_release_semver(config["id"], current_semver, semver)
1544
+ click.echo(FeedbackManager.success_release_update(semver=current_semver, new_semver=semver))
1545
+ except Exception as e:
1546
+ raise CLIException(str(e))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tinybird-cli
3
- Version: 3.0.0.dev10
3
+ Version: 3.0.0.dev12
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://docs.tinybird.co/cli.html
6
6
  Author: Tinybird
@@ -52,6 +52,16 @@ Changelog
52
52
 
53
53
  ---------
54
54
 
55
+ 3.0.0.dev12
56
+ ************
57
+
58
+ - `Fixed` `tb deploy` now fails with exit 1 in case a release limit has been reached.
59
+
60
+ 3.0.0.dev11
61
+ ************
62
+
63
+ - `Fixed` `tb deploy` validates post --semver
64
+
55
65
  3.0.0.dev10
56
66
  ************
57
67
 
@@ -62,19 +72,16 @@ Changelog
62
72
 
63
73
  - `Changed` Pointing to versions.tinybird.co for docs pages related to Versions
64
74
 
65
-
66
75
  3.0.0.dev8
67
76
  ************
68
77
 
69
78
  - `Changed` Initial git files to include mandatory directories
70
79
 
71
-
72
80
  3.0.0.dev7
73
81
  ************
74
82
 
75
83
  - `Added` `tb release rm --oldest-rollback --force --yes` deletes the oldest rollback Release by creation date
76
84
 
77
-
78
85
  3.0.0.dev6
79
86
  ************
80
87
 
@@ -1,4 +1,4 @@
1
- tinybird/__cli__.py,sha256=_R_jT-NuSxzu_atMbPz-BNJ4cDPSFb417CJwm8SvT6I,238
1
+ tinybird/__cli__.py,sha256=NGBbIvgdQsNkcGHLTJwcffCPW20zQ6rEiCxoJ0LewSg,238
2
2
  tinybird/check_pypi.py,sha256=_4NkharLyR_ELrAdit-ftqIWvOf7jZNPt3i76frlo9g,975
3
3
  tinybird/client.py,sha256=lSVGM_7JE7GA6v8gonT6rBbIgVDDeZH9NfS1C5UClNU,45947
4
4
  tinybird/config.py,sha256=ckNiJhDbRm1IGNz_0V712fgiv2XBhDxujUH0EvwYVm4,1962
@@ -21,7 +21,7 @@ tinybird/ch_utils/engine.py,sha256=LzQxPraFN7tTl6YP-xwd3Z2o3BjjD4VNqWDrreC4koI,3
21
21
  tinybird/tb_cli_modules/auth.py,sha256=joR1uS821o2bPTpgDyMCYed9Kw7MutR0aa-YvmIb4zA,8561
22
22
  tinybird/tb_cli_modules/branch.py,sha256=12ZCiD1DEGpW0mNtARb8M2YFJD1f5mkBoNIdDZhBqbk,38103
23
23
  tinybird/tb_cli_modules/cicd.py,sha256=yhnlGkbDa61PovW-45Ts5kRDcTcvDYJFL2PsssStWAY,12746
24
- tinybird/tb_cli_modules/cli.py,sha256=URTkaDmBxl9y4_dAyu3jD8PYCqDXeptsnQ8Ll8R49Ws,59270
24
+ tinybird/tb_cli_modules/cli.py,sha256=2JdF8GQ3KXad_IIzV1p6H48QkRZFXfHVUtSGPCv3BNk,59972
25
25
  tinybird/tb_cli_modules/common.py,sha256=dnNkcbcLWBtMzNpqL2BgHhXC31tlZtPeL9elrUQZf-c,75026
26
26
  tinybird/tb_cli_modules/config.py,sha256=6NTgIdwf0X132A1j6G_YrdPep87ymZ9b5pABabKLzh4,11484
27
27
  tinybird/tb_cli_modules/connection.py,sha256=LUU9kHyxC8MEFU_VBk_YvbAukjWGakmLS-28nx8xgPA,22115
@@ -37,8 +37,8 @@ tinybird/tb_cli_modules/workspace.py,sha256=NDHINzW3SBo8FcWH8Bx-DCeUXQ8YUJX6FW8c
37
37
  tinybird/tb_cli_modules/workspace_members.py,sha256=6oZM7oJQPxDMycL95TPtALriL5WRI2DhNlQWD8MP8JU,8205
38
38
  tinybird/tb_cli_modules/tinyunit/tinyunit.py,sha256=0dYYmZMMJVubxSPls2e_a-fqtUYvgLfu2B0xwLfkbHw,11667
39
39
  tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py,sha256=j92za8QbXrv4eIPjKBZPn9ghR-nYQ2wZZ88MeXyMWXE,1868
40
- tinybird_cli-3.0.0.dev10.dist-info/METADATA,sha256=Wb2YcffVGaSdbE6uPBbacxNCzroTQQCeWd9Tfi_zwAo,63136
41
- tinybird_cli-3.0.0.dev10.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
42
- tinybird_cli-3.0.0.dev10.dist-info/entry_points.txt,sha256=PKPKuPmA4IfJYnCFHHUiw-aAWZuBomFvwCklv1OyCjE,43
43
- tinybird_cli-3.0.0.dev10.dist-info/top_level.txt,sha256=8TRt5snq9vZpx4rBBc9EWpj76Er6IAdfnx_Eq6cNBk8,45
44
- tinybird_cli-3.0.0.dev10.dist-info/RECORD,,
40
+ tinybird_cli-3.0.0.dev12.dist-info/METADATA,sha256=X1HcwPh4RQ9CTzEk_kO00352s0ejgxiOYrWD123TQqM,63319
41
+ tinybird_cli-3.0.0.dev12.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
42
+ tinybird_cli-3.0.0.dev12.dist-info/entry_points.txt,sha256=PKPKuPmA4IfJYnCFHHUiw-aAWZuBomFvwCklv1OyCjE,43
43
+ tinybird_cli-3.0.0.dev12.dist-info/top_level.txt,sha256=8TRt5snq9vZpx4rBBc9EWpj76Er6IAdfnx_Eq6cNBk8,45
44
+ tinybird_cli-3.0.0.dev12.dist-info/RECORD,,