tinybird 0.0.1.dev278__tar.gz → 0.0.1.dev280__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.
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/PKG-INFO +1 -1
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/__cli__.py +2 -2
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/agent.py +16 -3
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/secret.py +0 -1
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/utils.py +0 -1
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/build.py +0 -3
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/build_common.py +0 -2
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/cli.py +7 -5
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/common.py +28 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/exceptions.py +7 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/local.py +1 -29
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/local_common.py +4 -1
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/secret_common.py +7 -11
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/test_common.py +10 -7
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird.egg-info/PKG-INFO +1 -1
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/setup.cfg +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/__cli__.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/ch_utils/constants.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/ch_utils/engine.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/check_pypi.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/client.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/config.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/connectors.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/context.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/datafile/common.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/datafile/exceptions.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/datafile/parse_connection.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/datafile/parse_datasource.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/datafile/parse_pipe.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/datatypes.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/feedback_manager.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/git_settings.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/prompts.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/sql.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/sql_template.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/sql_template_fmt.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/sql_toolset.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/syncasync.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/check_pypi.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/cli.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/client.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/config.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/__init__.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/animations.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/banner.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/command_agent.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/compactor.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/explore_agent.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/memory.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/models.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/prompts.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/testing_agent.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/__init__.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/analyze.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/append.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/build.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/datafile.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/deploy.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/deploy_check.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/diff_resource.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/execute_query.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/get_endpoint_stats.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/get_openapi_definition.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/mock.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/plan.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/request_endpoint.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/run_command.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/test.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/cicd.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/config.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/connection.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/copy.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/create.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/build.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/build_common.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/build_datasource.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/build_pipe.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/diff.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/fixture.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/format_common.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/format_datasource.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/format_pipe.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/pipe_checker.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/playground.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/pull.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datasource.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/deployment.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/deployment_common.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/deprecations.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/dev_server.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/endpoint.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/feedback_manager.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/info.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/infra.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/job.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/llm.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/llm_utils.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/login.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/login_common.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/logout.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/materialization.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/mock.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/mock_common.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/open.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/pipe.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/project.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/regions.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/secret.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/shell.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/sink.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/table.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/telemetry.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/test.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/tinyunit/tinyunit.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/tinyunit/tinyunit_lib.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/token.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/watch.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/workspace.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/workspace_members.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/auth.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/branch.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/cicd.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/cli.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/common.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/config.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/connection.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/datasource.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/exceptions.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/fmt.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/job.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/pipe.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/regions.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/tag.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/telemetry.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/test.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/workspace.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/workspace_members.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tornado_template.py +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird.egg-info/SOURCES.txt +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird.egg-info/dependency_links.txt +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird.egg-info/entry_points.txt +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird.egg-info/requires.txt +0 -0
- {tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird.egg-info/top_level.txt +0 -0
|
@@ -4,5 +4,5 @@ __description__ = 'Tinybird Command Line Tool'
|
|
|
4
4
|
__url__ = 'https://www.tinybird.co/docs/forward/commands'
|
|
5
5
|
__author__ = 'Tinybird'
|
|
6
6
|
__author_email__ = 'support@tinybird.co'
|
|
7
|
-
__version__ = '0.0.1.
|
|
8
|
-
__revision__ = '
|
|
7
|
+
__version__ = '0.0.1.dev280'
|
|
8
|
+
__revision__ = 'e419ff7'
|
|
@@ -14,7 +14,9 @@ from pydantic_ai import Agent, RunContext, Tool
|
|
|
14
14
|
from pydantic_ai.messages import ModelMessage, ModelRequest, UserPromptPart
|
|
15
15
|
from requests import Response
|
|
16
16
|
|
|
17
|
+
from tinybird.tb.check_pypi import CheckPypi
|
|
17
18
|
from tinybird.tb.client import TinyB
|
|
19
|
+
from tinybird.tb.config import CURRENT_VERSION
|
|
18
20
|
from tinybird.tb.modules.agent.animations import ThinkingAnimation
|
|
19
21
|
from tinybird.tb.modules.agent.banner import display_banner
|
|
20
22
|
from tinybird.tb.modules.agent.command_agent import CommandAgent
|
|
@@ -54,6 +56,7 @@ from tinybird.tb.modules.common import (
|
|
|
54
56
|
echo_safe_humanfriendly_tables_format_pretty_table,
|
|
55
57
|
get_region_from_host,
|
|
56
58
|
get_regions,
|
|
59
|
+
update_cli,
|
|
57
60
|
)
|
|
58
61
|
from tinybird.tb.modules.config import CLIConfig
|
|
59
62
|
from tinybird.tb.modules.deployment_common import create_deployment
|
|
@@ -64,7 +67,6 @@ from tinybird.tb.modules.local_common import get_tinybird_local_client
|
|
|
64
67
|
from tinybird.tb.modules.login_common import login
|
|
65
68
|
from tinybird.tb.modules.mock_common import append_mock_data, create_mock_data
|
|
66
69
|
from tinybird.tb.modules.project import Project
|
|
67
|
-
from tinybird.tb.modules.secret_common import load_secrets
|
|
68
70
|
from tinybird.tb.modules.test_common import run_tests as run_tests_common
|
|
69
71
|
|
|
70
72
|
|
|
@@ -206,7 +208,6 @@ class TinybirdAgent:
|
|
|
206
208
|
str: The summary of the result.
|
|
207
209
|
"""
|
|
208
210
|
result = self.explore_agent.run(task, deps=ctx.deps, usage=ctx.usage)
|
|
209
|
-
self.explore_agent.clear_messages()
|
|
210
211
|
return result.output or "No result returned"
|
|
211
212
|
|
|
212
213
|
@self.agent.instructions
|
|
@@ -297,7 +298,6 @@ class TinybirdAgent:
|
|
|
297
298
|
local_host=local_client.host,
|
|
298
299
|
local_token=local_client.token,
|
|
299
300
|
run_id=run_id,
|
|
300
|
-
load_secrets_local=partial(load_secrets, project=project, client=local_client),
|
|
301
301
|
)
|
|
302
302
|
|
|
303
303
|
def run(self, user_prompt: str, config: dict[str, Any]) -> None:
|
|
@@ -371,6 +371,19 @@ class TinybirdAgent:
|
|
|
371
371
|
def run_agent(
|
|
372
372
|
config: dict[str, Any], project: Project, dangerously_skip_permissions: bool, prompt: Optional[str] = None
|
|
373
373
|
):
|
|
374
|
+
if not prompt:
|
|
375
|
+
latest_version = CheckPypi().get_latest_version()
|
|
376
|
+
if latest_version and "x.y.z" not in CURRENT_VERSION and latest_version != CURRENT_VERSION:
|
|
377
|
+
yes = click.confirm(
|
|
378
|
+
FeedbackManager.warning(
|
|
379
|
+
message=f"New version available. {CURRENT_VERSION} -> {latest_version}. Do you want to update now? [Y/n]"
|
|
380
|
+
),
|
|
381
|
+
show_default=False,
|
|
382
|
+
default=True,
|
|
383
|
+
prompt_suffix="",
|
|
384
|
+
)
|
|
385
|
+
if yes:
|
|
386
|
+
update_cli()
|
|
374
387
|
click.echo(FeedbackManager.highlight(message="» Initializing Tinybird Code..."))
|
|
375
388
|
token = config.get("token", None)
|
|
376
389
|
host = config.get("host", None)
|
|
@@ -84,7 +84,6 @@ def create_or_update_secrets(ctx: RunContext[TinybirdAgentContext], secrets: dic
|
|
|
84
84
|
action = "Updating" if env_file_path.exists() and updated_keys else "Creating"
|
|
85
85
|
click.echo(FeedbackManager.highlight(message=f"» {action} secrets in .env.local..."))
|
|
86
86
|
env_file_path.write_text(new_content)
|
|
87
|
-
ctx.deps.load_secrets_local()
|
|
88
87
|
ctx.deps.build_project(test=False, silent=True, load_fixtures=False)
|
|
89
88
|
|
|
90
89
|
# Generate success message
|
|
@@ -61,7 +61,6 @@ class TinybirdAgentContext(BaseModel):
|
|
|
61
61
|
get_connection_datafile_cloud: Callable[..., str]
|
|
62
62
|
get_connection_datafile_local: Callable[..., str]
|
|
63
63
|
run_tests: Callable[..., Optional[str]]
|
|
64
|
-
load_secrets_local: Callable[..., None]
|
|
65
64
|
dangerously_skip_permissions: bool
|
|
66
65
|
token: str
|
|
67
66
|
user_token: str
|
|
@@ -20,7 +20,6 @@ from tinybird.tb.modules.datafile.playground import folder_playground
|
|
|
20
20
|
from tinybird.tb.modules.dev_server import BuildStatus, start_server
|
|
21
21
|
from tinybird.tb.modules.feedback_manager import FeedbackManager
|
|
22
22
|
from tinybird.tb.modules.project import Project
|
|
23
|
-
from tinybird.tb.modules.secret_common import load_secrets
|
|
24
23
|
from tinybird.tb.modules.shell import Shell, print_table_formatted
|
|
25
24
|
from tinybird.tb.modules.watch import watch_files, watch_project
|
|
26
25
|
|
|
@@ -47,7 +46,6 @@ def build(ctx: click.Context, watch: bool) -> None:
|
|
|
47
46
|
)
|
|
48
47
|
)
|
|
49
48
|
|
|
50
|
-
load_secrets(project, tb_client)
|
|
51
49
|
click.echo(FeedbackManager.highlight_building_project())
|
|
52
50
|
process(project=project, tb_client=tb_client, watch=False)
|
|
53
51
|
if watch:
|
|
@@ -76,7 +74,6 @@ def dev(ctx: click.Context, data_origin: str, ui: bool) -> None:
|
|
|
76
74
|
# Wait for the server to start
|
|
77
75
|
time.sleep(0.5)
|
|
78
76
|
|
|
79
|
-
load_secrets(project, tb_client)
|
|
80
77
|
click.echo(FeedbackManager.highlight_building_project())
|
|
81
78
|
process(project=project, tb_client=tb_client, watch=True, build_status=build_status)
|
|
82
79
|
run_watch(
|
|
@@ -14,7 +14,6 @@ from tinybird.tb.modules.datafile.fixture import FixtureExtension, get_fixture_d
|
|
|
14
14
|
from tinybird.tb.modules.dev_server import BuildStatus
|
|
15
15
|
from tinybird.tb.modules.feedback_manager import FeedbackManager
|
|
16
16
|
from tinybird.tb.modules.project import Project
|
|
17
|
-
from tinybird.tb.modules.secret_common import load_secrets
|
|
18
17
|
from tinybird.tb.modules.shell import print_table_formatted
|
|
19
18
|
|
|
20
19
|
|
|
@@ -49,7 +48,6 @@ def process(
|
|
|
49
48
|
build_status.building = False
|
|
50
49
|
build_status.error = None
|
|
51
50
|
elif file_changed and (file_changed.endswith(".env.local") or file_changed.endswith(".env")):
|
|
52
|
-
load_secrets(project, tb_client)
|
|
53
51
|
if build_status:
|
|
54
52
|
build_status.building = False
|
|
55
53
|
build_status.error = None
|
|
@@ -121,7 +121,8 @@ def cli(
|
|
|
121
121
|
if getenv_bool("TB_DISABLE_SSL_CHECKS", False):
|
|
122
122
|
click.echo(FeedbackManager.warning_disabled_ssl_checks())
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
is_agent_mode = ctx.invoked_subcommand is None
|
|
125
|
+
if not environ.get("PYTEST", None) and version_warning and not token and not is_agent_mode:
|
|
125
126
|
latest_version = CheckPypi().get_latest_version()
|
|
126
127
|
if latest_version:
|
|
127
128
|
if "x.y.z" in CURRENT_VERSION:
|
|
@@ -195,16 +196,15 @@ def cli(
|
|
|
195
196
|
if "--help" in sys.argv or "-h" in sys.argv:
|
|
196
197
|
return
|
|
197
198
|
|
|
198
|
-
|
|
199
|
+
ctx.ensure_object(dict)["project"] = project
|
|
200
|
+
client = create_ctx_client(ctx, config, cloud, staging, project=project, show_warnings=version_warning)
|
|
199
201
|
|
|
200
202
|
if client:
|
|
201
203
|
ctx.ensure_object(dict)["client"] = client
|
|
202
204
|
|
|
203
|
-
ctx.ensure_object(dict)["project"] = project
|
|
204
205
|
ctx.ensure_object(dict)["env"] = get_target_env(cloud)
|
|
205
206
|
ctx.ensure_object(dict)["output"] = output
|
|
206
207
|
|
|
207
|
-
is_agent_mode = ctx.invoked_subcommand is None
|
|
208
208
|
is_prompt_mode = prompt is not None
|
|
209
209
|
|
|
210
210
|
if is_agent_mode or is_prompt_mode:
|
|
@@ -368,7 +368,9 @@ def __hide_click_output() -> None:
|
|
|
368
368
|
click.secho = silent_secho # type: ignore
|
|
369
369
|
|
|
370
370
|
|
|
371
|
-
def create_ctx_client(
|
|
371
|
+
def create_ctx_client(
|
|
372
|
+
ctx: Context, config: Dict[str, Any], cloud: bool, staging: bool, project: Project, show_warnings: bool = True
|
|
373
|
+
):
|
|
372
374
|
commands_without_ctx_client = [
|
|
373
375
|
"auth",
|
|
374
376
|
"check",
|
|
@@ -9,6 +9,7 @@ import json
|
|
|
9
9
|
import os
|
|
10
10
|
import re
|
|
11
11
|
import socket
|
|
12
|
+
import subprocess
|
|
12
13
|
import sys
|
|
13
14
|
import time
|
|
14
15
|
import uuid
|
|
@@ -2234,3 +2235,30 @@ def force_echo(string: str) -> None:
|
|
|
2234
2235
|
|
|
2235
2236
|
def echo_json(data: Dict[str, Any], indent: Union[None, int, str] = None) -> None:
|
|
2236
2237
|
force_echo(json.dumps(data, indent=indent))
|
|
2238
|
+
|
|
2239
|
+
|
|
2240
|
+
def update_cli() -> None:
|
|
2241
|
+
click.echo(FeedbackManager.highlight(message="» Updating Tinybird CLI..."))
|
|
2242
|
+
|
|
2243
|
+
try:
|
|
2244
|
+
process = subprocess.Popen(
|
|
2245
|
+
["uv", "tool", "upgrade", "tinybird"],
|
|
2246
|
+
stdout=subprocess.PIPE,
|
|
2247
|
+
stderr=subprocess.PIPE,
|
|
2248
|
+
text=True,
|
|
2249
|
+
)
|
|
2250
|
+
except FileNotFoundError:
|
|
2251
|
+
raise CLIException(
|
|
2252
|
+
FeedbackManager.error(
|
|
2253
|
+
message="Cannot find required tool: uv. Reinstall using: curl https://tinybird.co | sh"
|
|
2254
|
+
)
|
|
2255
|
+
)
|
|
2256
|
+
|
|
2257
|
+
stdout, stderr = process.communicate()
|
|
2258
|
+
if "Nothing to upgrade" not in stdout + stderr:
|
|
2259
|
+
for line in stdout.split("\n") + stderr.split("\n"):
|
|
2260
|
+
if "Updated tinybird" in line:
|
|
2261
|
+
click.echo(FeedbackManager.info(message=f"» {line}"))
|
|
2262
|
+
click.echo(FeedbackManager.success(message="✓ Tinybird CLI updated"))
|
|
2263
|
+
else:
|
|
2264
|
+
click.echo(FeedbackManager.info(message="✓ Tinybird CLI is already up-to-date"))
|
|
@@ -139,3 +139,10 @@ class CLILocalException(CLIException):
|
|
|
139
139
|
|
|
140
140
|
def __init__(self, message: str, **kw_telemetry_event_data: Any) -> None:
|
|
141
141
|
super().__init__(message, "local_error", **kw_telemetry_event_data)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
class CLISecretException(CLIException):
|
|
145
|
+
"""Exceptions generated by the secret commands"""
|
|
146
|
+
|
|
147
|
+
def __init__(self, message: str, **kw_telemetry_event_data: Any) -> None:
|
|
148
|
+
super().__init__(message, "secret_error", **kw_telemetry_event_data)
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import subprocess
|
|
2
1
|
from pathlib import Path
|
|
3
2
|
|
|
4
3
|
import click
|
|
@@ -6,7 +5,7 @@ import requests
|
|
|
6
5
|
|
|
7
6
|
from docker.client import DockerClient
|
|
8
7
|
from tinybird.tb.modules.cli import cli
|
|
9
|
-
from tinybird.tb.modules.
|
|
8
|
+
from tinybird.tb.modules.common import update_cli
|
|
10
9
|
from tinybird.tb.modules.feedback_manager import FeedbackManager
|
|
11
10
|
from tinybird.tb.modules.local_common import (
|
|
12
11
|
TB_CONTAINER_NAME,
|
|
@@ -42,33 +41,6 @@ def remove_tinybird_local(docker_client: DockerClient, persist_data: bool) -> No
|
|
|
42
41
|
pass
|
|
43
42
|
|
|
44
43
|
|
|
45
|
-
def update_cli() -> None:
|
|
46
|
-
click.echo(FeedbackManager.highlight(message="» Updating Tinybird CLI..."))
|
|
47
|
-
|
|
48
|
-
try:
|
|
49
|
-
process = subprocess.Popen(
|
|
50
|
-
["uv", "tool", "upgrade", "tinybird"],
|
|
51
|
-
stdout=subprocess.PIPE,
|
|
52
|
-
stderr=subprocess.PIPE,
|
|
53
|
-
text=True,
|
|
54
|
-
)
|
|
55
|
-
except FileNotFoundError:
|
|
56
|
-
raise CLIException(
|
|
57
|
-
FeedbackManager.error(
|
|
58
|
-
message="Cannot find required tool: uv. Reinstall using: curl https://tinybird.co | sh"
|
|
59
|
-
)
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
stdout, stderr = process.communicate()
|
|
63
|
-
if "Nothing to upgrade" not in stdout + stderr:
|
|
64
|
-
for line in stdout.split("\n") + stderr.split("\n"):
|
|
65
|
-
if "Updated tinybird" in line:
|
|
66
|
-
click.echo(FeedbackManager.info(message=f"» {line}"))
|
|
67
|
-
click.echo(FeedbackManager.success(message="✓ Tinybird CLI updated"))
|
|
68
|
-
else:
|
|
69
|
-
click.echo(FeedbackManager.info(message="✓ Tinybird CLI is already up-to-date"))
|
|
70
|
-
|
|
71
|
-
|
|
72
44
|
@cli.command()
|
|
73
45
|
def update() -> None:
|
|
74
46
|
"""Update Tinybird CLI to the latest version."""
|
|
@@ -18,6 +18,7 @@ from tinybird.tb.client import AuthNoTokenException, TinyB
|
|
|
18
18
|
from tinybird.tb.modules.config import CLIConfig
|
|
19
19
|
from tinybird.tb.modules.exceptions import CLILocalException
|
|
20
20
|
from tinybird.tb.modules.feedback_manager import FeedbackManager
|
|
21
|
+
from tinybird.tb.modules.secret_common import load_secrets
|
|
21
22
|
from tinybird.tb.modules.telemetry import add_telemetry_event
|
|
22
23
|
|
|
23
24
|
TB_IMAGE_NAME = "tinybirdco/tinybird-local:latest"
|
|
@@ -34,7 +35,9 @@ def get_tinybird_local_client(
|
|
|
34
35
|
"""Get a Tinybird client connected to the local environment."""
|
|
35
36
|
|
|
36
37
|
config = get_tinybird_local_config(config_obj, test=test, silent=silent)
|
|
37
|
-
|
|
38
|
+
client = config.get_client(host=TB_LOCAL_ADDRESS, staging=staging)
|
|
39
|
+
load_secrets(config_obj.get("path", ""), client)
|
|
40
|
+
return client
|
|
38
41
|
|
|
39
42
|
|
|
40
43
|
def get_tinybird_local_config(config_obj: Dict[str, Any], test: bool = False, silent: bool = False) -> CLIConfig:
|
|
@@ -1,20 +1,19 @@
|
|
|
1
|
+
from pathlib import Path
|
|
1
2
|
from typing import Dict
|
|
2
3
|
|
|
3
|
-
import click
|
|
4
4
|
from dotenv import dotenv_values
|
|
5
5
|
|
|
6
6
|
from tinybird.tb.client import TinyB
|
|
7
|
-
from tinybird.tb.modules.
|
|
8
|
-
from tinybird.tb.modules.project import Project
|
|
7
|
+
from tinybird.tb.modules.exceptions import CLISecretException
|
|
9
8
|
|
|
10
9
|
|
|
11
|
-
def load_secrets(
|
|
10
|
+
def load_secrets(project_folder: str, client: TinyB):
|
|
12
11
|
try:
|
|
13
12
|
env_vars: Dict[str, str] = {}
|
|
14
13
|
|
|
15
14
|
# Load secrets from .env file
|
|
16
15
|
env_file = ".env"
|
|
17
|
-
env_path =
|
|
16
|
+
env_path = Path(project_folder) / env_file
|
|
18
17
|
|
|
19
18
|
if env_path.exists():
|
|
20
19
|
env_values = dotenv_values(env_path)
|
|
@@ -23,7 +22,7 @@ def load_secrets(project: Project, client: TinyB):
|
|
|
23
22
|
|
|
24
23
|
# Load secrets from .env.local file
|
|
25
24
|
env_file = ".env.local"
|
|
26
|
-
env_path =
|
|
25
|
+
env_path = Path(project_folder) / env_file
|
|
27
26
|
|
|
28
27
|
if env_path.exists():
|
|
29
28
|
env_values = dotenv_values(env_path)
|
|
@@ -33,8 +32,6 @@ def load_secrets(project: Project, client: TinyB):
|
|
|
33
32
|
if len(env_vars.keys()) == 0:
|
|
34
33
|
return
|
|
35
34
|
|
|
36
|
-
click.echo(FeedbackManager.highlight(message="\n» Loading secrets from .env files..."))
|
|
37
|
-
|
|
38
35
|
for name, value in env_vars.items():
|
|
39
36
|
if not value:
|
|
40
37
|
continue
|
|
@@ -49,8 +46,7 @@ def load_secrets(project: Project, client: TinyB):
|
|
|
49
46
|
else:
|
|
50
47
|
client.create_secret(name, value)
|
|
51
48
|
except Exception as e:
|
|
52
|
-
|
|
49
|
+
raise Exception(f"Error setting secret '{name}': {e}")
|
|
53
50
|
|
|
54
|
-
click.echo(FeedbackManager.success(message="✓ Secrets loaded!"))
|
|
55
51
|
except Exception as e:
|
|
56
|
-
|
|
52
|
+
raise CLISecretException(str(e))
|
|
@@ -25,7 +25,6 @@ from tinybird.tb.modules.llm import LLM
|
|
|
25
25
|
from tinybird.tb.modules.llm_utils import extract_xml, parse_xml
|
|
26
26
|
from tinybird.tb.modules.local_common import get_local_tokens, get_test_workspace_name
|
|
27
27
|
from tinybird.tb.modules.project import Project
|
|
28
|
-
from tinybird.tb.modules.secret_common import load_secrets
|
|
29
28
|
|
|
30
29
|
yaml.SafeDumper.org_represent_str = yaml.SafeDumper.represent_str # type: ignore[attr-defined]
|
|
31
30
|
|
|
@@ -64,9 +63,10 @@ def create_test(
|
|
|
64
63
|
tests: List[Dict[str, Any]] = []
|
|
65
64
|
|
|
66
65
|
try:
|
|
67
|
-
load_secrets(project=project, client=client)
|
|
68
66
|
click.echo(FeedbackManager.highlight(message="\n» Building test environment"))
|
|
69
|
-
build_project(project=project, tb_client=client, watch=False, silent=True)
|
|
67
|
+
build_error = build_project(project=project, tb_client=client, watch=False, silent=True, exit_on_error=False)
|
|
68
|
+
if build_error:
|
|
69
|
+
raise Exception(build_error)
|
|
70
70
|
click.echo(FeedbackManager.info(message="✓ Done!\n"))
|
|
71
71
|
config = CLIConfig.get_project_config()
|
|
72
72
|
folder = project.folder
|
|
@@ -145,9 +145,11 @@ def dump_tests(tests: List[Dict[str, Any]]) -> str:
|
|
|
145
145
|
def update_test(pipe: str, project: Project, client: TinyB) -> None:
|
|
146
146
|
try:
|
|
147
147
|
folder = project.folder
|
|
148
|
-
load_secrets(project=project, client=client)
|
|
149
148
|
click.echo(FeedbackManager.highlight(message="\n» Building test environment"))
|
|
150
|
-
build_project(project=project, tb_client=client, watch=False, silent=True)
|
|
149
|
+
build_error = build_project(project=project, tb_client=client, watch=False, silent=True, exit_on_error=False)
|
|
150
|
+
if build_error:
|
|
151
|
+
raise Exception(build_error)
|
|
152
|
+
|
|
151
153
|
click.echo(FeedbackManager.info(message="✓ Done!"))
|
|
152
154
|
pipe_tests_path = get_pipe_path(pipe, folder)
|
|
153
155
|
pipe_name = pipe_tests_path.stem
|
|
@@ -191,9 +193,10 @@ def update_test(pipe: str, project: Project, client: TinyB) -> None:
|
|
|
191
193
|
def run_tests(name: Tuple[str, ...], project: Project, client: TinyB) -> Optional[str]:
|
|
192
194
|
full_error = ""
|
|
193
195
|
try:
|
|
194
|
-
load_secrets(project=project, client=client)
|
|
195
196
|
click.echo(FeedbackManager.highlight(message="\n» Building test environment"))
|
|
196
|
-
build_project(project=project, tb_client=client, watch=False, silent=True)
|
|
197
|
+
build_error = build_project(project=project, tb_client=client, watch=False, silent=True, exit_on_error=False)
|
|
198
|
+
if build_error:
|
|
199
|
+
raise Exception(build_error)
|
|
197
200
|
click.echo(FeedbackManager.info(message="✓ Done!"))
|
|
198
201
|
|
|
199
202
|
click.echo(FeedbackManager.highlight(message="\n» Running tests"))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/deploy_check.py
RENAMED
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/diff_resource.py
RENAMED
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/execute_query.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/request_endpoint.py
RENAMED
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/agent/tools/run_command.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/build_common.py
RENAMED
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/build_datasource.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/format_common.py
RENAMED
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/format_datasource.py
RENAMED
|
File without changes
|
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/datafile/pipe_checker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb/modules/tinyunit/tinyunit_lib.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/tinyunit/tinyunit.py
RENAMED
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py
RENAMED
|
File without changes
|
|
File without changes
|
{tinybird-0.0.1.dev278 → tinybird-0.0.1.dev280}/tinybird/tb_cli_modules/workspace_members.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|