tinybird 0.0.1.dev148__py3-none-any.whl → 0.0.1.dev149__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
@@ -401,7 +401,7 @@ Follow the instructions and generate the following response with no additional t
401
401
  def create_prompt(existing_resources: str, feedback: str = "", history: str = "") -> str:
402
402
  feedback_history = ""
403
403
  if feedback and history:
404
- feedback_history = f"""In case the <feedback> and <history> tags are present and not empty,
404
+ feedback_history = f"""In case the <feedback> and <history> tags are present and not empty,
405
405
  it means there was a previous attempt to generate the resources and the user provided feedback and history about previous responses.
406
406
  Use the following feedback and history to regenerate the response:
407
407
  Feedback to improve the response:
@@ -420,7 +420,9 @@ You are a Tinybird expert. You will be given a prompt to generate new or update
420
420
  {copy_pipe_instructions}
421
421
  {materialized_pipe_instructions}
422
422
  {connection_instructions}
423
- {connection_example}
423
+ {kafka_connection_example}
424
+ {gcs_connection_example}
425
+ {s3_connection_example}
424
426
 
425
427
  {feedback_history}
426
428
 
@@ -443,14 +445,16 @@ Use the following format to generate the response and do not wrap it in any othe
443
445
  copy_pipe_instructions=copy_pipe_instructions,
444
446
  materialized_pipe_instructions=materialized_pipe_instructions,
445
447
  connection_instructions=connection_instructions,
446
- connection_example=connection_example,
448
+ kafka_connection_example=kafka_connection_example,
449
+ gcs_connection_example=gcs_connection_example,
450
+ s3_connection_example=s3_connection_example,
447
451
  feedback_history=feedback_history,
448
452
  )
449
453
 
450
454
 
451
455
  def mock_prompt(rows: int, feedback: str = "") -> str:
452
456
  if feedback:
453
- feedback = f"""In case the <feedback> tag is present and not empty,
457
+ feedback = f"""In case the <feedback> tag is present and not empty,
454
458
  it means there was a previous attempt to generate the resources and the system provided feedback about the previous response.
455
459
  Use the following feedback to regenerate the response:
456
460
  <feedback>{feedback}</feedback>
@@ -515,7 +519,7 @@ SCHEMA >
515
519
  `customer_id` UInt64 `json:$.customer_id`,
516
520
  `order_date` DateTime `json:$.order_date`,
517
521
  `total_amount` Float64 `json:$.total_amount`,
518
- `items` Array(String) `json:$.items[:]` // This is an array field
522
+ `items` Array(String) `json:$.items[:]` // This is an array field
519
523
 
520
524
  ### Desired final output of the query:
521
525
  {{
@@ -680,19 +684,34 @@ connection_instructions = """
680
684
  - Content cannot be empty.
681
685
  - The connection names must be unique.
682
686
  - No indentation is allowed for property names
683
- - We only support kafka connections for now
687
+ - We support kafka, gcs and s3 connections for now
684
688
  </connection_file_instructions>
685
689
  """
686
690
 
687
- connection_example = """
688
- <connection_content>
691
+ kafka_connection_example = """
692
+ <kafka_connection_content>
689
693
  TYPE kafka
690
694
  KAFKA_BOOTSTRAP_SERVERS {{ tb_secret("PRODUCTION_KAFKA_SERVERS", "localhost:9092") }}
691
695
  KAFKA_SECURITY_PROTOCOL SASL_SSL
692
696
  KAFKA_SASL_MECHANISM PLAIN
693
697
  KAFKA_KEY {{ tb_secret("PRODUCTION_KAFKA_USERNAME", "") }}
694
698
  KAFKA_SECRET {{ tb_secret("PRODUCTION_KAFKA_PASSWORD", "") }}
695
- </connection_content>
699
+ </kafka_connection_content>
700
+ """
701
+
702
+ gcs_connection_example = """
703
+ <gcs_connection_content>
704
+ TYPE gcs
705
+ GCS_SERVICE_ACCOUNT_CREDENTIALS_JSON {{ tb_secret("PRODUCTION_GCS_SERVICE_ACCOUNT_CREDENTIALS_JSON", "") }}
706
+ </gcs_connection_content>
707
+ """
708
+
709
+ s3_connection_example = """
710
+ <s3_connection_content>
711
+ TYPE s3
712
+ S3_REGION {{ tb_secret("PRODUCTION_S3_REGION", "") }}
713
+ S3_ARN {{ tb_secret("PRODUCTION_S3_ARN", "") }}
714
+ </s3_connection_content>
696
715
  """
697
716
 
698
717
  datasource_instructions = """
@@ -703,6 +722,7 @@ datasource_instructions = """
703
722
  - Use MergeTree engine by default.
704
723
  - Use AggregatingMergeTree engine when the datasource is the target of a materialized pipe.
705
724
  - Use always json paths to define the schema. Example: `user_id` String `json:$.user_id`,
725
+ - If the datasource is using an S3 or GCS connection, they need to set IMPORT_CONNECTION_NAME, IMPORT_BUCKET_URI and IMPORT_SCHEDULE (GCS @on-demand only, S3 supports @auto too)
706
726
  </datasource_file_instructions>
707
727
  """
708
728
 
@@ -775,7 +795,7 @@ sql_instructions = """
775
795
  {{%if not defined(end_date)%}}
776
796
  AND now()
777
797
  {{%else%}}
778
- AND {{{{DateTime(end_date)}}}}
798
+ AND {{{{DateTime(end_date)}}}}
779
799
  {{%end%}}
780
800
  </valid_condition_without_now>
781
801
  - Parameters must not be quoted.
@@ -862,7 +882,9 @@ Follow these instructions when creating or updating .pipe files:
862
882
  {copy_pipe_instructions}
863
883
  {materialized_pipe_instructions}
864
884
  {connection_instructions}
865
- {connection_example}
885
+ {kafka_connection_example}
886
+ {gcs_connection_example}
887
+ {s3_connection_example}
866
888
  </pipe_file_instructions>
867
889
  <test_file_instructions>
868
890
  Follow these instructions when creating or updating .yaml files for tests:
@@ -884,7 +906,9 @@ Follow these instructions when evolving a datasource schema:
884
906
  test_instructions=test_instructions,
885
907
  deployment_instructions=deployment_instructions,
886
908
  connection_instructions=connection_instructions,
887
- connection_example=connection_example,
909
+ kafka_connection_example=kafka_connection_example,
910
+ gcs_connection_example=gcs_connection_example,
911
+ s3_connection_example=s3_connection_example,
888
912
  )
889
913
 
890
914
 
@@ -950,7 +974,7 @@ SCHEMA >
950
974
  `payload` String `json:$.payload`
951
975
 
952
976
  FORWARD_QUERY >
953
- select timestamp, toUUID(session_id) as session_id, action, version, payload
977
+ select timestamp, toUUID(session_id) as session_id, action, version, payload
954
978
  </forward_query_example>
955
979
  </deployment_instruction>
956
980
  """
@@ -968,7 +992,7 @@ Current README.md file:
968
992
  - If it is not present in the current readme, generate a new ## Tinybird section with the following content:
969
993
  - ### Overview section:
970
994
  - Explaining the purpose of the project.
971
- - ### Data sources section:
995
+ - ### Data sources section:
972
996
  - Explaining the purpose of each datasource.
973
997
  - Add a snippet of how to ingest data into each datasource like the following (where the payload example matches the datasource schema respecting non-nullable types):
974
998
  curl -X POST "{host}/v0/events?name=events" \
tinybird/tb/__cli__.py CHANGED
@@ -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__ = '0.0.1.dev148'
8
- __revision__ = '7b2789f'
7
+ __version__ = '0.0.1.dev149'
8
+ __revision__ = '2838b1f'
@@ -240,6 +240,11 @@ TYPE ENDPOINT
240
240
  pipes_paths = [
241
241
  Path(folder) / "endpoints" / f for f in os.listdir(Path(folder) / "endpoints") if f.endswith(".pipe")
242
242
  ]
243
+ connections_paths = [
244
+ Path(folder) / "connections" / f
245
+ for f in os.listdir(Path(folder) / "connections")
246
+ if f.endswith(".connection")
247
+ ]
243
248
  resources_xml = "\n".join(
244
249
  [
245
250
  f"<resource><type>{resource_type}</type><name>{resource_name}</name><content>{resource_content}</content></resource>"
@@ -254,6 +259,14 @@ TYPE ENDPOINT
254
259
  )
255
260
  for pipe in pipes_paths
256
261
  ]
262
+ + [
263
+ (
264
+ "connection",
265
+ conn.stem,
266
+ conn.read_text(),
267
+ )
268
+ for conn in connections_paths
269
+ ]
257
270
  ]
258
271
  )
259
272
  llm = LLM(user_token=user_token, host=tb_client.host)
@@ -846,6 +846,15 @@ def _parse_table_structure(schema: str) -> List[Dict[str, Any]]:
846
846
  lineno=line,
847
847
  pos=pos,
848
848
  )
849
+ if detected_type in ("Int", "UInt"):
850
+ t = detected_type
851
+ raise SchemaSyntaxError(
852
+ message=f"Precision is mandatory for {t} types",
853
+ hint=f"Hint: use one of {t}8, {t}16, {t}32, {t}64, {t}128, {t}256",
854
+ lineno=line,
855
+ pos=pos - len(t),
856
+ )
857
+
849
858
  try:
850
859
  # Imported in the body to be compatible with the CLI
851
860
  from chtoolset.query import check_compatible_types
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 0.0.1.dev148
3
+ Version: 0.0.1.dev149
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/cli/introduction.html
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=a_ZhFX2zcB7vRknIcmHKMdQbb0c7TqlTBQ_5hPuWh88,69267
5
5
  tinybird/git_settings.py,sha256=Sw_8rGmribEFJ4Z_6idrVytxpFYk7ez8ei0qHULzs3E,3934
6
- tinybird/prompts.py,sha256=6J-dE0gOSOaIwdEwJUhEQS1Ztllz_qZnpnrv-tDoJWA,35511
6
+ tinybird/prompts.py,sha256=yLXzHB7_P0zjriIvI9UsfnIRwmcwLSEA1tcJMzYJqjw,36456
7
7
  tinybird/sql.py,sha256=C_B81wwv3BsqyXGhF5oTk9DcTUkrp7NwIFqSzd3Dmjc,47854
8
8
  tinybird/sql_template.py,sha256=mK0yeRFctbXTAu0VNMjIzoFBJoh9PoniAVgEatA5SG4,99832
9
9
  tinybird/sql_template_fmt.py,sha256=KUHdj5rYCYm_rKKdXYSJAE9vIyXUQLB0YSZnUXHeBlY,10196
@@ -12,7 +12,7 @@ tinybird/syncasync.py,sha256=IPnOx6lMbf9SNddN1eBtssg8vCLHMt76SuZ6YNYm-Yk,27761
12
12
  tinybird/tornado_template.py,sha256=jjNVDMnkYFWXflmT8KU_Ssbo5vR8KQq3EJMk5vYgXRw,41959
13
13
  tinybird/ch_utils/constants.py,sha256=aYvg2C_WxYWsnqPdZB1ZFoIr8ZY-XjUXYyHKE9Ansj0,3890
14
14
  tinybird/ch_utils/engine.py,sha256=BZuPM7MFS7vaEKK5tOMR2bwSAgJudPrJt27uVEwZmTY,40512
15
- tinybird/tb/__cli__.py,sha256=ND-paC6OJCufE_OWkvnADMob08wWCEmSeglAIwgaUro,252
15
+ tinybird/tb/__cli__.py,sha256=2G-RDbE_4TcARe_SbLxYFGFpjAsTqiJonlzf8czYWCI,252
16
16
  tinybird/tb/check_pypi.py,sha256=rW4QmDRbtgKdUUwJCnBkVjmTjZSZGN-XgZhx7vMkC0w,1009
17
17
  tinybird/tb/cli.py,sha256=uPV6pvi4aYVfaiGs0DQO-eoi1g9dHlrgvhutkXkdJko,1075
18
18
  tinybird/tb/client.py,sha256=aaPKq5C77e72kR7IMv9WrvnvNki8mKMOTi9EsCp0eUc,55962
@@ -25,7 +25,7 @@ tinybird/tb/modules/common.py,sha256=WzF_zRtAl3FKqbzK6yi_IjeeGIjQNu6SKnP-PX-o3Kk
25
25
  tinybird/tb/modules/config.py,sha256=ziqW_t_mRVvWOd85VoB4vKyvgMkEfpXDf9H4v38p2xc,11422
26
26
  tinybird/tb/modules/connection.py,sha256=7oOR7x4PhBcm1ETFFCH2YJ_3oeGXjAbmx1cnZX9_L70,9014
27
27
  tinybird/tb/modules/copy.py,sha256=2Mm4FWKehOG7CoOhiF1m9UZJgJn0W1_cMolqju8ONYg,5805
28
- tinybird/tb/modules/create.py,sha256=lj7vugRfTo6jNb02sJ9wmV6Y0ASGEbxVAd1FrmaVr58,16943
28
+ tinybird/tb/modules/create.py,sha256=H06HmD-4CCYVMvM6doUvvKF3wU_6bBjefkwXW4ZVhE8,17378
29
29
  tinybird/tb/modules/datasource.py,sha256=V314rkpdVxVMjsp5qcSCTqDlmp4Vu--qM07BoWh-aqs,17783
30
30
  tinybird/tb/modules/deployment.py,sha256=T0lwhAT8FwZZcRnA-JDMfPUrj5MOXcQ8blxYIK2igbc,24363
31
31
  tinybird/tb/modules/deprecations.py,sha256=kugrWKWLnUL0qHXghObmzEvNIPs5F5O-kTXtYHjaSrI,3632
@@ -59,7 +59,7 @@ tinybird/tb/modules/datafile/build.py,sha256=d_h3pRFDPFrDKGhpFx2iejY25GuB2k8yfNo
59
59
  tinybird/tb/modules/datafile/build_common.py,sha256=LU24kAQmxDJIyoIapDaYG-SU3P4FrMG9UBf8m9PgVSI,4565
60
60
  tinybird/tb/modules/datafile/build_datasource.py,sha256=nXEQ0qHdq2ai7jJTv8H2d7eeDPBYzLn8VY7zMtOYb8M,17382
61
61
  tinybird/tb/modules/datafile/build_pipe.py,sha256=6Cwjf3BKEF3-oQ9PipsQfK-Z43nSwtA4qJAUoysI7Uc,11385
62
- tinybird/tb/modules/datafile/common.py,sha256=NIqXpsj7u8uaeSKcUZM-85Kxg35pd08DVAdbVuHmvTU,89400
62
+ tinybird/tb/modules/datafile/common.py,sha256=1xM8R2NVmk8uQpU910Iqp_YGM1SHYoXaLZgjBYIJl54,89771
63
63
  tinybird/tb/modules/datafile/diff.py,sha256=MTmj53RYjER4neLgWVjabn-FKVFgh8h8uYiBo55lFQg,6757
64
64
  tinybird/tb/modules/datafile/exceptions.py,sha256=8rw2umdZjtby85QbuRKFO5ETz_eRHwUY5l7eHsy1wnI,556
65
65
  tinybird/tb/modules/datafile/fixture.py,sha256=DrRWivcvo_1rn7LlVUnHcXccdgx9yVj63mzBkUwCzk8,1420
@@ -79,8 +79,8 @@ tinybird/tb_cli_modules/config.py,sha256=IsgdtFRnUrkY8-Zo32lmk6O7u3bHie1QCxLwgp4
79
79
  tinybird/tb_cli_modules/exceptions.py,sha256=pmucP4kTF4irIt7dXiG-FcnI-o3mvDusPmch1L8RCWk,3367
80
80
  tinybird/tb_cli_modules/regions.py,sha256=QjsL5H6Kg-qr0aYVLrvb1STeJ5Sx_sjvbOYO0LrEGMk,166
81
81
  tinybird/tb_cli_modules/telemetry.py,sha256=Hh2Io8ZPROSunbOLuMvuIFU4TqwWPmQTqal4WS09K1A,10449
82
- tinybird-0.0.1.dev148.dist-info/METADATA,sha256=a78Hx_MhAQknWEIA9ss3ykmRIw40G6o3cXiu2bGbXSE,1612
83
- tinybird-0.0.1.dev148.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
84
- tinybird-0.0.1.dev148.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
85
- tinybird-0.0.1.dev148.dist-info/top_level.txt,sha256=VqqqEmkAy7UNaD8-V51FCoMMWXjLUlR0IstvK7tJYVY,54
86
- tinybird-0.0.1.dev148.dist-info/RECORD,,
82
+ tinybird-0.0.1.dev149.dist-info/METADATA,sha256=pdkjsJVql6s7oNV86BGCBFOVxFzX3VDviMMeFmiq9cI,1612
83
+ tinybird-0.0.1.dev149.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
84
+ tinybird-0.0.1.dev149.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
85
+ tinybird-0.0.1.dev149.dist-info/top_level.txt,sha256=VqqqEmkAy7UNaD8-V51FCoMMWXjLUlR0IstvK7tJYVY,54
86
+ tinybird-0.0.1.dev149.dist-info/RECORD,,