tinybird 0.0.1.dev56__py3-none-any.whl → 0.0.1.dev57__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.dev56'
8
- __revision__ = 'e22d9a3'
7
+ __version__ = '0.0.1.dev57'
8
+ __revision__ = '0af16b9'
@@ -14,7 +14,7 @@ from tinybird.client import TinyB
14
14
  from tinybird.tb.modules.cli import cli
15
15
  from tinybird.tb.modules.common import push_data
16
16
  from tinybird.tb.modules.datafile.build import folder_build
17
- from tinybird.tb.modules.datafile.fixture import build_fixture_name, get_fixture_dir
17
+ from tinybird.tb.modules.datafile.fixture import get_fixture_dir
18
18
  from tinybird.tb.modules.feedback_manager import FeedbackManager
19
19
  from tinybird.tb.modules.project import Project
20
20
  from tinybird.tb.modules.shell import Shell, print_table_formatted
@@ -31,13 +31,18 @@ def build(ctx: click.Context, watch: bool) -> None:
31
31
  project: Project = ctx.ensure_object(dict)["project"]
32
32
  tb_client: TinyB = ctx.ensure_object(dict)["client"]
33
33
  click.echo(FeedbackManager.highlight_building_project())
34
- time_start = time.time()
35
34
 
36
- def process(file_changed: Optional[str] = None, diff: Optional[str] = None) -> None:
35
+ def process(watch: bool, file_changed: Optional[str] = None, diff: Optional[str] = None) -> None:
36
+ time_start = time.time()
37
+ build_failed = False
37
38
  if file_changed and file_changed.endswith(".ndjson"):
38
39
  rebuild_fixture(project, tb_client, file_changed)
39
40
  else:
40
- build_project(project, tb_client, file_changed)
41
+ try:
42
+ build_project(project, tb_client, file_changed)
43
+ except click.ClickException as e:
44
+ click.echo(e)
45
+ build_failed = True
41
46
  try:
42
47
  if file_changed:
43
48
  asyncio.run(folder_build(project, tb_client, filenames=[file_changed]))
@@ -45,16 +50,18 @@ def build(ctx: click.Context, watch: bool) -> None:
45
50
  except Exception:
46
51
  pass
47
52
 
48
- try:
49
- process()
50
- except click.ClickException as e:
51
- click.echo(e)
52
- if not watch:
53
- sys.exit(1)
54
- else:
55
53
  time_end = time.time()
56
54
  elapsed_time = time_end - time_start
57
- click.echo(FeedbackManager.success(message=f"\n✓ Build completed in {elapsed_time:.1f}s"))
55
+
56
+ rebuild_str = "Rebuild" if watch else "Build"
57
+ if build_failed:
58
+ click.echo(FeedbackManager.error(message=f"\n✗ {rebuild_str} failed"))
59
+ if not watch:
60
+ sys.exit(1)
61
+ else:
62
+ click.echo(FeedbackManager.success(message=f"\n✓ {rebuild_str} completed in {elapsed_time:.1f}s"))
63
+
64
+ process(watch=watch)
58
65
 
59
66
  if watch:
60
67
  shell = Shell(project=project, tb_client=tb_client)
@@ -134,18 +141,13 @@ def build_project(project: Project, tb_client: TinyB, file_changed: Optional[str
134
141
  if filename.endswith(".datasource"):
135
142
  ds_path = Path(filename)
136
143
  ds_name = ds_path.stem
137
- name = build_fixture_name(filename, ds_name, ds_path.read_text())
138
144
  fixture_folder = get_fixture_dir(project.folder)
139
- fixture_path = fixture_folder / f"{name}.ndjson"
140
-
141
- if not fixture_path.exists():
142
- fixture_path = fixture_folder / f"{ds_name}.ndjson"
143
-
145
+ fixture_path = fixture_folder / f"{ds_name}.ndjson"
144
146
  if fixture_path.exists():
145
147
  append_fixture(tb_client, ds_name, str(fixture_path))
146
148
 
147
- except Exception:
148
- pass
149
+ except Exception as e:
150
+ click.echo(FeedbackManager.error_exception(error=f"Error appending fixtures for '{ds_name}': {e}"))
149
151
 
150
152
  feedback = result.get("feedback", [])
151
153
  for f in feedback:
@@ -12,7 +12,7 @@ from tinybird.tb.modules.cicd import init_cicd
12
12
  from tinybird.tb.modules.cli import cli
13
13
  from tinybird.tb.modules.common import _generate_datafile, check_user_token_with_client, coro, generate_datafile
14
14
  from tinybird.tb.modules.config import CLIConfig
15
- from tinybird.tb.modules.datafile.fixture import build_fixture_name, persist_fixture
15
+ from tinybird.tb.modules.datafile.fixture import persist_fixture
16
16
  from tinybird.tb.modules.exceptions import CLIException
17
17
  from tinybird.tb.modules.feedback_manager import FeedbackManager
18
18
  from tinybird.tb.modules.llm import LLM
@@ -108,11 +108,8 @@ async def create(
108
108
  ds_name = os.path.basename(data.split(".")[0])
109
109
  data_content = Path(data).read_text()
110
110
  datasource_path = Path(folder) / "datasources" / f"{ds_name}.datasource"
111
- fixture_name = build_fixture_name(
112
- datasource_path.absolute().as_posix(), ds_name, datasource_path.read_text()
113
- )
114
111
  click.echo(FeedbackManager.info(message=f"✓ /fixtures/{ds_name}"))
115
- persist_fixture(fixture_name, data_content, folder)
112
+ persist_fixture(ds_name, data_content, folder)
116
113
  elif prompt and user_token:
117
114
  datasource_files = [f for f in os.listdir(Path(folder) / "datasources") if f.endswith(".datasource")]
118
115
  for datasource_file in datasource_files:
@@ -128,11 +125,8 @@ async def create(
128
125
  sql = sql.split("FORMAT")[0]
129
126
  query_result = await local_client.query(f"{sql} FORMAT JSON")
130
127
  data = query_result.get("data", [])
131
- fixture_name = build_fixture_name(
132
- datasource_path.absolute().as_posix(), datasource_name, datasource_content
133
- )
134
128
  if data:
135
- persist_fixture(fixture_name, data, folder)
129
+ persist_fixture(datasource_name, data, folder)
136
130
  click.echo(FeedbackManager.info(message=f"✓ /fixtures/{datasource_name}"))
137
131
  except Exception as e:
138
132
  click.echo(FeedbackManager.error(message=f"Error: {str(e)}"))
@@ -1,34 +1,7 @@
1
- import hashlib
2
1
  from pathlib import Path
3
2
  from typing import Any, Dict, List, Union
4
3
 
5
4
  from tinybird.tb.modules.common import format_data_to_ndjson
6
- from tinybird.tb.modules.datafile.parse_datasource import parse_datasource
7
-
8
-
9
- def build_fixture_name(filename: str, datasource_name: str, datasource_content: str) -> str:
10
- """Generate a unique fixture name based on datasource properties.
11
-
12
- Args:
13
- datasource_name: Name of the datasource
14
- datasource_content: Content of the datasource file
15
- row_count: Number of rows requested
16
-
17
- Returns:
18
- str: A unique fixture name combining a hash of the inputs with the datasource name
19
- """
20
-
21
- doc = parse_datasource(filename, content=datasource_content)
22
- schema = doc.nodes[0].get("schema", "").strip()
23
- # Combine all inputs into a single string
24
- combined = f"{datasource_name}{schema}"
25
-
26
- # Generate hash
27
- hash_obj = hashlib.sha256(combined.encode())
28
- hash_str = hash_obj.hexdigest()[:8]
29
-
30
- # Return fixture name with hash
31
- return f"{datasource_name}_{hash_str}"
32
5
 
33
6
 
34
7
  def get_fixture_dir(folder: str) -> Path:
@@ -50,7 +50,7 @@ class AuthHandler(http.server.SimpleHTTPRequestHandler):
50
50
  </script>
51
51
  </body>
52
52
  </html>
53
- """.format(auth_host=self.server.auth_host).encode()
53
+ """.format(auth_host=self.server.auth_host).encode() # type: ignore
54
54
  )
55
55
 
56
56
  def do_POST(self):
@@ -10,7 +10,7 @@ from tinybird.prompts import mock_prompt
10
10
  from tinybird.tb.modules.cli import cli
11
11
  from tinybird.tb.modules.common import CLIException, check_user_token_with_client, coro
12
12
  from tinybird.tb.modules.config import CLIConfig
13
- from tinybird.tb.modules.datafile.fixture import build_fixture_name, persist_fixture
13
+ from tinybird.tb.modules.datafile.fixture import persist_fixture
14
14
  from tinybird.tb.modules.feedback_manager import FeedbackManager
15
15
  from tinybird.tb.modules.llm import LLM
16
16
  from tinybird.tb.modules.llm_utils import extract_xml
@@ -99,9 +99,8 @@ async def mock(ctx: click.Context, datasource: str, rows: int, prompt: str, skip
99
99
  sql = extract_xml(response, "sql")
100
100
  result = await tb_client.query(f"{sql} FORMAT JSON")
101
101
  data = result.get("data", [])[:rows]
102
- fixture_name = build_fixture_name(str(datasource_path), datasource_name, datasource_content)
103
- fixture_path = persist_fixture(fixture_name, data, folder)
104
- click.echo(FeedbackManager.info(message=f"✓ /fixtures/{fixture_name}.ndjson created"))
102
+ fixture_path = persist_fixture(datasource_name, data, folder)
103
+ click.echo(FeedbackManager.info(message=f"✓ /fixtures/{datasource_name}.ndjson created"))
105
104
 
106
105
  if os.environ.get("TB_DEBUG", "") != "":
107
106
  logging.debug(sql)
@@ -301,7 +301,8 @@ async def create_static_token(ctx, name: str):
301
301
  if current_scope:
302
302
  scopes.append(current_scope)
303
303
  current_scope = {}
304
- current_scope = {"scope": args[i + 1]}
304
+ unsafe_scope = args[i + 1]
305
+ current_scope = {"scope": unsafe_scope.upper() if isinstance(unsafe_scope, str) else unsafe_scope}
305
306
  i += 2
306
307
  elif args[i] == "--resource":
307
308
  if current_scope is None:
@@ -1,16 +1,12 @@
1
- import asyncio
2
1
  import os
3
2
  import time
4
3
  from pathlib import Path
5
- from typing import Any, Callable, List, Optional, Union
4
+ from typing import Any, Callable, Optional, Union
6
5
 
7
6
  import click
8
7
  from watchdog.events import (
9
8
  DirDeletedEvent,
10
- DirMovedEvent,
11
9
  FileDeletedEvent,
12
- FileMovedEvent,
13
- FileSystemEventHandler,
14
10
  PatternMatchingEventHandler,
15
11
  )
16
12
  from watchdog.observers import Observer
@@ -21,113 +17,12 @@ from tinybird.tb.modules.project import Project
21
17
  from tinybird.tb.modules.shell import Shell
22
18
 
23
19
 
24
- class FileChangeHandler(FileSystemEventHandler):
25
- def __init__(self, filenames: List[str], process: Callable[[List[str]], None], build_ok: bool):
26
- self.unprocessed_filenames = [os.path.abspath(f) for f in filenames]
27
- self.process = process
28
- self.build_ok = build_ok
29
-
30
- @property
31
- def filenames(self) -> List[str]:
32
- return [f for f in self.unprocessed_filenames if os.path.exists(f)]
33
-
34
- def should_process(self, event: Any) -> Optional[str]:
35
- if event.is_directory:
36
- return None
37
-
38
- def should_process_path(path: str) -> bool:
39
- if not os.path.exists(path):
40
- return False
41
- is_vendor = "vendor/" in path
42
- if is_vendor:
43
- return False
44
- return any(path.endswith(ext) for ext in [".datasource", ".pipe", ".ndjson"])
45
-
46
- if should_process_path(event.src_path):
47
- return event.src_path
48
-
49
- if should_process_path(event.dest_path):
50
- return event.dest_path
51
-
52
- return None
53
-
54
- def on_modified(self, event: Any) -> None:
55
- if path := self.should_process(event):
56
- filename = path.split("/")[-1]
57
- click.echo(FeedbackManager.highlight(message=f"\n\n⟲ Changes detected in {filename}\n"))
58
- try:
59
- to_process = [path] if self.build_ok else self.filenames
60
- self.process(to_process)
61
- self.build_ok = True
62
- except Exception as e:
63
- click.echo(FeedbackManager.error_exception(error=e))
64
-
65
- def on_moved(self, event: Union[DirMovedEvent, FileMovedEvent]) -> None:
66
- if path := self.should_process(event):
67
- is_new_file = False
68
- if path not in self.unprocessed_filenames:
69
- is_new_file = True
70
- self.unprocessed_filenames.append(path)
71
-
72
- filename = path.split("/")[-1]
73
- if is_new_file:
74
- click.echo(FeedbackManager.highlight(message=f"\n\n⟲ New file detected: {filename}\n"))
75
- else:
76
- click.echo(FeedbackManager.highlight(message=f"\n\n⟲ Changes detected in {filename}\n"))
77
- try:
78
- should_rebuild_all = is_new_file or not self.build_ok
79
- to_process = self.filenames if should_rebuild_all else [path]
80
- self.process(to_process)
81
- self.build_ok = True
82
- except Exception as e:
83
- click.echo(FeedbackManager.error_exception(error=e))
84
-
85
-
86
- def watch_files(
87
- filenames: List[str],
88
- process: Callable,
89
- shell: Shell,
90
- project: Project,
91
- build_ok: bool,
92
- ) -> None:
93
- # Handle both sync and async process functions
94
- async def process_wrapper(files: List[str]) -> None:
95
- click.echo(FeedbackManager.highlight(message="» Rebuilding project..."))
96
- time_start = time.time()
97
- if asyncio.iscoroutinefunction(process):
98
- await process(files, watch=True)
99
- else:
100
- process(files, watch=True)
101
- time_end = time.time()
102
- elapsed_time = time_end - time_start
103
- click.echo(
104
- FeedbackManager.success(message="\n✓ ")
105
- + FeedbackManager.gray(message=f"Rebuild completed in {elapsed_time:.1f}s")
106
- )
107
- shell.reprint_prompt()
108
-
109
- event_handler = FileChangeHandler(filenames, lambda f: asyncio.run(process_wrapper(f)), build_ok)
110
- observer = Observer()
111
-
112
- observer.schedule(event_handler, path=str(project.path), recursive=True)
113
-
114
- observer.start()
115
-
116
- try:
117
- while True:
118
- time.sleep(1)
119
- except KeyboardInterrupt:
120
- observer.stop()
121
-
122
- observer.join()
123
-
124
-
125
20
  class WatchProjectHandler(PatternMatchingEventHandler):
126
21
  def __init__(
127
22
  self,
128
23
  shell: Shell,
129
24
  project: Project,
130
- process: Callable[[Optional[str], Optional[str]], None],
25
+ process: Callable[[bool, Optional[str], Optional[str]], None],
131
26
  ):
132
27
  self.shell = shell
133
28
  self.project = project
@@ -156,14 +51,7 @@ class WatchProjectHandler(PatternMatchingEventHandler):
156
51
 
157
52
  def _process(self, path: Optional[str] = None) -> None:
158
53
  click.echo(FeedbackManager.highlight(message="» Rebuilding project..."))
159
- time_start = time.time()
160
- self.process(path, self.diff(path))
161
- time_end = time.time()
162
- elapsed_time = time_end - time_start
163
- click.echo(
164
- FeedbackManager.success(message="\n✓ ")
165
- + FeedbackManager.gray(message=f"Rebuild completed in {elapsed_time:.1f}s")
166
- )
54
+ self.process(True, path, self.diff(path))
167
55
  self.shell.reprint_prompt()
168
56
 
169
57
  def diff(self, path: Optional[str] = None) -> Optional[str]:
@@ -225,7 +113,7 @@ class WatchProjectHandler(PatternMatchingEventHandler):
225
113
 
226
114
  def watch_project(
227
115
  shell: Shell,
228
- process: Callable[[Optional[str], Optional[str]], None],
116
+ process: Callable[[bool, Optional[str], Optional[str]], None],
229
117
  project: Project,
230
118
  ) -> None:
231
119
  event_handler = WatchProjectHandler(shell=shell, project=project, process=process)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tinybird
3
- Version: 0.0.1.dev56
3
+ Version: 0.0.1.dev57
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=IPnOx6lMbf9SNddN1eBtssg8vCLHMt76SuZ6YNYm-Yk,27761
15
15
  tinybird/tornado_template.py,sha256=FL85SMPq2dH4JqKovmSbaolGdEzwOO91NqOzqXo2Qr0,41863
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=5GEuAS2TJj6qPLbuuMWnjJTIDITptpmJkpS2ZJxSBlM,251
18
+ tinybird/tb/__cli__.py,sha256=VmPdPo--fZPs9pKsl45OvLsk2abvstvfh9n1sxUQmd4,251
19
19
  tinybird/tb/cli.py,sha256=FD1pfbzu9YHJHEG6Vtn_EwPLTYhwqw-I6AxXeTaRHU8,926
20
20
  tinybird/tb/modules/auth.py,sha256=EzRWFmwRkXNhUmRaruEVFLdkbUg8xMSix0cAWl5D4Jg,9029
21
- tinybird/tb/modules/build.py,sha256=bGx4sON9g90zVBVCd16La-1yV1nWZ_AY-2RZ77sco0s,8361
21
+ tinybird/tb/modules/build.py,sha256=92hGgYKg_MOPOjscj677mCGkv6E9H0s8XqD3oBaiaLc,8525
22
22
  tinybird/tb/modules/cicd.py,sha256=xxXwy-QekJcG14kkJeGNl7LkHduhZXfvBZE8WrU6-t4,5351
23
23
  tinybird/tb/modules/cli.py,sha256=lCRp71IOfmDIv4fTKeswYEe1ZzpDAX202a5zxBCg-zQ,16199
24
24
  tinybird/tb/modules/common.py,sha256=TWcGJUgzJCQvzI1oMKbNdx-KTRmMGvB25BawHpsaV8Q,70610
25
25
  tinybird/tb/modules/config.py,sha256=mie3oMVTf5YOUFEiLs88P16U4LkJafJjSpjwyAkFHog,10979
26
26
  tinybird/tb/modules/copy.py,sha256=Aq6wh_wjRiyLQtEOKF9pKLPgJhSvbGTFWIw_LJB0t0U,5801
27
- tinybird/tb/modules/create.py,sha256=_eAMjntZ85uub1HqHoDekWC7ks79FQ2Zbc_6grjhT_g,14472
27
+ tinybird/tb/modules/create.py,sha256=We8hffR9x5xSrdCmEk0tfqc_0ddys61gw_J136ZpA3E,14097
28
28
  tinybird/tb/modules/datasource.py,sha256=TQ4wSag3CCw34d54FEXPJFGLQNYyNqv2nQbU6QT9uAE,14725
29
29
  tinybird/tb/modules/deployment.py,sha256=LtAvjNuoUZFEB8gi3DKYGwPCAjiIh-OskDONW6lZdRI,12111
30
30
  tinybird/tb/modules/endpoint.py,sha256=9arqN1JQCMb0Nd3-EJ7lukOYkGHHCpQmiiZpp5FqPhc,9432
@@ -36,9 +36,9 @@ tinybird/tb/modules/llm.py,sha256=AC0VSphTOM2t-v1_3NLvNN_FIbgMo4dTyMqIv5nniPo,83
36
36
  tinybird/tb/modules/llm_utils.py,sha256=nS9r4FAElJw8yXtmdYrx-rtI2zXR8qXfi1QqUDCfxvg,3469
37
37
  tinybird/tb/modules/local.py,sha256=_PIa-1M-72bv9rhLwqaNthJM1ZhvcjWXFChZAfEPXRs,5658
38
38
  tinybird/tb/modules/local_common.py,sha256=W1fEnB1vBQ4YC5U1PdA0w0g3cTV78bQ5R-lRxdDj5-Y,2868
39
- tinybird/tb/modules/login.py,sha256=_Wg2diSxyj9BCpQ_61UMAiS6YeVkOb2fnbgt5Skrveg,6047
39
+ tinybird/tb/modules/login.py,sha256=EGxwVRmMX1Y7ZeCRyA8fqaCWpYYk7NvnZ3x_1g0NlYA,6063
40
40
  tinybird/tb/modules/materialization.py,sha256=HQKRTH6lkcYiDQJihbFqF_in58ezXG4ggZ_7Ywp_nUM,5738
41
- tinybird/tb/modules/mock.py,sha256=PzFtZL-6bZAZ3EiCC2nYJo058I4m50fD7FcBHISn3cI,5235
41
+ tinybird/tb/modules/mock.py,sha256=m4RnskeN_EjR25mC9lT0L61Vrn5ldtNS-ghyVjB5RG8,5112
42
42
  tinybird/tb/modules/pipe.py,sha256=pH2KwgH6Xbvl3kT8vMelpKvT6bcyB4EKFDvGfOsxXbg,2418
43
43
  tinybird/tb/modules/project.py,sha256=rucAh_6K1EsW2dxjmqHPJ7bt6IliOWR0dNtEYG454fw,2620
44
44
  tinybird/tb/modules/regions.py,sha256=QjsL5H6Kg-qr0aYVLrvb1STeJ5Sx_sjvbOYO0LrEGMk,166
@@ -47,8 +47,8 @@ tinybird/tb/modules/table.py,sha256=4XrtjM-N0zfNtxVkbvLDQQazno1EPXnxTyo7llivfXk,
47
47
  tinybird/tb/modules/tag.py,sha256=anPmMUBc-TbFovlpFi8GPkKA18y7Y0GczMsMms5TZsU,3502
48
48
  tinybird/tb/modules/telemetry.py,sha256=iEGnMuCuNhvF6ln__j6X9MSTwL_0Hm-GgFHHHvhfknk,10466
49
49
  tinybird/tb/modules/test.py,sha256=UoYGwTSY6_0ijS2sClMq-1OdOBbg-IXMDD8oLfZXvUg,13093
50
- tinybird/tb/modules/token.py,sha256=sPdJoBE-6dd3Sd6W-prst7VOoJ0NbvP0uTaB6dXHs5s,12711
51
- tinybird/tb/modules/watch.py,sha256=Kredt5C7OOiI6YOivuR5QBdiDY4J_xLiwqHOROnfcsU,8591
50
+ tinybird/tb/modules/token.py,sha256=A2I5wTUUmo0KfTI1BH6M6pqCQOd5dE4w2-Xaa1yM5PE,12810
51
+ tinybird/tb/modules/watch.py,sha256=uvLQYejOzcUzupGlRrs4jIgqnmZ1sq_DJxQ0EAG9_58,4591
52
52
  tinybird/tb/modules/workspace.py,sha256=sfT9QkoeFlN7ndUXxyImp4a7EFEHjY9MlGlldOViz0Y,6404
53
53
  tinybird/tb/modules/workspace_members.py,sha256=Ai6iCOzXX1zQ8q9iXIFSFHsBJlT-8Q28DaG5Ie-UweY,8726
54
54
  tinybird/tb/modules/datafile/build.py,sha256=seGFSvmgyRrAM1-icsKBkuog3WccfGUYFTPT-xoA5W8,50940
@@ -58,7 +58,7 @@ tinybird/tb/modules/datafile/build_pipe.py,sha256=Jgv3YKIvMfjPiSIdw1k2mpaoDdAWMi
58
58
  tinybird/tb/modules/datafile/common.py,sha256=ivxVK8877ZTG6wGmQLuxDA9bstRLsJeOE_ZP0bt6V0M,78470
59
59
  tinybird/tb/modules/datafile/diff.py,sha256=-0J7PsBO64T7LOZSkZ4ZFHHCPvT7cKItnJkbz2PkndU,6754
60
60
  tinybird/tb/modules/datafile/exceptions.py,sha256=8rw2umdZjtby85QbuRKFO5ETz_eRHwUY5l7eHsy1wnI,556
61
- tinybird/tb/modules/datafile/fixture.py,sha256=bdZndItV6ibOegPCrN3OgKdkpjDFCFvoSoiZVsCV_XQ,1852
61
+ tinybird/tb/modules/datafile/fixture.py,sha256=GkXDI75Y5X9jynZYjA249rYuUDzGO_P69T8GVmXU0jQ,924
62
62
  tinybird/tb/modules/datafile/format_common.py,sha256=WaNV4tXrQU5gjV6MJP-5TGqg_Bre6ilNS8emvFl-X3c,1967
63
63
  tinybird/tb/modules/datafile/format_datasource.py,sha256=gpRsGnDEMxEo0pIlEHXKvyuwKIpqJJUCN9JRSiDYs_4,6156
64
64
  tinybird/tb/modules/datafile/format_pipe.py,sha256=58iSTrJ5lg-IsbpX8TQumQTuZ6UIotMsCIkNJd1M-pM,7418
@@ -74,8 +74,8 @@ tinybird/tb_cli_modules/config.py,sha256=6u6B5QCdiQLbJkCkwtnKGs9H3nP-KXXhC75mF7B
74
74
  tinybird/tb_cli_modules/exceptions.py,sha256=pmucP4kTF4irIt7dXiG-FcnI-o3mvDusPmch1L8RCWk,3367
75
75
  tinybird/tb_cli_modules/regions.py,sha256=QjsL5H6Kg-qr0aYVLrvb1STeJ5Sx_sjvbOYO0LrEGMk,166
76
76
  tinybird/tb_cli_modules/telemetry.py,sha256=iEGnMuCuNhvF6ln__j6X9MSTwL_0Hm-GgFHHHvhfknk,10466
77
- tinybird-0.0.1.dev56.dist-info/METADATA,sha256=BEIuDVbGT-rIUDOER7B99FXf_bjAgiL74CkedcbagLI,2482
78
- tinybird-0.0.1.dev56.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
79
- tinybird-0.0.1.dev56.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
80
- tinybird-0.0.1.dev56.dist-info/top_level.txt,sha256=VqqqEmkAy7UNaD8-V51FCoMMWXjLUlR0IstvK7tJYVY,54
81
- tinybird-0.0.1.dev56.dist-info/RECORD,,
77
+ tinybird-0.0.1.dev57.dist-info/METADATA,sha256=5UWJlzMHZ_XOENz6CDy-Bhy0m2rYvC9cVkv8n7wqyF0,2482
78
+ tinybird-0.0.1.dev57.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
79
+ tinybird-0.0.1.dev57.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
80
+ tinybird-0.0.1.dev57.dist-info/top_level.txt,sha256=VqqqEmkAy7UNaD8-V51FCoMMWXjLUlR0IstvK7tJYVY,54
81
+ tinybird-0.0.1.dev57.dist-info/RECORD,,