tinybird 0.0.1.dev220__py3-none-any.whl → 0.0.1.dev222__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.

tinybird/prompts.py CHANGED
@@ -815,14 +815,17 @@ sql_instructions = """
815
815
  - Do NOT use CREATE TABLE, INSERT INTO, CREATE DATABASE, etc.
816
816
  - Use ONLY SELECT statements in the SQL section.
817
817
  - INSERT INTO is not supported in SQL section.
818
- - General functions supported are: {general_functions}
819
- - Character insensitive functions supported are: {general_functions_insensitive}
820
- - Aggregate functions supported are: {aggregate_functions}
821
- - Do not use any function that is not present in the list of general functions, character insensitive functions and aggregate functions.
822
- - If the function is not present in the list, the sql query will fail, so avoid at all costs to use any function that is not present in the list.
823
- - When aliasing a column, use first the column name and then the alias.
824
- - General functions and aggregate functions are case sensitive.
825
- - Character insensitive functions are case insensitive.
818
+ - ClickHouse functions supported are:
819
+ - General functions supported are: {general_functions}
820
+ - Character insensitive functions supported are: {general_functions_insensitive}
821
+ - Aggregate functions supported are: {aggregate_functions}
822
+ - How to use ClickHouse supported functions:
823
+ - When using functions try always ClickHouse functions first, then SQL functions.
824
+ - Do not use any ClickHouse function that is not present in the list of general functions, character insensitive functions and aggregate functions.
825
+ - If the function is not present in the list, the sql query will fail, so avoid at all costs to use any function that is not present in the list.
826
+ - When aliasing a column, use first the column name and then the alias.
827
+ - General functions and aggregate functions are case sensitive.
828
+ - Character insensitive functions are case insensitive.
826
829
  - Parameters are never quoted in any case.
827
830
  - Use the following syntax in the SQL section for the iceberg table function: iceberg('s3://bucket/path/to/table', {{{{tb_secret('aws_access_key_id')}}}}, {{{{tb_secret('aws_secret_access_key')}}}})
828
831
  - Use the following syntax in the SQL section for the postgres table function: postgresql('host:port', 'database', 'table', {{{{tb_secret('db_username')}}}}, {{{{tb_secret('db_password')}}}}), 'schema')
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.dev220'
8
- __revision__ = 'd9c7b3e'
7
+ __version__ = '0.0.1.dev222'
8
+ __revision__ = 'd9587d9'
@@ -687,63 +687,72 @@ async def datasource_create(
687
687
  FeedbackManager.error(message="`tb datasource create` is not available against Tinybird Cloud.")
688
688
  )
689
689
 
690
- datasource_types = (
691
- "Blank",
692
- "Local file",
693
- "Remote URL",
694
- "Kafka",
695
- "S3",
696
- "GCS",
697
- )
690
+ datasource_types = {
691
+ "blank": ("Blank", "Create an empty one"),
692
+ "local_file": ("Local file", "A local file"),
693
+ "remote_url": ("Remote URL", "A remote file"),
694
+ "s3": ("S3", "Files on S3"),
695
+ "gcs": ("GCS", "Files on GCS"),
696
+ "kafka": ("Kafka", "Connect a Kafka topic"),
697
+ "prompt": ("Prompt", "Create a datasource from a prompt"),
698
+ }
698
699
  datasource_type: Optional[str] = None
699
700
  connection_file: Optional[str] = None
700
701
  ds_content = """SCHEMA >
701
702
  `data` String `json:$`
702
703
  """
704
+ wizard_mode = True
703
705
  if file:
704
- datasource_type = "Local file"
706
+ datasource_type = "local_file"
707
+ wizard_mode = False
705
708
  elif url:
706
- datasource_type = "Remote URL"
709
+ datasource_type = "remote_url"
710
+ wizard_mode = False
707
711
  elif blank:
708
- datasource_type = "Blank"
712
+ datasource_type = "blank"
713
+ wizard_mode = False
709
714
  elif connection:
710
715
  connection_files = project.get_connection_files()
711
716
  connection_file = next((f for f in connection_files if f.endswith(f"{connection}.connection")), None)
712
717
  if connection_file:
713
718
  connection_content = Path(connection_file).read_text()
714
719
  if project.is_kafka_connection(connection_content):
715
- datasource_type = "Kafka"
720
+ datasource_type = "kafka"
716
721
  elif project.is_s3_connection(connection_content):
717
- datasource_type = "S3"
722
+ datasource_type = "s3"
718
723
  elif project.is_gcs_connection(connection_content):
719
- datasource_type = "GCS"
724
+ datasource_type = "gcs"
720
725
  elif s3:
721
- datasource_type = "S3"
726
+ datasource_type = "s3"
727
+ wizard_mode = False
722
728
  elif gcs:
723
- datasource_type = "GCS"
729
+ datasource_type = "gcs"
730
+ wizard_mode = False
724
731
  elif kafka:
725
- datasource_type = "Kafka"
732
+ datasource_type = "kafka"
733
+ wizard_mode = False
726
734
  elif prompt:
727
- click.echo(FeedbackManager.gray(message="\n» Creating .datasource file..."))
728
- user_token = config.get("user_token")
729
- if not user_token:
730
- raise Exception("This action requires authentication. Run 'tb login' first.")
731
- project_config = CLIConfig.get_project_config()
732
- tb_client: TinyB = project_config.get_client(token=config.get("token"), host=config.get("host"))
733
- await create_resources_from_prompt(tb_client, user_token, prompt, project)
734
- click.echo(FeedbackManager.success(message="✓ .datasource created!"))
735
- return
735
+ datasource_type = "prompt"
736
+ wizard_mode = False
736
737
 
737
738
  if datasource_type is None:
738
- click.echo(FeedbackManager.highlight(message="? Where do you want to create your .datasource from?"))
739
+ click.echo(
740
+ FeedbackManager.highlight(
741
+ message="? This command will create the schema (.datasource) for your data. Choose where from:"
742
+ )
743
+ )
739
744
  datasource_type_index = -1
740
745
 
746
+ dt_keys = list(datasource_types.keys())
741
747
  while datasource_type_index == -1:
742
- for index, datasource_type in enumerate(datasource_types):
743
- click.echo(f" [{index + 1}] {datasource_type}")
748
+ for index, key in enumerate(dt_keys):
749
+ click.echo(
750
+ f" [{index + 1}] {FeedbackManager.bold(message=datasource_types[key][0])}: {datasource_types[key][1]}"
751
+ )
752
+ click.echo(FeedbackManager.gray(message="\nFiles can be either NDJSON, CSV or Parquet."))
744
753
  click.echo(
745
754
  FeedbackManager.gray(
746
- message="Tip: Run `tb datasource create --file | --url | --connection` to skip this step."
755
+ message=("Tip: Run `tb datasource create --file | --url | --connection` to skip this step.")
747
756
  )
748
757
  )
749
758
  datasource_type_index = click.prompt("\nSelect option", default=1)
@@ -753,7 +762,7 @@ async def datasource_create(
753
762
  return None
754
763
 
755
764
  try:
756
- datasource_type = datasource_types[int(datasource_type_index) - 1]
765
+ datasource_type = dt_keys[int(datasource_type_index) - 1]
757
766
  except Exception:
758
767
  datasource_type_index = -1
759
768
 
@@ -765,19 +774,29 @@ async def datasource_create(
765
774
  )
766
775
  return
767
776
 
768
- connection_required = datasource_type in ("Kafka", "S3", "GCS")
777
+ if datasource_type == "prompt":
778
+ click.echo(FeedbackManager.gray(message="\n» Creating .datasource file..."))
779
+ user_token = config.get("user_token")
780
+ if not user_token:
781
+ raise Exception("This action requires authentication. Run 'tb login' first.")
782
+ project_config = CLIConfig.get_project_config()
783
+ tb_client: TinyB = project_config.get_client(token=config.get("token"), host=config.get("host"))
784
+ await create_resources_from_prompt(tb_client, user_token, prompt, project)
785
+ click.echo(FeedbackManager.success(message="✓ .datasource created!"))
786
+ return
787
+
788
+ connection_required = datasource_type in ("kafka", "s3", "gcs")
769
789
 
770
790
  if connection_required:
771
- click.echo(FeedbackManager.gray(message="\n» Creating .datasource file..."))
772
- connection_type = datasource_type.lower()
791
+ click.echo(FeedbackManager.gray(message="\n» Creating .connection file..."))
773
792
 
774
793
  def get_connection_files():
775
794
  connection_files = []
776
- if connection_type == "kafka":
795
+ if datasource_type == "kafka":
777
796
  connection_files = project.get_kafka_connection_files()
778
- elif connection_type == "s3":
797
+ elif datasource_type == "s3":
779
798
  connection_files = project.get_s3_connection_files()
780
- elif connection_type == "gcs":
799
+ elif datasource_type == "gcs":
781
800
  connection_files = project.get_gcs_connection_files()
782
801
  return connection_files
783
802
 
@@ -785,21 +804,23 @@ async def datasource_create(
785
804
  connection_name = ""
786
805
  topics: List[str] = []
787
806
  if len(connection_files) == 0:
788
- click.echo(FeedbackManager.error(message=f"✗ No {datasource_type} connections found."))
807
+ click.echo(FeedbackManager.error(message=f"✗ No {datasource_types[datasource_type][0]} connections found."))
789
808
  if click.confirm(
790
- FeedbackManager.highlight(message=f"\n? Do you want to create a {datasource_type} connection? [Y/n]"),
809
+ FeedbackManager.highlight(
810
+ message=f"\n? Do you want to create a {datasource_types[datasource_type][0]} connection? [Y/n]"
811
+ ),
791
812
  show_default=False,
792
813
  default=True,
793
814
  ):
794
- if datasource_type != "Kafka":
815
+ if datasource_type != "kafka":
795
816
  click.echo(FeedbackManager.gray(message="\n» Creating .connection file..."))
796
- default_connection_name = f"{datasource_type.lower()}_{generate_short_id()}"
817
+ default_connection_name = f"{datasource_type}_{generate_short_id()}"
797
818
  connection_name = click.prompt(
798
819
  FeedbackManager.highlight(message=f"? Connection name [{default_connection_name}]"),
799
820
  show_default=False,
800
821
  default=default_connection_name,
801
822
  )
802
- if datasource_type == "Kafka":
823
+ if datasource_type == "kafka":
803
824
  (
804
825
  connection_name,
805
826
  bootstrap_servers,
@@ -811,7 +832,7 @@ async def datasource_create(
811
832
  security_protocol,
812
833
  topics,
813
834
  ) = await connection_create_kafka(ctx)
814
- elif datasource_type == "S3":
835
+ elif datasource_type == "s3":
815
836
  await generate_aws_iamrole_connection_file_with_secret(
816
837
  connection_name,
817
838
  service="s3",
@@ -820,21 +841,19 @@ async def datasource_create(
820
841
  folder=project.folder,
821
842
  with_default_secret=True,
822
843
  )
823
- elif datasource_type == "GCS":
844
+ elif datasource_type == "gcs":
824
845
  await generate_gcs_connection_file_with_secrets(
825
846
  connection_name,
826
847
  service="gcs",
827
848
  svc_account_creds="GCS_SERVICE_ACCOUNT_CREDENTIALS_JSON",
828
849
  folder=project.folder,
829
850
  )
830
- if datasource_type != "Kafka":
851
+ if datasource_type != "kafka":
831
852
  click.echo(FeedbackManager.info(message=f"/connections/{connection_name}.connection"))
832
853
  click.echo(FeedbackManager.success(message="✓ .connection created!"))
833
854
  connection_files = get_connection_files()
834
855
  else:
835
- click.echo(
836
- FeedbackManager.info(message=f"→ Run `tb connection create {datasource_type.lower()}` to add one.")
837
- )
856
+ click.echo(FeedbackManager.info(message=f"→ Run `tb connection create {datasource_type}` to add one."))
838
857
  return
839
858
 
840
859
  if not connection_file:
@@ -842,8 +861,9 @@ async def datasource_create(
842
861
  connection_path = Path(connection_file)
843
862
  connection = connection_path.stem
844
863
 
845
- if datasource_type == "Local file":
846
- click.echo(FeedbackManager.gray(message="\n» Creating .datasource file..."))
864
+ click.echo(FeedbackManager.gray(message="\n» Creating .datasource file..."))
865
+
866
+ if datasource_type == "local_file":
847
867
  if not file:
848
868
  file = click.prompt(FeedbackManager.highlight(message="? Path"))
849
869
  if file.startswith("~"):
@@ -863,8 +883,7 @@ async def datasource_create(
863
883
  show_default=False,
864
884
  )
865
885
 
866
- if datasource_type == "Remote URL":
867
- click.echo(FeedbackManager.gray(message="\n» Creating .datasource file..."))
886
+ if datasource_type == "remote_url":
868
887
  if not url:
869
888
  url = click.prompt(FeedbackManager.highlight(message="? URL"))
870
889
  format = url.split(".")[-1]
@@ -876,10 +895,7 @@ async def datasource_create(
876
895
  show_default=False,
877
896
  )
878
897
 
879
- if datasource_type == "Blank":
880
- click.echo(FeedbackManager.gray(message="\n» Creating .datasource file..."))
881
-
882
- if datasource_type not in ("Remote URL", "Local file"):
898
+ if datasource_type not in ("remote_url", "local_file"):
883
899
  default_name = f"ds_{generate_short_id()}"
884
900
  name = name or click.prompt(
885
901
  FeedbackManager.highlight(message=f"? Data source name [{default_name}]"),
@@ -887,13 +903,15 @@ async def datasource_create(
887
903
  show_default=False,
888
904
  )
889
905
 
890
- if datasource_type == "Kafka":
906
+ if datasource_type == "kafka":
891
907
  connections = await client.connections("kafka")
892
908
  kafka_connection_files = project.get_kafka_connection_files()
893
909
 
894
910
  # if we have no topics from before and no connections, we need to build the project
895
911
  if len(topics) == 0 and len(kafka_connection_files) != len(connections):
896
- click.echo(FeedbackManager.error(message="✗ Some Kafka connections are missing."))
912
+ click.echo(
913
+ FeedbackManager.error(message=f"✗ Some {datasource_types[datasource_type][0]} connections are missing.")
914
+ )
897
915
  if click.confirm(
898
916
  FeedbackManager.highlight(message="? Do you want to build your project before continue? [Y/n]"),
899
917
  show_default=False,
@@ -934,7 +952,7 @@ KAFKA_TOPIC {topic}
934
952
  KAFKA_GROUP_ID {group_id}
935
953
  """
936
954
 
937
- if datasource_type == "S3":
955
+ if datasource_type == "s3":
938
956
  if not connection:
939
957
  connections = await client.connections("s3")
940
958
  connection = next((c["name"] for c in connections if c["name"] == connection), connection)
@@ -944,7 +962,7 @@ IMPORT_BUCKET_URI "s3://my-bucket/*.csv"
944
962
  IMPORT_SCHEDULE "@auto"
945
963
  """
946
964
 
947
- if datasource_type == "GCS":
965
+ if datasource_type == "gcs":
948
966
  if not connection:
949
967
  connections = await client.connections("gcs")
950
968
  connection = next((c["name"] for c in connections if c["name"] == connection), connection)
@@ -964,6 +982,20 @@ IMPORT_SCHEDULE "@auto"
964
982
  ds_file.write_text(ds_content)
965
983
  click.echo(FeedbackManager.success(message="✓ .datasource created!"))
966
984
 
985
+ if wizard_mode:
986
+ last_tip_message = "\nTip: To skip the interactive prompts, pass flags to this command, e.g."
987
+ last_tip_command = ""
988
+ if datasource_type == "local_file":
989
+ last_tip_command = f"`tb datasource create --file {file} --name {name}`."
990
+ elif datasource_type == "remote_url":
991
+ last_tip_command = f"`tb datasource create --url {url} --name {name}`."
992
+ elif datasource_type == "blank":
993
+ last_tip_command = f"`tb datasource create --blank --name {name}`."
994
+ elif datasource_type in ("s3", "gcs", "kafka"):
995
+ last_tip_command = f"`tb datasource create --{datasource_type} --name {name} --connection {connection}`."
996
+
997
+ click.echo(FeedbackManager.gray(message=(f"{last_tip_message} {last_tip_command}")))
998
+
967
999
 
968
1000
  def generate_short_id():
969
1001
  return str(uuid.uuid4())[:4]
@@ -69,6 +69,10 @@ def gray_message(message: str) -> Callable[..., str]:
69
69
  return print_message(message, bcolors.CGREY)
70
70
 
71
71
 
72
+ def bold_message(message: str) -> Callable[..., str]:
73
+ return print_message(message, bcolors.BOLD)
74
+
75
+
72
76
  class FeedbackManager:
73
77
  error_exception = error_exception("{error}")
74
78
  simple_error_exception = simple_error_message("{error}")
@@ -1204,3 +1208,4 @@ STEP 3: ADD KEY TO SERVICE ACCOUNT
1204
1208
  gray = gray_message("{message}")
1205
1209
  warning = warning_message("{message}")
1206
1210
  build_result_error_title = print_message("\033[91m{message}", bcolors.BOLD)
1211
+ bold = bold_message("{message}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 0.0.1.dev220
3
+ Version: 0.0.1.dev222
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird
@@ -3,7 +3,7 @@ tinybird/context.py,sha256=FfqYfrGX_I7PKGTQo93utaKPDNVYWelg4Hsp3evX5wM,1291
3
3
  tinybird/datatypes.py,sha256=r4WCvspmrXTJHiPjjyOTiZyZl31FO3Ynkwq4LQsYm6E,11059
4
4
  tinybird/feedback_manager.py,sha256=1INQFfRfuMCb9lfB8KNf4r6qC2khW568hoHjtk-wshI,69305
5
5
  tinybird/git_settings.py,sha256=Sw_8rGmribEFJ4Z_6idrVytxpFYk7ez8ei0qHULzs3E,3934
6
- tinybird/prompts.py,sha256=6lr5EaSUzdh7dqOg2BFba8q8HKy3rfFG5SNw1rnAdtA,38656
6
+ tinybird/prompts.py,sha256=XScvI-IUOJ1gdXBdENUUCu13dHSepSnCliGXlvsKS4Q,38880
7
7
  tinybird/sql.py,sha256=BufnOgclQokDyihtuXesOwHBsebN6wRXIxO5wKRkOwE,48299
8
8
  tinybird/sql_template.py,sha256=WjsTBjpQLVBHGZbY2dZuhZUurFR-rbJ_KRRy5vx4Y5E,99967
9
9
  tinybird/sql_template_fmt.py,sha256=KUHdj5rYCYm_rKKdXYSJAE9vIyXUQLB0YSZnUXHeBlY,10196
@@ -17,7 +17,7 @@ tinybird/datafile/exceptions.py,sha256=8rw2umdZjtby85QbuRKFO5ETz_eRHwUY5l7eHsy1w
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=Tub058Oz-n2aVt35P5GpJu4UOrSf1cvZsXjKxAWsm10,247
20
+ tinybird/tb/__cli__.py,sha256=WyFlnks0sjbhifmcA4TRyMG2ASeWEJUqQhD97AfFN0g,247
21
21
  tinybird/tb/check_pypi.py,sha256=i3l2L8IajeB7sreikR7oPlYJki9MtS3c_M4crnmbByc,760
22
22
  tinybird/tb/cli.py,sha256=0xYk2Ip4vb3nNFbxfTdG3VoIgdRvUKVbUVU_mviErPA,1107
23
23
  tinybird/tb/client.py,sha256=FKj61vY9STPW03kfVcxYuY1_csI-kP-mc1ERQfqJtg8,56505
@@ -30,13 +30,13 @@ tinybird/tb/modules/config.py,sha256=VnzYVUo4q1RBEEMMce4_OCrKp4erhgkRPHElydVlKj0
30
30
  tinybird/tb/modules/connection.py,sha256=rdEsdcP-AqyHiW3KNoETGPeTjk7Wt3It6z_SnmInGcc,18648
31
31
  tinybird/tb/modules/copy.py,sha256=zHN1d5NA-MFsgbk2kKJq2P9qA8dNOnIsIa60QpVnSwc,4458
32
32
  tinybird/tb/modules/create.py,sha256=l3Q3QG8R-CXP-gj5rIXI3uD9tPBnQmzdklgkxt_ggNY,22106
33
- tinybird/tb/modules/datasource.py,sha256=jpe5-C-rZ5Dnitwo_t84OPqS_bV44Sz1y1u85-2djnQ,39362
33
+ tinybird/tb/modules/datasource.py,sha256=4a50A_qwB-3FUEUeB3ps6tUCJvn02rMUUwW-vHaMjTw,40846
34
34
  tinybird/tb/modules/deployment.py,sha256=ByXIgEvwxB49pJEKKj0EJIfORWyflCYr04k8961nBkA,28391
35
35
  tinybird/tb/modules/deprecations.py,sha256=rrszC1f_JJeJ8mUxGoCxckQTJFBCR8wREf4XXXN-PRc,4507
36
36
  tinybird/tb/modules/dev_server.py,sha256=57FCKuWpErwYUYgHspYDkLWEm9F4pbvVOtMrFXX1fVU,10129
37
37
  tinybird/tb/modules/endpoint.py,sha256=rC1CZiEZDMb5chByf4xZhv5PsfkoLeIVDScHQ-QcBsE,12072
38
38
  tinybird/tb/modules/exceptions.py,sha256=5jK91w1LPmtqIUfDpHe_Op5OxGz8-p1BPgtLREMIni0,5217
39
- tinybird/tb/modules/feedback_manager.py,sha256=DL_nRFO6akpApNdbGnTmqikEM-gI_eUkyX_nJOGEOo8,77292
39
+ tinybird/tb/modules/feedback_manager.py,sha256=Bw4xudrpVEb5x70JxtsxmvWkQfnWx_eKD2rTAOgjJvs,77433
40
40
  tinybird/tb/modules/info.py,sha256=NqSsoyzFqbtUEGH_tSowNOI_jSsNuixibln6-plsfOY,6810
41
41
  tinybird/tb/modules/infra.py,sha256=fve30Gj3mG9zbquGxS2e4ipcOYOxviWQCpNFfEzJN_Q,33195
42
42
  tinybird/tb/modules/job.py,sha256=AsUCRNzy7HG5oJ4fyk9NpIm5NtNJgBZSy8MtJdXBe5A,3167
@@ -82,8 +82,8 @@ tinybird/tb_cli_modules/config.py,sha256=IsgdtFRnUrkY8-Zo32lmk6O7u3bHie1QCxLwgp4
82
82
  tinybird/tb_cli_modules/exceptions.py,sha256=pmucP4kTF4irIt7dXiG-FcnI-o3mvDusPmch1L8RCWk,3367
83
83
  tinybird/tb_cli_modules/regions.py,sha256=QjsL5H6Kg-qr0aYVLrvb1STeJ5Sx_sjvbOYO0LrEGMk,166
84
84
  tinybird/tb_cli_modules/telemetry.py,sha256=Hh2Io8ZPROSunbOLuMvuIFU4TqwWPmQTqal4WS09K1A,10449
85
- tinybird-0.0.1.dev220.dist-info/METADATA,sha256=2cTr-wmJ-MMHiCt8oqOc45VR0WMwEDu5HE0kotkXWaQ,1682
86
- tinybird-0.0.1.dev220.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
87
- tinybird-0.0.1.dev220.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
88
- tinybird-0.0.1.dev220.dist-info/top_level.txt,sha256=VqqqEmkAy7UNaD8-V51FCoMMWXjLUlR0IstvK7tJYVY,54
89
- tinybird-0.0.1.dev220.dist-info/RECORD,,
85
+ tinybird-0.0.1.dev222.dist-info/METADATA,sha256=1kqEFMibxdfCNMu3CwE3QqoxtzhctpD7EvnRaC3b-rA,1682
86
+ tinybird-0.0.1.dev222.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
87
+ tinybird-0.0.1.dev222.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
88
+ tinybird-0.0.1.dev222.dist-info/top_level.txt,sha256=VqqqEmkAy7UNaD8-V51FCoMMWXjLUlR0IstvK7tJYVY,54
89
+ tinybird-0.0.1.dev222.dist-info/RECORD,,