tinybird 0.0.1.dev6__py3-none-any.whl → 0.0.1.dev7__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/modules/branch.py +0 -21
- tinybird/tb/modules/build.py +7 -18
- tinybird/tb/modules/cli.py +11 -131
- tinybird/tb/modules/common.py +14 -2
- tinybird/tb/modules/create.py +10 -14
- tinybird/tb/modules/datafile/build.py +2103 -0
- tinybird/tb/modules/datafile/build_common.py +118 -0
- tinybird/tb/modules/datafile/build_datasource.py +403 -0
- tinybird/tb/modules/datafile/build_pipe.py +648 -0
- tinybird/tb/modules/datafile/common.py +897 -0
- tinybird/tb/modules/datafile/diff.py +197 -0
- tinybird/tb/modules/datafile/exceptions.py +23 -0
- tinybird/tb/modules/datafile/format_common.py +66 -0
- tinybird/tb/modules/datafile/format_datasource.py +160 -0
- tinybird/tb/modules/datafile/format_pipe.py +195 -0
- tinybird/tb/modules/datafile/parse_datasource.py +41 -0
- tinybird/tb/modules/datafile/parse_pipe.py +69 -0
- tinybird/tb/modules/datafile/pipe_checker.py +560 -0
- tinybird/tb/modules/datafile/pull.py +157 -0
- tinybird/tb/modules/datasource.py +1 -1
- tinybird/tb/modules/fmt.py +4 -1
- tinybird/tb/modules/pipe.py +8 -2
- tinybird/tb/modules/prompts.py +1 -1
- tinybird/tb/modules/workspace.py +1 -1
- {tinybird-0.0.1.dev6.dist-info → tinybird-0.0.1.dev7.dist-info}/METADATA +1 -1
- {tinybird-0.0.1.dev6.dist-info → tinybird-0.0.1.dev7.dist-info}/RECORD +29 -16
- tinybird/tb/modules/datafile.py +0 -6122
- {tinybird-0.0.1.dev6.dist-info → tinybird-0.0.1.dev7.dist-info}/WHEEL +0 -0
- {tinybird-0.0.1.dev6.dist-info → tinybird-0.0.1.dev7.dist-info}/entry_points.txt +0 -0
- {tinybird-0.0.1.dev6.dist-info → tinybird-0.0.1.dev7.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from asyncio import Semaphore, gather
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Any, Dict, List, Optional
|
|
5
|
+
|
|
6
|
+
import aiofiles
|
|
7
|
+
import click
|
|
8
|
+
|
|
9
|
+
from tinybird.client import AuthNoTokenException, TinyB
|
|
10
|
+
from tinybird.feedback_manager import FeedbackManager
|
|
11
|
+
from tinybird.tb.modules.datafile.common import get_name_version
|
|
12
|
+
from tinybird.tb.modules.datafile.format_datasource import format_datasource
|
|
13
|
+
from tinybird.tb.modules.datafile.format_pipe import format_pipe
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def folder_pull(
|
|
17
|
+
client: TinyB,
|
|
18
|
+
folder: str,
|
|
19
|
+
auto: bool,
|
|
20
|
+
match: Optional[str],
|
|
21
|
+
force: bool,
|
|
22
|
+
verbose: bool = True,
|
|
23
|
+
progress_bar: bool = False,
|
|
24
|
+
fmt: bool = False,
|
|
25
|
+
):
|
|
26
|
+
pattern = re.compile(match) if match else None
|
|
27
|
+
|
|
28
|
+
def _get_latest_versions(resources: List[str]):
|
|
29
|
+
versions: Dict[str, Any] = {}
|
|
30
|
+
|
|
31
|
+
for x in resources:
|
|
32
|
+
t = get_name_version(x)
|
|
33
|
+
t["original_name"] = x
|
|
34
|
+
if t["version"] is None:
|
|
35
|
+
t["version"] = -1
|
|
36
|
+
name = t["name"]
|
|
37
|
+
|
|
38
|
+
if name not in versions or name == x or versions[name]["version"] < t["version"]:
|
|
39
|
+
versions[name] = t
|
|
40
|
+
return versions
|
|
41
|
+
|
|
42
|
+
def get_file_folder(extension: str):
|
|
43
|
+
if not auto:
|
|
44
|
+
return None
|
|
45
|
+
if extension == "datasource":
|
|
46
|
+
return "datasources"
|
|
47
|
+
if extension == "pipe":
|
|
48
|
+
return "pipes"
|
|
49
|
+
if extension == "token":
|
|
50
|
+
return "tokens"
|
|
51
|
+
return None
|
|
52
|
+
|
|
53
|
+
async def write_files(
|
|
54
|
+
versions: Dict[str, Any],
|
|
55
|
+
resources: List[str],
|
|
56
|
+
extension: str,
|
|
57
|
+
get_resource_function: str,
|
|
58
|
+
progress_bar: bool = False,
|
|
59
|
+
fmt: bool = False,
|
|
60
|
+
):
|
|
61
|
+
async def write_resource(k: Dict[str, Any]):
|
|
62
|
+
name = f"{k['name']}.{extension}"
|
|
63
|
+
try:
|
|
64
|
+
if pattern and not pattern.search(name):
|
|
65
|
+
if verbose:
|
|
66
|
+
click.echo(FeedbackManager.info_skipping_resource(resource=name))
|
|
67
|
+
return
|
|
68
|
+
|
|
69
|
+
resource = await getattr(client, get_resource_function)(k["original_name"])
|
|
70
|
+
resource_to_write = resource
|
|
71
|
+
|
|
72
|
+
if fmt:
|
|
73
|
+
if extension == "datasource":
|
|
74
|
+
resource_to_write = await format_datasource(name, content=resource)
|
|
75
|
+
elif extension == "pipe":
|
|
76
|
+
resource_to_write = await format_pipe(name, content=resource)
|
|
77
|
+
|
|
78
|
+
dest_folder = folder
|
|
79
|
+
if "." in k["name"] and extension != "token":
|
|
80
|
+
dest_folder = Path(folder) / "vendor" / k["name"].split(".", 1)[0]
|
|
81
|
+
name = f"{k['name'].split('.', 1)[1]}.{extension}"
|
|
82
|
+
|
|
83
|
+
file_folder = get_file_folder(extension)
|
|
84
|
+
f = Path(dest_folder) / file_folder if file_folder is not None else Path(dest_folder)
|
|
85
|
+
|
|
86
|
+
if not f.exists():
|
|
87
|
+
f.mkdir(parents=True)
|
|
88
|
+
|
|
89
|
+
f = f / name
|
|
90
|
+
resource_names = [x.split(".")[-1] for x in resources]
|
|
91
|
+
|
|
92
|
+
if verbose:
|
|
93
|
+
click.echo(FeedbackManager.info_writing_resource(resource=f))
|
|
94
|
+
if not f.exists() or force:
|
|
95
|
+
async with aiofiles.open(f, "w") as fd:
|
|
96
|
+
# versions are a client only thing so
|
|
97
|
+
# datafiles from the server do not contains information about versions
|
|
98
|
+
if k["version"] >= 0:
|
|
99
|
+
if fmt:
|
|
100
|
+
resource_to_write = "\n" + resource_to_write # fmt strips the first line
|
|
101
|
+
|
|
102
|
+
resource_to_write = f"VERSION {k['version']}\n" + resource_to_write
|
|
103
|
+
if resource_to_write:
|
|
104
|
+
matches = re.findall(r"([^\s\.]*__v\d+)", resource_to_write)
|
|
105
|
+
for match in set(matches):
|
|
106
|
+
m = match.split("__v")[0]
|
|
107
|
+
if m in resources or m in resource_names:
|
|
108
|
+
resource_to_write = resource_to_write.replace(match, m)
|
|
109
|
+
await fd.write(resource_to_write)
|
|
110
|
+
else:
|
|
111
|
+
if verbose:
|
|
112
|
+
click.echo(FeedbackManager.info_skip_already_exists())
|
|
113
|
+
except Exception as e:
|
|
114
|
+
raise click.ClickException(FeedbackManager.error_exception(error=e))
|
|
115
|
+
|
|
116
|
+
values = versions.values()
|
|
117
|
+
|
|
118
|
+
if progress_bar:
|
|
119
|
+
with click.progressbar(values, label=f"Pulling {extension}s") as values: # type: ignore
|
|
120
|
+
for k in values:
|
|
121
|
+
await write_resource(k)
|
|
122
|
+
else:
|
|
123
|
+
tasks = [write_resource(k) for k in values]
|
|
124
|
+
await _gather_with_concurrency(5, *tasks)
|
|
125
|
+
|
|
126
|
+
try:
|
|
127
|
+
datasources = await client.datasources()
|
|
128
|
+
remote_datasources = sorted([x["name"] for x in datasources])
|
|
129
|
+
datasources_versions = _get_latest_versions(remote_datasources)
|
|
130
|
+
|
|
131
|
+
pipes = await client.pipes()
|
|
132
|
+
remote_pipes = sorted([x["name"] for x in pipes])
|
|
133
|
+
pipes_versions = _get_latest_versions(remote_pipes)
|
|
134
|
+
|
|
135
|
+
resources = list(datasources_versions.keys()) + list(pipes_versions.keys())
|
|
136
|
+
|
|
137
|
+
await write_files(
|
|
138
|
+
datasources_versions, resources, "datasource", "datasource_file", progress_bar=progress_bar, fmt=fmt
|
|
139
|
+
)
|
|
140
|
+
await write_files(pipes_versions, resources, "pipe", "pipe_file", progress_bar=progress_bar, fmt=fmt)
|
|
141
|
+
|
|
142
|
+
return
|
|
143
|
+
|
|
144
|
+
except AuthNoTokenException:
|
|
145
|
+
raise
|
|
146
|
+
except Exception as e:
|
|
147
|
+
raise click.ClickException(FeedbackManager.error_pull(error=str(e)))
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
async def _gather_with_concurrency(n, *tasks):
|
|
151
|
+
semaphore = Semaphore(n)
|
|
152
|
+
|
|
153
|
+
async def sem_task(task):
|
|
154
|
+
async with semaphore:
|
|
155
|
+
return await task
|
|
156
|
+
|
|
157
|
+
return await gather(*(sem_task(task) for task in tasks))
|
|
@@ -41,7 +41,7 @@ from tinybird.tb.modules.common import (
|
|
|
41
41
|
validate_kafka_topic,
|
|
42
42
|
wait_job,
|
|
43
43
|
)
|
|
44
|
-
from tinybird.tb.modules.datafile import get_name_version
|
|
44
|
+
from tinybird.tb.modules.datafile.common import get_name_version
|
|
45
45
|
from tinybird.tb.modules.exceptions import CLIDatasourceException
|
|
46
46
|
|
|
47
47
|
|
tinybird/tb/modules/fmt.py
CHANGED
|
@@ -10,7 +10,10 @@ from click import Context
|
|
|
10
10
|
from tinybird.feedback_manager import FeedbackManager
|
|
11
11
|
from tinybird.tb.modules.cli import cli
|
|
12
12
|
from tinybird.tb.modules.common import coro
|
|
13
|
-
from tinybird.tb.modules.datafile import
|
|
13
|
+
from tinybird.tb.modules.datafile.common import is_file_a_datasource
|
|
14
|
+
from tinybird.tb.modules.datafile.diff import color_diff, peek
|
|
15
|
+
from tinybird.tb.modules.datafile.format_datasource import format_datasource
|
|
16
|
+
from tinybird.tb.modules.datafile.format_pipe import format_pipe
|
|
14
17
|
|
|
15
18
|
|
|
16
19
|
@cli.command()
|
tinybird/tb/modules/pipe.py
CHANGED
|
@@ -19,8 +19,14 @@ from tinybird.config import DEFAULT_API_HOST, FeatureFlags
|
|
|
19
19
|
from tinybird.feedback_manager import FeedbackManager
|
|
20
20
|
from tinybird.tb.modules.branch import warn_if_in_live
|
|
21
21
|
from tinybird.tb.modules.cli import cli
|
|
22
|
-
from tinybird.tb.modules.common import
|
|
23
|
-
|
|
22
|
+
from tinybird.tb.modules.common import (
|
|
23
|
+
coro,
|
|
24
|
+
create_tb_client,
|
|
25
|
+
echo_safe_humanfriendly_tables_format_smart_table,
|
|
26
|
+
wait_job,
|
|
27
|
+
)
|
|
28
|
+
from tinybird.tb.modules.datafile.build import folder_push, process_file
|
|
29
|
+
from tinybird.tb.modules.datafile.common import PipeNodeTypes, PipeTypes, get_name_version
|
|
24
30
|
from tinybird.tb.modules.exceptions import CLIPipeException
|
|
25
31
|
|
|
26
32
|
|
tinybird/tb/modules/prompts.py
CHANGED
|
@@ -44,7 +44,7 @@ SQL >
|
|
|
44
44
|
- Create multiple pipes to show different use cases over the same datasource.
|
|
45
45
|
- The SQL query must be a valid ClickHouse SQL query that mixes ClickHouse syntax and Tinybird templating syntax.
|
|
46
46
|
- If you need to use dynamic parameters you must start the whole sql query ALWAYS with "%" symbol on top. e.g: SQL >\n %\n SELECT * FROM <table> WHERE <condition> LIMIT 10
|
|
47
|
-
- The Parameter functions like this one {{String(
|
|
47
|
+
- The Parameter functions like this one {{String(my_param_name,default_value)}} can be one of the following: String, DateTime, Date, Float32, Float64, Int, Integer, UInt8, UInt16, UInt32, UInt64, UInt128, UInt256, Int8, Int16, Int32, Int64, Int128, Int256
|
|
48
48
|
- Parameter names must be different from column names. Pass always the param name and a default value to the function.
|
|
49
49
|
- Nodes can't have the same exact name as the Pipe they belong to.
|
|
50
50
|
</instructions>
|
tinybird/tb/modules/workspace.py
CHANGED
|
@@ -26,7 +26,7 @@ from tinybird.tb.modules.common import (
|
|
|
26
26
|
switch_workspace,
|
|
27
27
|
)
|
|
28
28
|
from tinybird.tb.modules.config import CLIConfig
|
|
29
|
-
from tinybird.tb.modules.datafile import PipeTypes
|
|
29
|
+
from tinybird.tb.modules.datafile.common import PipeTypes
|
|
30
30
|
from tinybird.tb.modules.exceptions import CLIWorkspaceException
|
|
31
31
|
|
|
32
32
|
|
|
@@ -17,32 +17,45 @@ tinybird/ch_utils/constants.py,sha256=aYvg2C_WxYWsnqPdZB1ZFoIr8ZY-XjUXYyHKE9Ansj
|
|
|
17
17
|
tinybird/ch_utils/engine.py,sha256=OXkBhlzGjZotjD0vaT-rFIbSGV4tpiHxE8qO_ip0SyQ,40454
|
|
18
18
|
tinybird/tb/cli.py,sha256=6Lu3wsCNepAxjJCWy4c6RhVPArBtm8TlUcSxX--TsBo,783
|
|
19
19
|
tinybird/tb/modules/auth.py,sha256=hynZ-Temot8YBsySUWKSFzZlYadtFPxG3o6lCSu1n6E,9018
|
|
20
|
-
tinybird/tb/modules/branch.py,sha256=
|
|
21
|
-
tinybird/tb/modules/build.py,sha256=
|
|
20
|
+
tinybird/tb/modules/branch.py,sha256=R1tTUBGyI0p_dt2IAWbuyNOvemhjCIPwYxEmOxL3zOg,38468
|
|
21
|
+
tinybird/tb/modules/build.py,sha256=dAsgm3UyC46aMYFOH9O8qsyYdBJBoyoTV1mXSBcDJIc,7643
|
|
22
22
|
tinybird/tb/modules/cicd.py,sha256=mIMU1gNGpN3f5K3rBYN9rFoOT3RogDxIs_zB3LY-iO4,7463
|
|
23
|
-
tinybird/tb/modules/cli.py,sha256=
|
|
24
|
-
tinybird/tb/modules/common.py,sha256=
|
|
23
|
+
tinybird/tb/modules/cli.py,sha256=Yw6ooemOAIUZR-IKk05BG_D7RgoljTgoHBYW7aq4XaM,56674
|
|
24
|
+
tinybird/tb/modules/common.py,sha256=vb69xKJXbRjoYOlCwerXEU3488Od_zfR2N2yP5VyNw8,79372
|
|
25
25
|
tinybird/tb/modules/config.py,sha256=ppWvACHrSLkb5hOoQLYNby2w8jR76-8Kx2NBCst7ntQ,11760
|
|
26
26
|
tinybird/tb/modules/connection.py,sha256=ZSqBGoRiJedjHKEyB_fr1ybucOHtaad8d7uqGa2Q92M,28668
|
|
27
|
-
tinybird/tb/modules/create.py,sha256=
|
|
28
|
-
tinybird/tb/modules/
|
|
29
|
-
tinybird/tb/modules/datasource.py,sha256=Wkxj6QBtTKCgl43JFwMWafEHYnnQjGZZHoL2SbuC3KQ,35811
|
|
27
|
+
tinybird/tb/modules/create.py,sha256=24TWPzRnG8WmDLm8LP2Y5Sb4wwbz4rzarL3YwKQU4i8,6761
|
|
28
|
+
tinybird/tb/modules/datasource.py,sha256=tjcf5o-HYIdTkb_c1ErGUFIE-W6G992vsvCuDGcxb9Q,35818
|
|
30
29
|
tinybird/tb/modules/exceptions.py,sha256=4A2sSjCEqKUMqpP3WI00zouCWW4uLaghXXLZBSw04mY,3363
|
|
31
|
-
tinybird/tb/modules/fmt.py,sha256=
|
|
30
|
+
tinybird/tb/modules/fmt.py,sha256=UszEQO15fdzQ49QEj7Unhu68IKwSuKPsOrKhk2p2TAg,3547
|
|
32
31
|
tinybird/tb/modules/job.py,sha256=eoBVyA24lYIPonU88Jn7FF9hBKz1kScy9_w_oWreuc4,2952
|
|
33
32
|
tinybird/tb/modules/llm.py,sha256=D6ShlqCorZpRLjE5srI7Ws4VUTH6kSotTi88CvUwoGw,2446
|
|
34
33
|
tinybird/tb/modules/local.py,sha256=nCaN05ntqIGFbBqyhRwpwdLpcYwsx6Vvp0atU_KKaTo,5893
|
|
35
34
|
tinybird/tb/modules/mock.py,sha256=dYxm8_1zXGZnf4X8OYmG9hK1I-csHakD64Hag8mAn4Q,2069
|
|
36
|
-
tinybird/tb/modules/pipe.py,sha256=
|
|
37
|
-
tinybird/tb/modules/prompts.py,sha256=
|
|
35
|
+
tinybird/tb/modules/pipe.py,sha256=9wnfKbp2FkmLiJgVk3qbra76ktwsUTXghu6j9cCEahQ,31058
|
|
36
|
+
tinybird/tb/modules/prompts.py,sha256=u_-VSsqk8fXJTsLO3sCv9DR1Qx2V_M_Z_gBfiyvn5jA,7251
|
|
38
37
|
tinybird/tb/modules/regions.py,sha256=QjsL5H6Kg-qr0aYVLrvb1STeJ5Sx_sjvbOYO0LrEGMk,166
|
|
39
38
|
tinybird/tb/modules/table.py,sha256=hG-PRDVuFp2uph41WpoLRV1yjp3RI2fi_iGGiI0rdxU,7695
|
|
40
39
|
tinybird/tb/modules/tag.py,sha256=1qQWyk1p3Btv3LzM8VbJG-k7x2-pFuAlYCg3QL6QewI,3480
|
|
41
40
|
tinybird/tb/modules/telemetry.py,sha256=iEGnMuCuNhvF6ln__j6X9MSTwL_0Hm-GgFHHHvhfknk,10466
|
|
42
41
|
tinybird/tb/modules/test.py,sha256=psINFpSYT1eGgy32-_4q6CJ7LOcdwBpAfasMA0_tNOU,4330
|
|
43
42
|
tinybird/tb/modules/token.py,sha256=r0oeG1RpOOzHtqbUaHBiOmhE55HfNIvReAAWyKl9fJg,12695
|
|
44
|
-
tinybird/tb/modules/workspace.py,sha256=
|
|
43
|
+
tinybird/tb/modules/workspace.py,sha256=FVlh-kbiZp5Gvp6dGFxi0UD8ail77rMamXLhqdVwrZ0,10916
|
|
45
44
|
tinybird/tb/modules/workspace_members.py,sha256=08W0onEYkKLEC5TkAI07cxN9XSquEm7HnL7OkHAVDjo,8715
|
|
45
|
+
tinybird/tb/modules/datafile/build.py,sha256=NAvtZS8skAt_8HIdzOJhbp-d9kMIqFQJ9tupQ6M9IK0,90180
|
|
46
|
+
tinybird/tb/modules/datafile/build_common.py,sha256=74547h5ja4C66DAwDMabj75FA_BUTJxTJv-24tSFmrs,4551
|
|
47
|
+
tinybird/tb/modules/datafile/build_datasource.py,sha256=cJee7crf57gAGIa76Du0TznVU9gtk7F88eBCI7930tk,16836
|
|
48
|
+
tinybird/tb/modules/datafile/build_pipe.py,sha256=X4a-UM_GSOmR8ks2kBITgebXz-aE-iEdG5F1eEUzIyc,27555
|
|
49
|
+
tinybird/tb/modules/datafile/common.py,sha256=g5G0jXC-okEiKPnWa8X3p3-VxXoZlQQUwKzhxVA0tfs,33918
|
|
50
|
+
tinybird/tb/modules/datafile/diff.py,sha256=ZaTPGjRFJWokhaad_rMSxfYT92PA96s4WhhvlZubgyA,6769
|
|
51
|
+
tinybird/tb/modules/datafile/exceptions.py,sha256=8rw2umdZjtby85QbuRKFO5ETz_eRHwUY5l7eHsy1wnI,556
|
|
52
|
+
tinybird/tb/modules/datafile/format_common.py,sha256=zNWDXvwSKC9_T5e9R92LLj9ekDflVWwsllhGQilZsnY,2184
|
|
53
|
+
tinybird/tb/modules/datafile/format_datasource.py,sha256=tsnCjONISvhFuucKNbIHkT__UmlUbcswx5mwI9hiDQc,6216
|
|
54
|
+
tinybird/tb/modules/datafile/format_pipe.py,sha256=R5tnlEccLn3KX6ehtC_H2sGQNrthuJUiVSN9z_-KGCY,7474
|
|
55
|
+
tinybird/tb/modules/datafile/parse_datasource.py,sha256=9pp0fJ2Da-7pznaHq5OV7NvzswK0RuXOPHU4kXNRMnA,1111
|
|
56
|
+
tinybird/tb/modules/datafile/parse_pipe.py,sha256=STgA12LOLUnnb_cvVvZeEE4ka-nfk0jsNzxJhWj94cY,2599
|
|
57
|
+
tinybird/tb/modules/datafile/pipe_checker.py,sha256=cp80Bru41GlyMRvyERpdJNXns2MjmtIAWFnBLF4cPXs,24667
|
|
58
|
+
tinybird/tb/modules/datafile/pull.py,sha256=MleQG9GTo9_ZoMKrneps-QzI4dr6n5IPosHWz2sTz20,5894
|
|
46
59
|
tinybird/tb/modules/tinyunit/tinyunit.py,sha256=IkjRCvb8HnNEE84rtl0I1b9gQVpE_zCE8MvFFet51sg,11716
|
|
47
60
|
tinybird/tb/modules/tinyunit/tinyunit_lib.py,sha256=hGh1ZaXC1af7rKnX7222urkj0QJMhMWclqMy59dOqwE,1922
|
|
48
61
|
tinybird/tb_cli_modules/cicd.py,sha256=0lMkb6CVOFZl5HOwgY8mK4T4mgI7O8335UngLXtCc-c,13851
|
|
@@ -51,8 +64,8 @@ tinybird/tb_cli_modules/config.py,sha256=6NTgIdwf0X132A1j6G_YrdPep87ymZ9b5pABabK
|
|
|
51
64
|
tinybird/tb_cli_modules/exceptions.py,sha256=pmucP4kTF4irIt7dXiG-FcnI-o3mvDusPmch1L8RCWk,3367
|
|
52
65
|
tinybird/tb_cli_modules/regions.py,sha256=QjsL5H6Kg-qr0aYVLrvb1STeJ5Sx_sjvbOYO0LrEGMk,166
|
|
53
66
|
tinybird/tb_cli_modules/telemetry.py,sha256=iEGnMuCuNhvF6ln__j6X9MSTwL_0Hm-GgFHHHvhfknk,10466
|
|
54
|
-
tinybird-0.0.1.
|
|
55
|
-
tinybird-0.0.1.
|
|
56
|
-
tinybird-0.0.1.
|
|
57
|
-
tinybird-0.0.1.
|
|
58
|
-
tinybird-0.0.1.
|
|
67
|
+
tinybird-0.0.1.dev7.dist-info/METADATA,sha256=MDbMCTsirb0x3yH4RirvEzBzYvjieV1ucRH1R89aPAw,2404
|
|
68
|
+
tinybird-0.0.1.dev7.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
|
69
|
+
tinybird-0.0.1.dev7.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
|
|
70
|
+
tinybird-0.0.1.dev7.dist-info/top_level.txt,sha256=pgw6AzERHBcW3YTi2PW4arjxLkulk2msOz_SomfOEuc,45
|
|
71
|
+
tinybird-0.0.1.dev7.dist-info/RECORD,,
|