tinybird 0.0.1.dev22__py3-none-any.whl → 0.0.1.dev23__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/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.dev22'
8
- __revision__ = 'fad51ec'
7
+ __version__ = '0.0.1.dev23'
8
+ __revision__ = '944a540'
@@ -120,7 +120,7 @@ def build(
120
120
  click.echo(FeedbackManager.success(message=f"\n✓ Build completed in {elapsed_time:.1f}s\n"))
121
121
  ok = True
122
122
  except Exception as e:
123
- click.echo(FeedbackManager.error(message=str(e)))
123
+ click.echo(FeedbackManager.error_exception(error=e))
124
124
  ok = False
125
125
  return ok
126
126
 
@@ -529,6 +529,29 @@ async def check_user_token(ctx: Context, token: str):
529
529
  )
530
530
 
531
531
 
532
+ async def check_user_token_with_client(client: TinyB, token: str):
533
+ try:
534
+ user_client: TinyB = deepcopy(client)
535
+ user_client.token = token
536
+
537
+ is_authenticated = await user_client.check_auth_login()
538
+ except Exception as e:
539
+ raise CLIWorkspaceException(FeedbackManager.error_exception(error=str(e)))
540
+
541
+ if not is_authenticated.get("is_valid", False):
542
+ raise CLIWorkspaceException(
543
+ FeedbackManager.error_exception(
544
+ error='Invalid token. Please, be sure you are using the "user token" instead of the "admin your@email" token.'
545
+ )
546
+ )
547
+ if is_authenticated.get("is_valid") and not is_authenticated.get("is_user", False):
548
+ raise CLIWorkspaceException(
549
+ FeedbackManager.error_exception(
550
+ error='Invalid user authentication. Please, be sure you are using the "user token" instead of the "admin your@email" token.'
551
+ )
552
+ )
553
+
554
+
532
555
  async def get_available_starterkits(ctx: Context) -> List[Dict[str, Any]]:
533
556
  ctx_dict = ctx.ensure_object(dict)
534
557
  available_starterkits = ctx_dict.get("available_starterkits", None)
@@ -321,12 +321,8 @@ class CLIConfig:
321
321
  The data is cached between calls, given the same `working_dir`.
322
322
  """
323
323
  working_dir = working_dir or os.getcwd()
324
- result = CLIConfig._projects.get(working_dir)
325
- if not result:
326
- path: str = os.path.join(working_dir, ".tinyb")
327
- result = CLIConfig(path, parent=CLIConfig.get_global_config())
328
- CLIConfig._projects[working_dir] = result
329
- return result
324
+ path: str = os.path.join(working_dir, ".tinyb")
325
+ return CLIConfig(path, parent=CLIConfig.get_global_config())
330
326
 
331
327
  @staticmethod
332
328
  def get_llm_config(working_dir: Optional[str] = None) -> Dict[str, Any]:
@@ -9,7 +9,7 @@ import requests
9
9
  from tinybird.client import TinyB
10
10
  from tinybird.tb.modules.cicd import init_cicd
11
11
  from tinybird.tb.modules.cli import cli
12
- from tinybird.tb.modules.common import _generate_datafile, check_user_token, coro, generate_datafile
12
+ from tinybird.tb.modules.common import _generate_datafile, check_user_token_with_client, coro, generate_datafile
13
13
  from tinybird.tb.modules.config import CLIConfig
14
14
  from tinybird.tb.modules.datafile.fixture import build_fixture_name, persist_fixture
15
15
  from tinybird.tb.modules.exceptions import CLIException
@@ -37,7 +37,7 @@ from tinybird.tb.modules.llm import LLM
37
37
  )
38
38
  @click.option(
39
39
  "--folder",
40
- default=None,
40
+ default=".",
41
41
  type=click.Path(exists=True, file_okay=False),
42
42
  help="Folder where datafiles will be placed",
43
43
  )
@@ -56,21 +56,24 @@ async def create(
56
56
  folder = folder or getcwd()
57
57
  try:
58
58
  config = CLIConfig.get_project_config(folder)
59
+ tb_client = config.get_client()
59
60
  user_token: Optional[str] = None
60
-
61
61
  if prompt:
62
62
  try:
63
63
  user_token = config.get_user_token()
64
64
  if not user_token:
65
65
  raise CLIException("No user token found")
66
- await check_user_token(ctx, token=user_token)
67
- except Exception:
68
- click.echo(FeedbackManager.error(message="This action requires authentication. Run 'tb login' first."))
66
+ await check_user_token_with_client(tb_client, token=user_token)
67
+ except Exception as e:
68
+ click.echo(
69
+ FeedbackManager.error(
70
+ message=f"This action requires authentication. Run 'tb login' first. Error: {e}"
71
+ )
72
+ )
69
73
  return
70
-
71
- tb_client = config.get_client()
74
+ local_client: TinyB = ctx.ensure_object(dict)["client"]
72
75
  click.echo(FeedbackManager.gray(message="Creating new project structure..."))
73
- await project_create(tb_client, user_token, data, prompt, folder)
76
+ await project_create(local_client, user_token, data, prompt, folder)
74
77
  click.echo(FeedbackManager.success(message="✓ Scaffolding completed!\n"))
75
78
 
76
79
  click.echo(FeedbackManager.gray(message="\nCreating CI/CD files for GitHub and GitLab..."))
@@ -156,7 +159,7 @@ async def create(
156
159
  has_json_path = "`json:" in datasource_content
157
160
  if has_json_path:
158
161
  sql = await llm.generate_sql_sample_data(schema=datasource_content, rows=rows, prompt=prompt)
159
- result = await tb_client.query(f"{sql} FORMAT JSON")
162
+ result = await local_client.query(f"{sql} FORMAT JSON")
160
163
  data = result.get("data", [])
161
164
  fixture_name = build_fixture_name(
162
165
  datasource_path.absolute().as_posix(), datasource_name, datasource_content
@@ -15,7 +15,6 @@ from tinybird.client import TinyB
15
15
  from tinybird.sql import parse_table_structure, schema_to_sql_columns
16
16
  from tinybird.sql_template import get_used_tables_in_template, render_sql_template
17
17
  from tinybird.tb.modules.common import get_ca_pem_content
18
- from tinybird.tb.modules.config import CLIConfig
19
18
  from tinybird.tb.modules.datafile.build_common import update_tags_in_resource
20
19
  from tinybird.tb.modules.datafile.build_datasource import is_datasource, new_ds
21
20
  from tinybird.tb.modules.datafile.build_pipe import (
@@ -45,6 +44,7 @@ from tinybird.tb.modules.datafile.exceptions import AlreadyExistsException, Incl
45
44
  from tinybird.tb.modules.datafile.parse_datasource import parse_datasource
46
45
  from tinybird.tb.modules.datafile.parse_pipe import parse_pipe
47
46
  from tinybird.tb.modules.feedback_manager import FeedbackManager
47
+ from tinybird.tb.modules.local_common import get_tinybird_local_config
48
48
 
49
49
 
50
50
  async def folder_build(
@@ -58,7 +58,7 @@ async def folder_build(
58
58
  local_ws: Optional[Dict[str, Any]] = None,
59
59
  watch: bool = False,
60
60
  ):
61
- config = CLIConfig.get_project_config()
61
+ config = await get_tinybird_local_config(folder)
62
62
  build = True
63
63
  dry_run = False
64
64
  force = True
@@ -624,8 +624,17 @@ def is_endpoint_with_no_dependencies(
624
624
 
625
625
 
626
626
  def is_endpoint(resource: Optional[Dict[str, Any]]) -> bool:
627
- if resource and len(resource.get("tokens", [])) != 0 and resource.get("resource") == "pipes":
627
+ if not resource:
628
+ return False
629
+ if resource.get("resource") != "pipes":
630
+ return False
631
+
632
+ if len(resource.get("tokens", [])) != 0:
628
633
  return True
634
+
635
+ if any(node.get("params", {}).get("type", None) == "endpoint" for node in resource.get("nodes", [])):
636
+ return True
637
+
629
638
  return False
630
639
 
631
640
 
@@ -1664,11 +1664,10 @@ def find_file_by_name(
1664
1664
  if os.path.isfile(os.path.join(folder, pipe)):
1665
1665
  return pipe, None
1666
1666
 
1667
- if os.path.isfile(f / "endpoints" / pipe):
1668
- return pipe, None
1669
-
1670
- if os.path.isfile(f / "pipes" / pipe):
1671
- return pipe, None
1667
+ pipe_paths = ["endpoints", "materializations", "sinks", "copies", "playgrounds", "pipes"]
1668
+ for pipe_path in pipe_paths:
1669
+ if os.path.isfile(f / pipe_path / pipe):
1670
+ return pipe, None
1672
1671
 
1673
1672
  token = name + ".token"
1674
1673
  if os.path.isfile(f / "tokens" / token):
@@ -16,7 +16,12 @@ TB_LOCAL_HOST = f"http://localhost:{TB_LOCAL_PORT}"
16
16
 
17
17
  async def get_tinybird_local_client(path: Optional[str] = None) -> TinyB:
18
18
  """Get a Tinybird client connected to the local environment."""
19
- config = CLIConfig.get_project_config()
19
+ config = await get_tinybird_local_config(path)
20
+ return config.get_client(host=TB_LOCAL_HOST)
21
+
22
+
23
+ async def get_tinybird_local_config(path: Optional[str] = None) -> CLIConfig:
24
+ config = CLIConfig.get_project_config(path)
20
25
  try:
21
26
  # ruff: noqa: ASYNC210
22
27
  tokens = requests.get(f"{TB_LOCAL_HOST}/tokens").json()
@@ -52,4 +57,4 @@ async def get_tinybird_local_client(path: Optional[str] = None) -> TinyB:
52
57
  config.set_token_for_host(TB_LOCAL_HOST, default_token)
53
58
 
54
59
  config.set_user_token(user_token)
55
- return config.get_client(host=TB_LOCAL_HOST)
60
+ return config
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
  import click
6
6
 
7
7
  from tinybird.tb.modules.cli import cli
8
- from tinybird.tb.modules.common import CLIException, check_user_token, coro
8
+ from tinybird.tb.modules.common import CLIException, check_user_token_with_client, coro
9
9
  from tinybird.tb.modules.config import CLIConfig
10
10
  from tinybird.tb.modules.datafile.fixture import build_fixture_name, persist_fixture
11
11
  from tinybird.tb.modules.feedback_manager import FeedbackManager
@@ -55,11 +55,11 @@ async def mock(ctx: click.Context, datasource: str, rows: int, prompt: str, fold
55
55
  try:
56
56
  if not user_token:
57
57
  raise CLIException("No user token found")
58
- await check_user_token(ctx, token=user_token)
58
+ await check_user_token_with_client(user_client, token=user_token)
59
59
  except Exception:
60
60
  click.echo(FeedbackManager.error(message="This action requires authentication. Run 'tb login' first."))
61
61
  return
62
-
62
+ user_client.token = user_token
63
63
  llm = LLM(user_token=user_token, client=user_client)
64
64
  tb_client = await get_tinybird_local_client(os.path.abspath(folder))
65
65
  sql = await llm.generate_sql_sample_data(datasource_content, rows=rows, prompt=prompt)
@@ -223,6 +223,16 @@ async def test_run(name: Tuple[str, ...], folder: str) -> None:
223
223
  except Exception as e:
224
224
  click.echo(FeedbackManager.error(message=f"✗ {test_file_path.name} - {test['name']}"))
225
225
  click.echo(FeedbackManager.error(message=f"Output and expected output are different: \n{e}"))
226
+ return False
227
+ return True
226
228
 
229
+ tests_failed = False
227
230
  for test_file in file_list:
228
- await run_test(test_file)
231
+ if not await run_test(test_file):
232
+ tests_failed = True
233
+
234
+ if tests_failed:
235
+ click.echo(FeedbackManager.error(message="✗ Some tests failed"))
236
+ exit(1)
237
+ else:
238
+ click.echo(FeedbackManager.success(message="✓ All tests passed"))
@@ -1,9 +1,10 @@
1
1
  import asyncio
2
+ import os
2
3
  import time
3
- from typing import Any, Callable, List
4
+ from typing import Any, Callable, List, Optional, Union
4
5
 
5
6
  import click
6
- from watchdog.events import FileSystemEventHandler
7
+ from watchdog.events import DirMovedEvent, FileMovedEvent, FileSystemEventHandler
7
8
  from watchdog.observers import Observer
8
9
 
9
10
  from tinybird.tb.modules.feedback_manager import FeedbackManager
@@ -12,21 +13,60 @@ from tinybird.tb.modules.shell import Shell
12
13
 
13
14
  class FileChangeHandler(FileSystemEventHandler):
14
15
  def __init__(self, filenames: List[str], process: Callable[[List[str]], None], build_ok: bool):
15
- self.filenames = filenames
16
+ self.unprocessed_filenames = [os.path.abspath(f) for f in filenames]
16
17
  self.process = process
17
18
  self.build_ok = build_ok
18
19
 
20
+ @property
21
+ def filenames(self) -> List[str]:
22
+ return [f for f in self.unprocessed_filenames if os.path.exists(f)]
23
+
24
+ def should_process(self, event: Any) -> Optional[str]:
25
+ if event.is_directory:
26
+ return False
27
+
28
+ def should_process_path(path: str) -> bool:
29
+ if not os.path.exists(path):
30
+ return False
31
+ is_vendor = "vendor/" in path
32
+ if is_vendor:
33
+ return False
34
+ return any(path.endswith(ext) for ext in [".datasource", ".pipe", ".ndjson"])
35
+
36
+ if should_process_path(event.src_path):
37
+ return event.src_path
38
+
39
+ if should_process_path(event.dest_path):
40
+ return event.dest_path
41
+
42
+ return None
43
+
19
44
  def on_modified(self, event: Any) -> None:
20
- is_not_vendor = "vendor/" not in event.src_path
21
- if (
22
- is_not_vendor
23
- and not event.is_directory
24
- and any(event.src_path.endswith(ext) for ext in [".datasource", ".pipe", ".ndjson"])
25
- ):
26
- filename = event.src_path.split("/")[-1]
45
+ if path := self.should_process(event):
46
+ filename = path.split("/")[-1]
27
47
  click.echo(FeedbackManager.highlight(message=f"\n\n⟲ Changes detected in {filename}\n"))
28
48
  try:
29
- to_process = [event.src_path] if self.build_ok else self.filenames
49
+ to_process = [path] if self.build_ok else self.filenames
50
+ self.process(to_process)
51
+ self.build_ok = True
52
+ except Exception as e:
53
+ click.echo(FeedbackManager.error_exception(error=e))
54
+
55
+ def on_moved(self, event: Union[DirMovedEvent, FileMovedEvent]) -> None:
56
+ if path := self.should_process(event):
57
+ is_new_file = False
58
+ if path not in self.unprocessed_filenames:
59
+ is_new_file = True
60
+ self.unprocessed_filenames.append(path)
61
+
62
+ filename = path.split("/")[-1]
63
+ if is_new_file:
64
+ click.echo(FeedbackManager.highlight(message=f"\n\n⟲ New file detected: {filename}\n"))
65
+ else:
66
+ click.echo(FeedbackManager.highlight(message=f"\n\n⟲ Changes detected in {filename}\n"))
67
+ try:
68
+ should_rebuild_all = is_new_file or not self.build_ok
69
+ to_process = self.filenames if should_rebuild_all else [path]
30
70
  self.process(to_process)
31
71
  self.build_ok = True
32
72
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tinybird
3
- Version: 0.0.1.dev22
3
+ Version: 0.0.1.dev23
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/cli/introduction.html
6
6
  Author: Tinybird
@@ -15,16 +15,16 @@ tinybird/syncasync.py,sha256=fAvq0qkRgqXqXMKwbY2iJNYqLT_r6mDsh1MRpGKrdRU,27763
15
15
  tinybird/tornado_template.py,sha256=o2HguxrL1Evnt8o3IvrsI8Zm6JtRQ3zhLJKf1XyR3SQ,41965
16
16
  tinybird/ch_utils/constants.py,sha256=aYvg2C_WxYWsnqPdZB1ZFoIr8ZY-XjUXYyHKE9Ansj0,3890
17
17
  tinybird/ch_utils/engine.py,sha256=OXkBhlzGjZotjD0vaT-rFIbSGV4tpiHxE8qO_ip0SyQ,40454
18
- tinybird/tb/__cli__.py,sha256=X2PDOP_pElDefrfQdab_-Df296RDkCK0nKLzdihDVJk,251
18
+ tinybird/tb/__cli__.py,sha256=n67V9XZZ9m6k1a6vYTgTXBTttViJ-eQl3mAVAP32-6I,251
19
19
  tinybird/tb/cli.py,sha256=onCxcKvTV4RuokC5V3t82OXWAIwgU6pMWs8rpWOUi_o,815
20
20
  tinybird/tb/modules/auth.py,sha256=EzRWFmwRkXNhUmRaruEVFLdkbUg8xMSix0cAWl5D4Jg,9029
21
- tinybird/tb/modules/build.py,sha256=qJsmJCphanQitSnv86dqeoThM7mOg9Yg9JJLQjQ56ws,7074
21
+ tinybird/tb/modules/build.py,sha256=XQHivOYRoMYJJ2VeiGsGueuUtCwFF4OR54rZikvGshY,7077
22
22
  tinybird/tb/modules/cicd.py,sha256=SjCyvvy0WUnsjFs2biwwXvcf0Ddpmghhd8-SnMyfsRM,5355
23
23
  tinybird/tb/modules/cli.py,sha256=rHfc93DFFSQfWrAX-JBFrcZF43ttk7lYtYTBTn9TdMU,20004
24
- tinybird/tb/modules/common.py,sha256=shaF6GIl2L9e3Rm8aFsIIollSNSBsb2ozBklpnsmRTc,70560
25
- tinybird/tb/modules/config.py,sha256=ri4Gwyzqol6-NofTjHnWquuDzJOjHbkaAnboO8JNENY,11499
24
+ tinybird/tb/modules/common.py,sha256=h6s77ICywJqOXEaTrUEhIyIZTtt3Vy-WUbVqzOsrUv0,71514
25
+ tinybird/tb/modules/config.py,sha256=N8hW7R1JnsdusSlqxHbpq1eCRd5SxasIAQLIgPobqac,11336
26
26
  tinybird/tb/modules/connection.py,sha256=FhDM-OAnLN2epbO2YonpjJQhHqBjyuanBsZmKlDXrqg,28679
27
- tinybird/tb/modules/create.py,sha256=kHmHoPIXh7V1opRzKKDm0q4UbZ6rz9tJwWMsUroA3I8,10371
27
+ tinybird/tb/modules/create.py,sha256=l-o65hXMI7WCAWA7s192dyqWIwUmCaeyjjzSFYPd4gg,10569
28
28
  tinybird/tb/modules/datasource.py,sha256=3ySFOTXVnuqwQQNJBYhD8Sq41S2BJO2ymZRsFmEvHqY,32899
29
29
  tinybird/tb/modules/exceptions.py,sha256=4A2sSjCEqKUMqpP3WI00zouCWW4uLaghXXLZBSw04mY,3363
30
30
  tinybird/tb/modules/feedback_manager.py,sha256=a76KSrIdtNT5cs56jMYUfpqoXMwEPq_SErRGlX0i4hc,68384
@@ -32,25 +32,25 @@ tinybird/tb/modules/fmt.py,sha256=poh6_cwVGSf-sBu6LKWuO2TANL_J8Sgm25sPpwxa3Aw,35
32
32
  tinybird/tb/modules/job.py,sha256=956Pj8BEEsiD2GZsV9RKKVM3I_CveOLgS82lykO5ukk,2963
33
33
  tinybird/tb/modules/llm.py,sha256=9oJzI213eFv68Ttcfl3XNgEetaxfr6m56s2-IyBhNZ8,2713
34
34
  tinybird/tb/modules/local.py,sha256=n8L1tH0LlCwGEM7K_1jHeCRdqjtW9BbpCIibI4IgeaM,5253
35
- tinybird/tb/modules/local_common.py,sha256=oemeKBCdEkNHXuGv1p6I9vhjkSXvqDsV5kT-rPN3mvk,2145
35
+ tinybird/tb/modules/local_common.py,sha256=fRHJrEix19lAOE4EpzRhWBJH8FUk7hCCvynP0Icf7Ww,2298
36
36
  tinybird/tb/modules/login.py,sha256=KYGpM35fsjIVkp04Xm1kHvlEOXysRSvLfBUNTxNx26A,6044
37
- tinybird/tb/modules/mock.py,sha256=BbDe60Qdlxg5-WewxFYRPETNBExj1qqBn5Ngz5T8G2Q,3231
37
+ tinybird/tb/modules/mock.py,sha256=XBD3PGRY_eKXZxw3_OXK6LizM_V_Ov38vppxhCfk7o4,3301
38
38
  tinybird/tb/modules/pipe.py,sha256=eYmMBiSj1Ur_hXUs74YZ9mCSAyiICDmkuKuTemlxPUY,27018
39
39
  tinybird/tb/modules/regions.py,sha256=QjsL5H6Kg-qr0aYVLrvb1STeJ5Sx_sjvbOYO0LrEGMk,166
40
40
  tinybird/tb/modules/shell.py,sha256=OfFQ4lx3v_XSTr5cm_mTDG6CLc3zFdikM2pOamifG84,13469
41
41
  tinybird/tb/modules/table.py,sha256=4XrtjM-N0zfNtxVkbvLDQQazno1EPXnxTyo7llivfXk,11035
42
42
  tinybird/tb/modules/tag.py,sha256=anPmMUBc-TbFovlpFi8GPkKA18y7Y0GczMsMms5TZsU,3502
43
43
  tinybird/tb/modules/telemetry.py,sha256=iEGnMuCuNhvF6ln__j6X9MSTwL_0Hm-GgFHHHvhfknk,10466
44
- tinybird/tb/modules/test.py,sha256=loB9lNbtHuHcF9TwBJJLEkSyQakxnyUTHmCFYVsMnDA,8833
44
+ tinybird/tb/modules/test.py,sha256=RSqN4LRlvR89SKolo5hatdiw7nUojIaY67YzomAXGQ0,9146
45
45
  tinybird/tb/modules/token.py,sha256=AePr-QMv_vtWwZDWQ92Zp0kPrCjze61i4npiPhoLMZg,12717
46
- tinybird/tb/modules/watch.py,sha256=xCIUvqTgeb2s63CYw26czgUGV3zzJpdmuyHGH2TLp1E,2349
46
+ tinybird/tb/modules/watch.py,sha256=fHRMm3iqHdK-wQNSwWxroJjD7fbWuEbz8NLOqBdtN1Y,3931
47
47
  tinybird/tb/modules/workspace.py,sha256=6icAgnTvfL3d1kx4L1Z1cGXCD_2Yx0fNRjbZHNxRbYc,10927
48
48
  tinybird/tb/modules/workspace_members.py,sha256=Ai6iCOzXX1zQ8q9iXIFSFHsBJlT-8Q28DaG5Ie-UweY,8726
49
- tinybird/tb/modules/datafile/build.py,sha256=i8UTYzB1_vWOJrmule_655FLEBj6sZzyiffQg-HsPJ4,56459
49
+ tinybird/tb/modules/datafile/build.py,sha256=-hw5iP7uMVi_lLQ51ihO-UooJKZ_fRzwKEbGuXRpEZk,56490
50
50
  tinybird/tb/modules/datafile/build_common.py,sha256=IXl-Z51zUi1dypV7meNenX0iu2UmowNeqgG6WHyMHlk,4562
51
51
  tinybird/tb/modules/datafile/build_datasource.py,sha256=4aP8_DYCRGghXntZSeWDNJxjps1QRVa7WHoYCzQwQts,17355
52
- tinybird/tb/modules/datafile/build_pipe.py,sha256=iu6_1eNEI5f2wm7AfDhLyMCwsqBtrAwkP_1yL4XTHOs,27659
53
- tinybird/tb/modules/datafile/common.py,sha256=yt1C_4ZtWokAyUtR2qYZ6tBCtH7EJFMbehpJ6FeHHZE,75652
52
+ tinybird/tb/modules/datafile/build_pipe.py,sha256=n6jjfBaDl014-jxM5gI9XjUb0XCmgEVoAoAuy_Br8nw,27842
53
+ tinybird/tb/modules/datafile/common.py,sha256=qHxMGEaTcbxhPylq5FHWjonNt_JH5gZbdyCRiZ2FZjI,75715
54
54
  tinybird/tb/modules/datafile/diff.py,sha256=-0J7PsBO64T7LOZSkZ4ZFHHCPvT7cKItnJkbz2PkndU,6754
55
55
  tinybird/tb/modules/datafile/exceptions.py,sha256=8rw2umdZjtby85QbuRKFO5ETz_eRHwUY5l7eHsy1wnI,556
56
56
  tinybird/tb/modules/datafile/fixture.py,sha256=Oc4eA1Pgwl3prEgEmsH2Ip8XXQ7dG6lyqOjMCUN852M,1779
@@ -69,8 +69,8 @@ tinybird/tb_cli_modules/config.py,sha256=6NTgIdwf0X132A1j6G_YrdPep87ymZ9b5pABabK
69
69
  tinybird/tb_cli_modules/exceptions.py,sha256=pmucP4kTF4irIt7dXiG-FcnI-o3mvDusPmch1L8RCWk,3367
70
70
  tinybird/tb_cli_modules/regions.py,sha256=QjsL5H6Kg-qr0aYVLrvb1STeJ5Sx_sjvbOYO0LrEGMk,166
71
71
  tinybird/tb_cli_modules/telemetry.py,sha256=iEGnMuCuNhvF6ln__j6X9MSTwL_0Hm-GgFHHHvhfknk,10466
72
- tinybird-0.0.1.dev22.dist-info/METADATA,sha256=tjKF0zgTPtEhfgPlmDM3dJcqpe5R8j55aoeXgjZfxNM,2446
73
- tinybird-0.0.1.dev22.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
74
- tinybird-0.0.1.dev22.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
75
- tinybird-0.0.1.dev22.dist-info/top_level.txt,sha256=pgw6AzERHBcW3YTi2PW4arjxLkulk2msOz_SomfOEuc,45
76
- tinybird-0.0.1.dev22.dist-info/RECORD,,
72
+ tinybird-0.0.1.dev23.dist-info/METADATA,sha256=bPACW0_Y-vA0sX7BHfvMaG7r2KtEnrXUy8oYoXTissU,2446
73
+ tinybird-0.0.1.dev23.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
74
+ tinybird-0.0.1.dev23.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
75
+ tinybird-0.0.1.dev23.dist-info/top_level.txt,sha256=pgw6AzERHBcW3YTi2PW4arjxLkulk2msOz_SomfOEuc,45
76
+ tinybird-0.0.1.dev23.dist-info/RECORD,,