tinybird 0.0.1.dev2__tar.gz → 0.0.1.dev3__tar.gz

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.

Files changed (53) hide show
  1. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/PKG-INFO +1 -1
  2. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/__cli__.py +2 -2
  3. tinybird-0.0.1.dev3/tinybird/tb_cli_modules/llm.py +31 -0
  4. tinybird-0.0.1.dev3/tinybird/tb_cli_modules/local.py +108 -0
  5. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird.egg-info/PKG-INFO +1 -1
  6. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird.egg-info/SOURCES.txt +2 -0
  7. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/setup.cfg +0 -0
  8. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/ch_utils/constants.py +0 -0
  9. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/ch_utils/engine.py +0 -0
  10. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/check_pypi.py +0 -0
  11. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/client.py +0 -0
  12. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/config.py +0 -0
  13. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/connectors.py +0 -0
  14. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/context.py +0 -0
  15. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/datafile.py +0 -0
  16. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/datatypes.py +0 -0
  17. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/feedback_manager.py +0 -0
  18. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/git_settings.py +0 -0
  19. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/sql.py +0 -0
  20. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/sql_template.py +0 -0
  21. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/sql_template_fmt.py +0 -0
  22. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/sql_toolset.py +0 -0
  23. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/syncasync.py +0 -0
  24. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli.py +0 -0
  25. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/auth.py +0 -0
  26. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/branch.py +0 -0
  27. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/build.py +0 -0
  28. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/cicd.py +0 -0
  29. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/cli.py +0 -0
  30. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/common.py +0 -0
  31. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/config.py +0 -0
  32. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/connection.py +0 -0
  33. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/create.py +0 -0
  34. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/datasource.py +0 -0
  35. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/exceptions.py +0 -0
  36. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/fmt.py +0 -0
  37. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/job.py +0 -0
  38. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/pipe.py +0 -0
  39. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/prompts.py +0 -0
  40. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/regions.py +0 -0
  41. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/tag.py +0 -0
  42. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/telemetry.py +0 -0
  43. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/test.py +0 -0
  44. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
  45. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py +0 -0
  46. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/token.py +0 -0
  47. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/workspace.py +0 -0
  48. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tb_cli_modules/workspace_members.py +0 -0
  49. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird/tornado_template.py +0 -0
  50. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird.egg-info/dependency_links.txt +0 -0
  51. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird.egg-info/entry_points.txt +0 -0
  52. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird.egg-info/requires.txt +0 -0
  53. {tinybird-0.0.1.dev2 → tinybird-0.0.1.dev3}/tinybird.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tinybird
3
- Version: 0.0.1.dev2
3
+ Version: 0.0.1.dev3
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/cli/introduction.html
6
6
  Author: Tinybird
@@ -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.dev2'
8
- __revision__ = 'bdbc260'
7
+ __version__ = '0.0.1.dev3'
8
+ __revision__ = '50bec29'
@@ -0,0 +1,31 @@
1
+ from typing import List, Optional
2
+
3
+ from openai import OpenAI
4
+ from pydantic import BaseModel
5
+
6
+ from tinybird.tb_cli_modules.prompts import create_project_prompt
7
+
8
+
9
+ class DataFile(BaseModel):
10
+ name: str
11
+ content: str
12
+
13
+
14
+ class DataProject(BaseModel):
15
+ datasources: List[DataFile]
16
+ pipes: List[DataFile]
17
+
18
+
19
+ class LLM:
20
+ def __init__(self, model: Optional[str] = None, key: Optional[str] = None):
21
+ self.model = model
22
+ self.key = key
23
+
24
+ async def create_project(self, prompt: str) -> DataProject:
25
+ client = OpenAI(api_key=self.key)
26
+ completion = client.beta.chat.completions.parse(
27
+ model=self.model,
28
+ messages=[{"role": "system", "content": create_project_prompt}, {"role": "user", "content": prompt}],
29
+ response_format=DataProject,
30
+ )
31
+ return completion.choices[0].message.parsed or DataProject(datasources=[], pipes=[])
@@ -0,0 +1,108 @@
1
+ import time
2
+
3
+ import click
4
+ import requests
5
+
6
+ import docker
7
+ from tinybird.feedback_manager import FeedbackManager
8
+ from tinybird.tb_cli_modules.common import CLIException
9
+ from tinybird.tb_cli_modules.config import CLIConfig
10
+
11
+ # TODO: Use the official Tinybird image once it's available 'tinybirdco/tinybird-local:latest'
12
+ TB_IMAGE_NAME = "registry.gitlab.com/tinybird/analytics/tinybird-local-jammy-3.11:latest"
13
+ TB_CONTAINER_NAME = "tinybird-local"
14
+ TB_LOCAL_PORT = 80
15
+ TB_LOCAL_HOST = f"http://localhost:{TB_LOCAL_PORT}"
16
+
17
+
18
+ def start_tinybird_local(
19
+ docker_client,
20
+ ):
21
+ """Start the Tinybird container."""
22
+ containers = docker_client.containers.list(all=True, filters={"name": TB_CONTAINER_NAME})
23
+ if containers:
24
+ # Container `start` is idempotent. It's safe to call it even if the container is already running.
25
+ container = containers[0]
26
+ container.start()
27
+ else:
28
+ pull_required = False
29
+ try:
30
+ local_image = docker_client.images.get(TB_IMAGE_NAME)
31
+ local_image_id = local_image.attrs["RepoDigests"][0].split("@")[1]
32
+ remote_image = docker_client.images.get_registry_data(TB_IMAGE_NAME)
33
+ pull_required = local_image_id != remote_image.id
34
+ except Exception:
35
+ pull_required = True
36
+
37
+ if pull_required:
38
+ click.echo(
39
+ FeedbackManager.info(message="** Downloading latest version of Tinybird development environment...")
40
+ )
41
+ docker_client.images.pull(TB_IMAGE_NAME, platform="linux/amd64")
42
+
43
+ container = docker_client.containers.run(
44
+ TB_IMAGE_NAME,
45
+ name=TB_CONTAINER_NAME,
46
+ detach=True,
47
+ ports={"80/tcp": TB_LOCAL_PORT},
48
+ remove=False,
49
+ platform="linux/amd64",
50
+ )
51
+
52
+ click.echo(FeedbackManager.info(message="** Waiting for Tinybird development environment to be ready..."))
53
+ for attempt in range(10):
54
+ try:
55
+ run = container.exec_run("tb --no-version-warning sql 'SELECT 1 AS healthcheck' --format json").output
56
+ # dont parse the json as docker sometimes returns warning messages
57
+ # todo: rafa, make this rigth
58
+ if b'"healthcheck": 1' in run:
59
+ break
60
+ raise RuntimeError("Unexpected response from Tinybird")
61
+ except Exception:
62
+ if attempt == 9: # Last attempt
63
+ raise CLIException("Tinybird local environment not ready yet. Please try again in a few seconds.")
64
+ time.sleep(5) # Wait 5 seconds before retrying
65
+
66
+
67
+ def get_docker_client():
68
+ """Check if Docker is installed and running."""
69
+ try:
70
+ client = docker.from_env()
71
+ client.ping()
72
+ return client
73
+ except Exception:
74
+ raise CLIException("Docker is not running or installed. Please ensure Docker is installed and running.")
75
+
76
+
77
+ def stop_tinybird_local(docker_client):
78
+ """Stop the Tinybird container."""
79
+ try:
80
+ container = docker_client.containers.get(TB_CONTAINER_NAME)
81
+ container.stop()
82
+ except Exception:
83
+ pass
84
+
85
+
86
+ def remove_tinybird_local(docker_client):
87
+ """Remove the Tinybird container."""
88
+ try:
89
+ container = docker_client.containers.get(TB_CONTAINER_NAME)
90
+ container.remove(force=True)
91
+ except Exception:
92
+ pass
93
+
94
+
95
+ def set_up_tinybird_local(docker_client):
96
+ """Set up the Tinybird local environment."""
97
+ start_tinybird_local(docker_client)
98
+ return get_tinybird_local_client()
99
+
100
+
101
+ def get_tinybird_local_client():
102
+ """Get a Tinybird client connected to the local environment."""
103
+ config = CLIConfig.get_project_config()
104
+ tokens = requests.get(f"{TB_LOCAL_HOST}/tokens").json()
105
+ token = tokens["workspace_admin_token"]
106
+ config.set_token(token)
107
+ config.set_host(TB_LOCAL_HOST)
108
+ return config.get_client(host=TB_LOCAL_HOST, token=token)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tinybird
3
- Version: 0.0.1.dev2
3
+ Version: 0.0.1.dev3
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/cli/introduction.html
6
6
  Author: Tinybird
@@ -36,6 +36,8 @@ tinybird/tb_cli_modules/datasource.py
36
36
  tinybird/tb_cli_modules/exceptions.py
37
37
  tinybird/tb_cli_modules/fmt.py
38
38
  tinybird/tb_cli_modules/job.py
39
+ tinybird/tb_cli_modules/llm.py
40
+ tinybird/tb_cli_modules/local.py
39
41
  tinybird/tb_cli_modules/pipe.py
40
42
  tinybird/tb_cli_modules/prompts.py
41
43
  tinybird/tb_cli_modules/regions.py
File without changes