tinybird 0.0.1.dev22__py3-none-any.whl → 0.0.1.dev24__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 +2 -2
- tinybird/tb/modules/build.py +1 -1
- tinybird/tb/modules/common.py +23 -0
- tinybird/tb/modules/config.py +2 -6
- tinybird/tb/modules/create.py +16 -13
- tinybird/tb/modules/datafile/build.py +2 -2
- tinybird/tb/modules/datafile/build_pipe.py +10 -1
- tinybird/tb/modules/datafile/common.py +4 -5
- tinybird/tb/modules/llm.py +4 -0
- tinybird/tb/modules/local_common.py +7 -2
- tinybird/tb/modules/mock.py +3 -3
- tinybird/tb/modules/test.py +11 -1
- tinybird/tb/modules/watch.py +51 -11
- {tinybird-0.0.1.dev22.dist-info → tinybird-0.0.1.dev24.dist-info}/METADATA +1 -1
- {tinybird-0.0.1.dev22.dist-info → tinybird-0.0.1.dev24.dist-info}/RECORD +18 -18
- {tinybird-0.0.1.dev22.dist-info → tinybird-0.0.1.dev24.dist-info}/WHEEL +0 -0
- {tinybird-0.0.1.dev22.dist-info → tinybird-0.0.1.dev24.dist-info}/entry_points.txt +0 -0
- {tinybird-0.0.1.dev22.dist-info → tinybird-0.0.1.dev24.dist-info}/top_level.txt +0 -0
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.
|
|
8
|
-
__revision__ = '
|
|
7
|
+
__version__ = '0.0.1.dev24'
|
|
8
|
+
__revision__ = '3de7f2a'
|
tinybird/tb/modules/build.py
CHANGED
|
@@ -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
|
|
123
|
+
click.echo(FeedbackManager.error_exception(error=e))
|
|
124
124
|
ok = False
|
|
125
125
|
return ok
|
|
126
126
|
|
tinybird/tb/modules/common.py
CHANGED
|
@@ -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)
|
tinybird/tb/modules/config.py
CHANGED
|
@@ -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
|
-
|
|
325
|
-
|
|
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]:
|
tinybird/tb/modules/create.py
CHANGED
|
@@ -9,12 +9,13 @@ 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,
|
|
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
|
|
16
16
|
from tinybird.tb.modules.feedback_manager import FeedbackManager
|
|
17
17
|
from tinybird.tb.modules.llm import LLM
|
|
18
|
+
from tinybird.tb.modules.local_common import get_tinybird_local_client
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
@cli.command()
|
|
@@ -37,15 +38,13 @@ from tinybird.tb.modules.llm import LLM
|
|
|
37
38
|
)
|
|
38
39
|
@click.option(
|
|
39
40
|
"--folder",
|
|
40
|
-
default=
|
|
41
|
+
default=".",
|
|
41
42
|
type=click.Path(exists=True, file_okay=False),
|
|
42
43
|
help="Folder where datafiles will be placed",
|
|
43
44
|
)
|
|
44
45
|
@click.option("--rows", type=int, default=10, help="Number of events to send")
|
|
45
|
-
@click.pass_context
|
|
46
46
|
@coro
|
|
47
47
|
async def create(
|
|
48
|
-
ctx: click.Context,
|
|
49
48
|
demo: bool,
|
|
50
49
|
data: Optional[str],
|
|
51
50
|
prompt: Optional[str],
|
|
@@ -56,21 +55,24 @@ async def create(
|
|
|
56
55
|
folder = folder or getcwd()
|
|
57
56
|
try:
|
|
58
57
|
config = CLIConfig.get_project_config(folder)
|
|
58
|
+
tb_client = config.get_client()
|
|
59
59
|
user_token: Optional[str] = None
|
|
60
|
-
|
|
61
60
|
if prompt:
|
|
62
61
|
try:
|
|
63
62
|
user_token = config.get_user_token()
|
|
64
63
|
if not user_token:
|
|
65
64
|
raise CLIException("No user token found")
|
|
66
|
-
await
|
|
67
|
-
except Exception:
|
|
68
|
-
click.echo(
|
|
65
|
+
await check_user_token_with_client(tb_client, token=user_token)
|
|
66
|
+
except Exception as e:
|
|
67
|
+
click.echo(
|
|
68
|
+
FeedbackManager.error(
|
|
69
|
+
message=f"This action requires authentication. Run 'tb login' first. Error: {e}"
|
|
70
|
+
)
|
|
71
|
+
)
|
|
69
72
|
return
|
|
70
|
-
|
|
71
|
-
tb_client = config.get_client()
|
|
73
|
+
local_client = await get_tinybird_local_client(folder)
|
|
72
74
|
click.echo(FeedbackManager.gray(message="Creating new project structure..."))
|
|
73
|
-
await project_create(tb_client, user_token, data, prompt, folder)
|
|
75
|
+
await project_create(local_client, tb_client, user_token, data, prompt, folder)
|
|
74
76
|
click.echo(FeedbackManager.success(message="✓ Scaffolding completed!\n"))
|
|
75
77
|
|
|
76
78
|
click.echo(FeedbackManager.gray(message="\nCreating CI/CD files for GitHub and GitLab..."))
|
|
@@ -156,7 +158,7 @@ async def create(
|
|
|
156
158
|
has_json_path = "`json:" in datasource_content
|
|
157
159
|
if has_json_path:
|
|
158
160
|
sql = await llm.generate_sql_sample_data(schema=datasource_content, rows=rows, prompt=prompt)
|
|
159
|
-
result = await
|
|
161
|
+
result = await local_client.query(f"{sql} FORMAT JSON")
|
|
160
162
|
data = result.get("data", [])
|
|
161
163
|
fixture_name = build_fixture_name(
|
|
162
164
|
datasource_path.absolute().as_posix(), datasource_name, datasource_content
|
|
@@ -171,6 +173,7 @@ async def create(
|
|
|
171
173
|
|
|
172
174
|
|
|
173
175
|
async def project_create(
|
|
176
|
+
local_client: TinyB,
|
|
174
177
|
client: TinyB,
|
|
175
178
|
user_token: Optional[str],
|
|
176
179
|
data: Optional[str],
|
|
@@ -191,7 +194,7 @@ async def project_create(
|
|
|
191
194
|
path = Path(folder) / data
|
|
192
195
|
format = path.suffix.lstrip(".")
|
|
193
196
|
try:
|
|
194
|
-
await _generate_datafile(str(path),
|
|
197
|
+
await _generate_datafile(str(path), local_client, format=format, force=force)
|
|
195
198
|
except Exception as e:
|
|
196
199
|
click.echo(FeedbackManager.error(message=f"Error: {str(e)}"))
|
|
197
200
|
name = data.split(".")[0]
|
|
@@ -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 =
|
|
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
|
|
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
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
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):
|
tinybird/tb/modules/llm.py
CHANGED
|
@@ -53,6 +53,10 @@ class LLM:
|
|
|
53
53
|
|
|
54
54
|
async def create_project(self, prompt: str) -> DataProject:
|
|
55
55
|
try:
|
|
56
|
+
prompt = (
|
|
57
|
+
prompt
|
|
58
|
+
+ "\n#More extra context\n- If you add some array data type remember that the json path should be like this: `json:$.array_field[:]`"
|
|
59
|
+
)
|
|
56
60
|
response = await self.user_client._req(
|
|
57
61
|
"/v0/llm/create",
|
|
58
62
|
method="POST",
|
|
@@ -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 =
|
|
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
|
|
60
|
+
return config
|
tinybird/tb/modules/mock.py
CHANGED
|
@@ -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,
|
|
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
|
|
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)
|
tinybird/tb/modules/test.py
CHANGED
|
@@ -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"))
|
tinybird/tb/modules/watch.py
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
21
|
-
|
|
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 = [
|
|
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:
|
|
@@ -15,42 +15,42 @@ 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=
|
|
18
|
+
tinybird/tb/__cli__.py,sha256=1fysm8mkLcvnBe_6GnnZ0KRMztaWMMR2cLtUdB6ZtiE,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=
|
|
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=
|
|
25
|
-
tinybird/tb/modules/config.py,sha256=
|
|
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=
|
|
27
|
+
tinybird/tb/modules/create.py,sha256=ykiacZ0e-ZdHhj27a_Fc1lemyO8b8wQjwlkSJ1gGC70,10637
|
|
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
|
|
31
31
|
tinybird/tb/modules/fmt.py,sha256=poh6_cwVGSf-sBu6LKWuO2TANL_J8Sgm25sPpwxa3Aw,3558
|
|
32
32
|
tinybird/tb/modules/job.py,sha256=956Pj8BEEsiD2GZsV9RKKVM3I_CveOLgS82lykO5ukk,2963
|
|
33
|
-
tinybird/tb/modules/llm.py,sha256=
|
|
33
|
+
tinybird/tb/modules/llm.py,sha256=Rx3QHl9D8kp8MnUM2CFQtxWfaLPiIczVJX1iSRyjyBw,2923
|
|
34
34
|
tinybird/tb/modules/local.py,sha256=n8L1tH0LlCwGEM7K_1jHeCRdqjtW9BbpCIibI4IgeaM,5253
|
|
35
|
-
tinybird/tb/modules/local_common.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
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=
|
|
53
|
-
tinybird/tb/modules/datafile/common.py,sha256=
|
|
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.
|
|
73
|
-
tinybird-0.0.1.
|
|
74
|
-
tinybird-0.0.1.
|
|
75
|
-
tinybird-0.0.1.
|
|
76
|
-
tinybird-0.0.1.
|
|
72
|
+
tinybird-0.0.1.dev24.dist-info/METADATA,sha256=jhgjC0xVQkjru503B-AssrXKlGmBuWrBBxs1oABVzaY,2446
|
|
73
|
+
tinybird-0.0.1.dev24.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
|
74
|
+
tinybird-0.0.1.dev24.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
|
|
75
|
+
tinybird-0.0.1.dev24.dist-info/top_level.txt,sha256=pgw6AzERHBcW3YTi2PW4arjxLkulk2msOz_SomfOEuc,45
|
|
76
|
+
tinybird-0.0.1.dev24.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|