tinybird-cli 3.8.1.dev1__tar.gz → 3.8.2.dev1__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 (46) hide show
  1. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/PKG-INFO +7 -1
  2. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/__cli__.py +2 -2
  3. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/datafile.py +28 -14
  4. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/cli.py +2 -2
  5. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird_cli.egg-info/PKG-INFO +7 -1
  6. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/setup.cfg +0 -0
  7. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/ch_utils/constants.py +0 -0
  8. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/ch_utils/engine.py +0 -0
  9. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/check_pypi.py +0 -0
  10. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/client.py +0 -0
  11. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/config.py +0 -0
  12. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/connectors.py +0 -0
  13. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/context.py +0 -0
  14. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/datatypes.py +0 -0
  15. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/feedback_manager.py +0 -0
  16. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/git_settings.py +0 -0
  17. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/sql.py +0 -0
  18. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/sql_template.py +0 -0
  19. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/sql_template_fmt.py +0 -0
  20. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/sql_toolset.py +0 -0
  21. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/syncasync.py +0 -0
  22. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli.py +0 -0
  23. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/auth.py +0 -0
  24. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/branch.py +0 -0
  25. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/cicd.py +0 -0
  26. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/common.py +0 -0
  27. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/config.py +0 -0
  28. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/connection.py +0 -0
  29. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/datasource.py +0 -0
  30. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/exceptions.py +0 -0
  31. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/job.py +0 -0
  32. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/pipe.py +0 -0
  33. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/regions.py +0 -0
  34. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/telemetry.py +0 -0
  35. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/test.py +0 -0
  36. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
  37. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py +0 -0
  38. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/token.py +0 -0
  39. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/workspace.py +0 -0
  40. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tb_cli_modules/workspace_members.py +0 -0
  41. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird/tornado_template.py +0 -0
  42. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird_cli.egg-info/SOURCES.txt +0 -0
  43. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird_cli.egg-info/dependency_links.txt +0 -0
  44. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird_cli.egg-info/entry_points.txt +0 -0
  45. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/tinybird_cli.egg-info/requires.txt +0 -0
  46. {tinybird-cli-3.8.1.dev1 → tinybird-cli-3.8.2.dev1}/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: 3.8.1.dev1
3
+ Version: 3.8.2.dev1
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/cli/introduction.html
6
6
  Author: Tinybird
@@ -19,6 +19,12 @@ Changelog
19
19
 
20
20
  ---------
21
21
 
22
+ 3.8.1
23
+ ************
24
+
25
+ - `Fixed` Avoid system vars evaluation when doing `tb fmt`
26
+ - `Fixed` environment variables substitution for Data Source engine parameters.
27
+
22
28
  3.8.0
23
29
  ************
24
30
 
@@ -4,5 +4,5 @@ __description__ = 'Tinybird Command Line Tool'
4
4
  __url__ = 'https://www.tinybird.co/docs/cli/introduction.html'
5
5
  __author__ = 'Tinybird'
6
6
  __author_email__ = 'support@tinybird.co'
7
- __version__ = '3.8.1.dev1'
8
- __revision__ = 'ee21c5f'
7
+ __version__ = '3.8.2.dev1'
8
+ __revision__ = 'f993ee3'
@@ -727,7 +727,9 @@ class Datafile:
727
727
  return True
728
728
 
729
729
 
730
- def parse_datasource(filename: str, replace_includes: bool = True, content: Optional[str] = None) -> Datafile:
730
+ def parse_datasource(
731
+ filename: str, replace_includes: bool = True, content: Optional[str] = None, skip_eval: bool = False
732
+ ) -> Datafile:
731
733
  basepath = ""
732
734
  if not content:
733
735
  with open(filename) as file:
@@ -737,7 +739,7 @@ def parse_datasource(filename: str, replace_includes: bool = True, content: Opti
737
739
  s = content
738
740
 
739
741
  try:
740
- doc = parse(s, "default", basepath, replace_includes=replace_includes)
742
+ doc = parse(s, "default", basepath, replace_includes=replace_includes, skip_eval=skip_eval)
741
743
  except ParseException as e:
742
744
  raise click.ClickException(
743
745
  FeedbackManager.error_parsing_file(filename=filename, lineno=e.lineno, error=e)
@@ -749,7 +751,9 @@ def parse_datasource(filename: str, replace_includes: bool = True, content: Opti
749
751
  return doc
750
752
 
751
753
 
752
- def parse_pipe(filename: str, replace_includes: bool = True, content: Optional[str] = None) -> Datafile:
754
+ def parse_pipe(
755
+ filename: str, replace_includes: bool = True, content: Optional[str] = None, skip_eval: bool = False
756
+ ) -> Datafile:
753
757
  basepath = ""
754
758
  if not content:
755
759
  with open(filename) as file:
@@ -760,7 +764,7 @@ def parse_pipe(filename: str, replace_includes: bool = True, content: Optional[s
760
764
 
761
765
  try:
762
766
  sql = ""
763
- doc = parse(s, basepath=basepath, replace_includes=replace_includes)
767
+ doc = parse(s, basepath=basepath, replace_includes=replace_includes, skip_eval=skip_eval)
764
768
  for node in doc.nodes:
765
769
  sql = node.get("sql", "")
766
770
  if sql.strip()[0] == "%":
@@ -795,7 +799,9 @@ def parse_pipe(filename: str, replace_includes: bool = True, content: Optional[s
795
799
  return doc
796
800
 
797
801
 
798
- def parse_token(filename: str, replace_includes: bool = True, content: Optional[str] = None) -> Datafile:
802
+ def parse_token(
803
+ filename: str, replace_includes: bool = True, content: Optional[str] = None, skip_eval: bool = False
804
+ ) -> Datafile:
799
805
  if not content:
800
806
  with open(filename) as file:
801
807
  s = file.read()
@@ -805,7 +811,7 @@ def parse_token(filename: str, replace_includes: bool = True, content: Optional[
805
811
 
806
812
  try:
807
813
  sql = ""
808
- doc = parse(s, basepath=basepath, replace_includes=replace_includes)
814
+ doc = parse(s, basepath=basepath, replace_includes=replace_includes, skip_eval=skip_eval)
809
815
  except ParseException as e:
810
816
  raise click.ClickException(
811
817
  FeedbackManager.error_parsing_file(
@@ -835,14 +841,20 @@ def _unquote(x: str):
835
841
  return x
836
842
 
837
843
 
838
- def eval_var(s: str) -> str:
844
+ def eval_var(s: str, skip: bool = False) -> str:
845
+ if skip:
846
+ return s
839
847
  # replace ENV variables
840
848
  # it's probably a bad idea to allow to get any env var
841
849
  return Template(s).safe_substitute(os.environ)
842
850
 
843
851
 
844
852
  def parse(
845
- s: str, default_node: Optional[str] = None, basepath: str = ".", replace_includes: bool = True
853
+ s: str,
854
+ default_node: Optional[str] = None,
855
+ basepath: str = ".",
856
+ replace_includes: bool = True,
857
+ skip_eval: bool = False,
846
858
  ) -> Datafile: # noqa: C901
847
859
  """
848
860
  Parses `s` string into a document
@@ -898,7 +910,7 @@ def parse(
898
910
  def assign_var(v: str) -> Callable[[VarArg(str), KwArg(Any)], None]:
899
911
  def _f(*args: str, **kwargs: Any):
900
912
  s = _unquote((" ".join(args)).strip())
901
- parser_state.current_node[v.lower()] = eval_var(s)
913
+ parser_state.current_node[v.lower()] = eval_var(s, skip=skip_eval)
902
914
 
903
915
  return _f
904
916
 
@@ -1029,12 +1041,12 @@ def parse(
1029
1041
  def set_engine(*args: str, **kwargs: Any) -> None:
1030
1042
  __init_engine("ENGINE")
1031
1043
  engine_type = _unquote((" ".join(args)).strip())
1032
- parser_state.current_node["engine"]["type"] = engine_type
1044
+ parser_state.current_node["engine"]["type"] = eval_var(engine_type, skip=skip_eval)
1033
1045
 
1034
1046
  def add_engine_var(v: str) -> Callable[[VarArg(str), KwArg(Any)], None]:
1035
1047
  def _f(*args: str, **kwargs: Any):
1036
1048
  __init_engine(f"ENGINE_{v}".upper())
1037
- engine_arg = _unquote((" ".join(args)).strip())
1049
+ engine_arg = eval_var(_unquote((" ".join(args)).strip()), skip=skip_eval)
1038
1050
  parser_state.current_node["engine"]["args"].append((v, engine_arg))
1039
1051
 
1040
1052
  return _f
@@ -4470,11 +4482,12 @@ async def format_datasource(
4470
4482
  replace_includes: bool = False,
4471
4483
  datafile: Optional[Datafile] = None,
4472
4484
  for_deploy_diff: bool = False,
4485
+ skip_eval: bool = False,
4473
4486
  ) -> str:
4474
4487
  if datafile:
4475
4488
  doc = datafile
4476
4489
  else:
4477
- doc = parse_datasource(filename, replace_includes=replace_includes)
4490
+ doc = parse_datasource(filename, replace_includes=replace_includes, skip_eval=skip_eval)
4478
4491
 
4479
4492
  file_parts: List[str] = []
4480
4493
  if for_diff:
@@ -4707,11 +4720,12 @@ async def format_pipe(
4707
4720
  replace_includes: bool = False,
4708
4721
  datafile: Optional[Datafile] = None,
4709
4722
  for_deploy_diff: bool = False,
4723
+ skip_eval: bool = False,
4710
4724
  ) -> str:
4711
4725
  if datafile:
4712
4726
  doc = datafile
4713
4727
  else:
4714
- doc = parse_pipe(filename, replace_includes=replace_includes)
4728
+ doc = parse_pipe(filename, replace_includes=replace_includes, skip_eval=skip_eval)
4715
4729
 
4716
4730
  file_parts: List[str] = []
4717
4731
  format_sources(file_parts, doc)
@@ -4738,7 +4752,7 @@ async def format_pipe(
4738
4752
  if "." in include_file
4739
4753
  else eval_var(include_file)
4740
4754
  )
4741
- included_pipe = parse_pipe(include_file)
4755
+ included_pipe = parse_pipe(include_file, skip_eval=skip_eval)
4742
4756
  pipe_nodes = doc.nodes.copy()
4743
4757
  for included_node in included_pipe.nodes.copy():
4744
4758
  unrolled_included_node = next(
@@ -797,9 +797,9 @@ async def fmt(
797
797
  click.echo(filename)
798
798
  extensions = Path(filename).suffixes
799
799
  if is_file_a_datasource(filename):
800
- result = await format_datasource(filename)
800
+ result = await format_datasource(filename, skip_eval=True)
801
801
  elif (".pipe" in extensions) or (".incl" in extensions):
802
- result = await format_pipe(filename, line_length)
802
+ result = await format_pipe(filename, line_length, skip_eval=True)
803
803
  else:
804
804
  click.echo("Unsupported file type. Supported files types are: .pipe, .incl and .datasource")
805
805
  return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tinybird-cli
3
- Version: 3.8.1.dev1
3
+ Version: 3.8.2.dev1
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/cli/introduction.html
6
6
  Author: Tinybird
@@ -19,6 +19,12 @@ Changelog
19
19
 
20
20
  ---------
21
21
 
22
+ 3.8.1
23
+ ************
24
+
25
+ - `Fixed` Avoid system vars evaluation when doing `tb fmt`
26
+ - `Fixed` environment variables substitution for Data Source engine parameters.
27
+
22
28
  3.8.0
23
29
  ************
24
30