tinybird 0.0.1.dev18__py3-none-any.whl → 0.0.1.dev20__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/client.py +24 -4
- tinybird/config.py +1 -1
- tinybird/feedback_manager.py +8 -30
- tinybird/tb/__cli__.py +8 -0
- tinybird/tb/modules/auth.py +1 -1
- tinybird/tb/modules/build.py +26 -80
- tinybird/tb/modules/cicd.py +1 -1
- tinybird/tb/modules/cli.py +11 -837
- tinybird/tb/modules/common.py +1 -55
- tinybird/tb/modules/connection.py +1 -1
- tinybird/tb/modules/create.py +18 -7
- tinybird/tb/modules/datafile/build.py +142 -971
- tinybird/tb/modules/datafile/build_common.py +1 -1
- tinybird/tb/modules/datafile/build_datasource.py +1 -1
- tinybird/tb/modules/datafile/build_pipe.py +1 -1
- tinybird/tb/modules/datafile/common.py +12 -11
- tinybird/tb/modules/datafile/diff.py +1 -1
- tinybird/tb/modules/datafile/fixture.py +1 -1
- tinybird/tb/modules/datafile/format_common.py +0 -7
- tinybird/tb/modules/datafile/format_datasource.py +0 -2
- tinybird/tb/modules/datafile/format_pipe.py +0 -2
- tinybird/tb/modules/datafile/parse_datasource.py +1 -1
- tinybird/tb/modules/datafile/parse_pipe.py +1 -1
- tinybird/tb/modules/datafile/pull.py +1 -1
- tinybird/tb/modules/datasource.py +4 -75
- tinybird/tb/modules/feedback_manager.py +1048 -0
- tinybird/tb/modules/fmt.py +1 -1
- tinybird/tb/modules/job.py +1 -1
- tinybird/tb/modules/llm.py +6 -4
- tinybird/tb/modules/local.py +26 -21
- tinybird/tb/modules/local_common.py +2 -1
- tinybird/tb/modules/login.py +18 -11
- tinybird/tb/modules/mock.py +18 -7
- tinybird/tb/modules/pipe.py +4 -126
- tinybird/tb/modules/{build_shell.py → shell.py} +66 -36
- tinybird/tb/modules/table.py +88 -5
- tinybird/tb/modules/tag.py +2 -2
- tinybird/tb/modules/test.py +45 -29
- tinybird/tb/modules/tinyunit/tinyunit.py +1 -1
- tinybird/tb/modules/token.py +2 -2
- tinybird/tb/modules/watch.py +72 -0
- tinybird/tb/modules/workspace.py +1 -1
- tinybird/tb/modules/workspace_members.py +1 -1
- {tinybird-0.0.1.dev18.dist-info → tinybird-0.0.1.dev20.dist-info}/METADATA +1 -1
- tinybird-0.0.1.dev20.dist-info/RECORD +76 -0
- tinybird-0.0.1.dev18.dist-info/RECORD +0 -73
- {tinybird-0.0.1.dev18.dist-info → tinybird-0.0.1.dev20.dist-info}/WHEEL +0 -0
- {tinybird-0.0.1.dev18.dist-info → tinybird-0.0.1.dev20.dist-info}/entry_points.txt +0 -0
- {tinybird-0.0.1.dev18.dist-info → tinybird-0.0.1.dev20.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,1048 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from collections import namedtuple
|
|
3
|
+
from typing import Any, Callable
|
|
4
|
+
|
|
5
|
+
FeedbackMessage = namedtuple("FeedbackMessage", "message")
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class bcolors:
|
|
9
|
+
HEADER = "\033[95m"
|
|
10
|
+
OKBLUE = "\033[94m"
|
|
11
|
+
CGREY = "\33[90m"
|
|
12
|
+
OKGREEN = "\033[92m"
|
|
13
|
+
WARNING = "\033[38;5;208m"
|
|
14
|
+
FAIL = "\033[91m"
|
|
15
|
+
ENDC = "\033[0m"
|
|
16
|
+
BOLD = "\033[1m"
|
|
17
|
+
UNDERLINE = "\033[4m"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def print_message(message: str, color: str = bcolors.ENDC) -> Callable[..., str]:
|
|
21
|
+
def formatter(**kwargs: Any) -> str:
|
|
22
|
+
return f"{color}{message.format(**kwargs)}{bcolors.ENDC}"
|
|
23
|
+
|
|
24
|
+
return formatter
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def error_message(message: str) -> Callable[..., str]:
|
|
28
|
+
return print_message(f"\n** {message}", bcolors.FAIL)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def error_exception(message: str) -> Callable[..., str]:
|
|
32
|
+
def formatter(**kwargs: Any) -> str:
|
|
33
|
+
color = bcolors.FAIL
|
|
34
|
+
if isinstance(kwargs.get("error", ""), Exception) and os.environ.get("TB_DEBUG", "") != "":
|
|
35
|
+
import traceback
|
|
36
|
+
|
|
37
|
+
stack_trace = f"Traceback:\n{''.join(traceback.format_tb(kwargs['error'].__traceback__))}"
|
|
38
|
+
return f"{color}{message.format(**kwargs)}{stack_trace}{bcolors.ENDC}"
|
|
39
|
+
return f"{color}{message.format(**kwargs)}{bcolors.ENDC}"
|
|
40
|
+
|
|
41
|
+
return formatter
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def simple_error_message(message: str) -> Callable[..., str]:
|
|
45
|
+
return print_message(f"{message}", bcolors.FAIL)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def warning_message(message: str) -> Callable[..., str]:
|
|
49
|
+
return print_message(message, bcolors.WARNING)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def info_message(message: str) -> Callable[..., str]:
|
|
53
|
+
return print_message(message)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def info_highlight_message(message: str) -> Callable[..., str]:
|
|
57
|
+
return print_message(message, bcolors.OKBLUE)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def success_message(message: str) -> Callable[..., str]:
|
|
61
|
+
return print_message(message, bcolors.OKGREEN)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def prompt_message(message: str) -> Callable[..., str]:
|
|
65
|
+
return print_message(message, bcolors.HEADER)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def gray_message(message: str) -> Callable[..., str]:
|
|
69
|
+
return print_message(message, bcolors.CGREY)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class FeedbackManager:
|
|
73
|
+
error_exception = error_exception("{error}")
|
|
74
|
+
simple_error_exception = simple_error_message("{error}")
|
|
75
|
+
error_exception_trace = error_message("{error}\n** Trace:\n{trace}")
|
|
76
|
+
error_notoken = error_message(
|
|
77
|
+
"No auth token provided. Run 'tb auth' to configure them or re-run the command passing the --token param (example: tb --token <the_token> datasource ls)."
|
|
78
|
+
)
|
|
79
|
+
error_auth_config = error_message("{config_file} does not exist")
|
|
80
|
+
error_file_config = error_message("{config_file} can't be written, check write permissions on this folder")
|
|
81
|
+
error_load_file_config = error_message("{config_file} can't be loaded, remove it and run the command again")
|
|
82
|
+
error_push_file_exception = error_message("Failed running {filename}: {error}")
|
|
83
|
+
error_parsing_node = error_message('error parsing node "{node}" from pipe "{pipe}": {error}')
|
|
84
|
+
error_check_pipe = error_message("check error: {error}")
|
|
85
|
+
error_branch_check_pipe = error_message("{error}")
|
|
86
|
+
error_failed_to_format_files = error_message(
|
|
87
|
+
"{number} files need to be formatted, run the commands below to fix them."
|
|
88
|
+
)
|
|
89
|
+
error_settings_not_allowed = error_message(
|
|
90
|
+
"SETTINGS option is not allowed, use ENGINE_SETTINGS instead. See https://www.tinybird.co/docs/cli/datafiles#data-source for more information."
|
|
91
|
+
)
|
|
92
|
+
error_pipe_already_exists = error_message("{pipe} already exists")
|
|
93
|
+
error_pipe_node_same_name = error_message(
|
|
94
|
+
"Error in node '{name}'. The Pipe is already using that name. Nodes can't have the same exact name as the Pipe they belong to."
|
|
95
|
+
)
|
|
96
|
+
error_pipe_cannot_be_pushed = error_message(
|
|
97
|
+
"Failed pushing pipe. Top level object names must be unique. {name} cannot have same name as an existing datasource."
|
|
98
|
+
)
|
|
99
|
+
error_datasource_cannot_be_pushed = error_message(
|
|
100
|
+
"Failed pushing datasource. Top level object names must be unique. {name} cannot have same name as an existing pipe."
|
|
101
|
+
)
|
|
102
|
+
error_datasource_already_exists = error_message("{datasource} already exists")
|
|
103
|
+
error_datasource_already_exists_and_alter_failed = error_message(
|
|
104
|
+
"{datasource} already exists and the migration can't be executed to match the new definition: {alter_error_message}"
|
|
105
|
+
)
|
|
106
|
+
error_datasource_can_not_be_deleted = error_message("{datasource} cannot be deleted:\n** {error}")
|
|
107
|
+
error_token_already_exists = error_message("Token with name '{token}' already exists")
|
|
108
|
+
error_job_status = error_message("Job status at {url} cannot be retrieved")
|
|
109
|
+
error_removing_datasource = error_message("Failed removing Data Source {datasource}")
|
|
110
|
+
error_updating_datasource = error_message("Failed updating Data Source {datasource} settings: {error}")
|
|
111
|
+
error_promoting_datasource = error_message("Failed promoting Data Source {datasource}: {error}")
|
|
112
|
+
error_creating_datasource = error_message("Failed creating Data Source: {error}")
|
|
113
|
+
error_processing_data = error_message("{error} - FAIL")
|
|
114
|
+
error_file_already_exists = error_message("{file} already exists, use --force to override")
|
|
115
|
+
error_invalid_token_for_host = error_message("Invalid token for {host}")
|
|
116
|
+
error_invalid_host = error_message(
|
|
117
|
+
"Cannot parse response from host {host}. Please make sure you are using the API host URL."
|
|
118
|
+
)
|
|
119
|
+
error_invalid_release_for_workspace = error_message(
|
|
120
|
+
"There's no Release with semver {semver} for Workspace {workspace}"
|
|
121
|
+
)
|
|
122
|
+
error_invalid_token = error_message(
|
|
123
|
+
"Invalid token\n** Run 'tb auth --interactive' to select region. If you belong to a custom region, include your region host in the command:\n** tb auth --host https://<region>.tinybird.co"
|
|
124
|
+
)
|
|
125
|
+
error_token_cannot_be_overriden = error_message("Token '{token}' cannot be overriden")
|
|
126
|
+
error_invalid_query = error_message("Only SELECT queries are supported")
|
|
127
|
+
error_pipe_does_not_exist = error_message("'{pipe}' pipe does not exist")
|
|
128
|
+
error_datasource_does_not_exist = error_message("'{datasource}' Data Source does not exist")
|
|
129
|
+
error_pull = error_message("there was a problem while pulling: {error}")
|
|
130
|
+
error_template_start = error_message(
|
|
131
|
+
"error parsing {filename}: In order to make a query dynamic, it is necessary to start the query with a % character.\n** See https://www.tinybird.co/docs/query/query-parameters.html to learn more."
|
|
132
|
+
)
|
|
133
|
+
error_parsing_file = error_message("error parsing {filename}:{lineno} {error}")
|
|
134
|
+
error_parsing_schema = error_message("error parsing schema (line {line}): {error}")
|
|
135
|
+
error_parsing_indices = error_message(
|
|
136
|
+
"error parsing indexes (line {line}): {error}. Usage: `name expr TYPE type_full GRANULARITY granularity`. Separate multiple indexes by a new line."
|
|
137
|
+
)
|
|
138
|
+
error_sorting_key = error_message("SORTING_KEY should be set with {engine}")
|
|
139
|
+
error_unknown_resource = error_message("Unknown resource '{resource}'")
|
|
140
|
+
error_file_extension = error_message(
|
|
141
|
+
"File extension for {filename} not supported. It should be one of .datasource or .pipe"
|
|
142
|
+
)
|
|
143
|
+
error_dynamodb_engine_not_supported = error_message(
|
|
144
|
+
"Engine {engine} not supported for DynamoDB Data Sources. Only ReplacingMergeTree is supported."
|
|
145
|
+
)
|
|
146
|
+
error_format = error_message("Format {extension} not supported. It should be one of {valid_formats}")
|
|
147
|
+
error_remove_endpoint = error_message("Failed removing pipe endpoint {error}")
|
|
148
|
+
error_remove_no_endpoint = error_message("Pipe does not have any endpoint")
|
|
149
|
+
error_updating_pipe = error_message("Failed updating pipe {error}")
|
|
150
|
+
error_updating_connector_not_supported = error_message("Changing {param} is not currently supported")
|
|
151
|
+
error_removing_node = error_message("Failed removing node from pipe {pipe}: {error}")
|
|
152
|
+
error_pushing_pipe = error_message("Failed pushing pipe {pipe}: {error}")
|
|
153
|
+
error_creating_endpoint = error_message("Failed creating endpoint in node {node} on pipe {pipe}: {error}")
|
|
154
|
+
error_setting_copy_node = error_message("Failed setting node to be used to copy {node} on pipe {pipe}\n** {error}")
|
|
155
|
+
|
|
156
|
+
error_creating_copy_job_not_target_datasource = error_message(
|
|
157
|
+
"Cannot create copy job. Destination Data Source is required."
|
|
158
|
+
)
|
|
159
|
+
error_creating_copy_job_not_compatible_schema = error_message(
|
|
160
|
+
"Cannot create copy job. Destination data source doesn't have a compatible schema."
|
|
161
|
+
)
|
|
162
|
+
error_creating_copy_pipe_invalid_cron = error_message(
|
|
163
|
+
"Cannot create Copy pipe. Invalid cron expression: '{schedule_cron}'"
|
|
164
|
+
)
|
|
165
|
+
error_creating_copy_pipe_invalid_mode = error_message(
|
|
166
|
+
"Cannot create Copy pipe. Invalid MODE expression: '{mode}'. Valid modes are: 'append', 'replace'"
|
|
167
|
+
)
|
|
168
|
+
error_creating_sink_pipe_invalid_cron = error_message(
|
|
169
|
+
"Cannot create Sink Pipe. Invalid cron expression: '{schedule_cron}'"
|
|
170
|
+
)
|
|
171
|
+
error_creating_copy_pipe_target_datasource_required = error_message(
|
|
172
|
+
"Cannot create Copy pipe. Destination Data Source is required."
|
|
173
|
+
)
|
|
174
|
+
error_creating_copy_pipe_target_datasource_not_found = error_message(
|
|
175
|
+
"Cannot create Copy pipe. Destination Data Source '{target_datasource}' does not exist."
|
|
176
|
+
)
|
|
177
|
+
error_creating_copy_pipe = error_message("Failed creating copy pipe {error}")
|
|
178
|
+
error_creating_copy_job = error_message("Failed creating copy job: {error}")
|
|
179
|
+
error_pausing_copy_pipe = error_message("Failed pausing copy pipe: {error}")
|
|
180
|
+
error_resuming_copy_pipe = error_message("Failed resuming copy pipe: {error}")
|
|
181
|
+
error_pausing_datasource_scheduling = error_message(
|
|
182
|
+
"Failed pausing scheduling for Data Source '{datasource}': {error}"
|
|
183
|
+
)
|
|
184
|
+
error_resuming_datasource_scheduling = error_message(
|
|
185
|
+
"Failed resuming scheduling for Data Source '{datasource}': {error}"
|
|
186
|
+
)
|
|
187
|
+
error_datasource_scheduling_state = error_message(
|
|
188
|
+
"Failed requesting scheduling state for Data Source '{datasource}': {error}"
|
|
189
|
+
)
|
|
190
|
+
error_creating_pipe = error_message("Failed creating pipe {error}")
|
|
191
|
+
error_creating_sink_job = error_message("Failed creating sink job: {error}")
|
|
192
|
+
error_running_on_demand_sink_job = error_message("Failed running on-demand sink job: {error}")
|
|
193
|
+
error_removing_dummy_node = error_message("Failed removing node {error}")
|
|
194
|
+
error_check_pipes_populate = error_message("You can't check pipes with populate=True")
|
|
195
|
+
error_check_pipes_api = error_message(
|
|
196
|
+
"Error retrieving most common {pipe} requests to run automatic regression tests, you can bypass checks by running push with the --no-check flag"
|
|
197
|
+
)
|
|
198
|
+
error_negative_version = error_message("VERSION gets one positive integer param")
|
|
199
|
+
error_while_running_job = error_message("Error while running job: {error}")
|
|
200
|
+
error_getting_job_info = error_message(
|
|
201
|
+
"Error while getting job status:\n{error}\n\nThe job should still be running. Check => {url}"
|
|
202
|
+
)
|
|
203
|
+
error_while_check_materialized = error_message("Invalid results, read description below to fix the error: {error}")
|
|
204
|
+
error_auth_login_token_expected = error_message("A valid User Token is needed for log into Tinybird")
|
|
205
|
+
error_auth_login_not_valid = error_message(
|
|
206
|
+
"Invalid authentication token. Please, go to {host}/tokens and copy your User Token"
|
|
207
|
+
)
|
|
208
|
+
error_auth_login_not_user = error_message(
|
|
209
|
+
"The specified token isn't an User Token. Please, go to {host}/tokens and copy your User Token"
|
|
210
|
+
)
|
|
211
|
+
error_diff_file = error_message(
|
|
212
|
+
"Cannot diff {filename}. Datafile names must be globally unique, make sure there is no other Datafile with the same name."
|
|
213
|
+
)
|
|
214
|
+
error_auth = error_message("Check your local config")
|
|
215
|
+
error_wrong_config_file = error_message("Wrong {config_file}, run 'tb auth' to initialize")
|
|
216
|
+
error_workspace_not_in_local_config = error_message(
|
|
217
|
+
"Use 'tb auth add --ws {workspace}' to add this workspace to the local config"
|
|
218
|
+
)
|
|
219
|
+
error_not_personal_auth = error_message("** You have to authenticate with a personal account")
|
|
220
|
+
error_incremental_not_supported = error_message(
|
|
221
|
+
"The --incremental parameter is only supported when the `--connector` parameter is passed"
|
|
222
|
+
)
|
|
223
|
+
error_syncing_datasource = error_message("Failed syncing Data Source {datasource}: {error}")
|
|
224
|
+
error_sync_not_supported = error_message("The --sync parameter is only supported for {valid_datasources}")
|
|
225
|
+
error_invalid_connector = error_message("Invalid connector parameter: Use one of {connectors}")
|
|
226
|
+
error_connector_not_configured = error_message(
|
|
227
|
+
"{connector} connector not properly configured. Please run `tb auth --connector {connector}` first"
|
|
228
|
+
)
|
|
229
|
+
error_connector_not_installed = error_message(
|
|
230
|
+
"{connector} connector not properly installed. Please run `pip install tinybird-cli[{connector}]` first"
|
|
231
|
+
)
|
|
232
|
+
error_option = error_message("{option} is not a valid option")
|
|
233
|
+
error_job_does_not_exist = error_message("Job with id '{job_id}' does not exist")
|
|
234
|
+
error_job_cancelled_but_status_unknown = error_message(
|
|
235
|
+
"Job with id '{job_id}' has started the cancellation process but its status is unknown."
|
|
236
|
+
)
|
|
237
|
+
error_kafka_bootstrap_server = error_message("Invalid bootstrap_server")
|
|
238
|
+
error_kafka_bootstrap_server_conn = error_message(
|
|
239
|
+
"Cannot connect to bootstrap_server.\nPlease, check host, port, and connectivity, including any firewalls."
|
|
240
|
+
)
|
|
241
|
+
error_kafka_bootstrap_server_conn_timeout = error_message(
|
|
242
|
+
"Cannot connect to bootstrap_server, connection timed out.\nPlease, check host, port, and connectivity, including any firewalls."
|
|
243
|
+
)
|
|
244
|
+
error_kafka_registry = error_message("Invalid kafka registry URL")
|
|
245
|
+
error_kafka_topic = error_message("Invalid kafka topic")
|
|
246
|
+
error_kafka_group = error_message("Invalid kafka group ID")
|
|
247
|
+
error_kafka_auto_offset_reset = error_message(
|
|
248
|
+
'Invalid kafka auto.offset.reset config. Valid values are: ["earliest", "latest", "error"]'
|
|
249
|
+
)
|
|
250
|
+
error_datasource_name = error_message("Invalid Data Source name")
|
|
251
|
+
error_datasource_connection_id = error_message("Invalid connection ID")
|
|
252
|
+
error_connection_file_already_exists = error_message("Connection file {name} already exists")
|
|
253
|
+
error_connection_already_exists = error_message(
|
|
254
|
+
"Connection {name} already exists. Use 'tb connection ls' to list your connections"
|
|
255
|
+
)
|
|
256
|
+
error_connection_does_not_exists = error_message("Connection {connection_id} does not exist")
|
|
257
|
+
error_connection_create = error_message("Connection {connection_name} could not be created: {error}")
|
|
258
|
+
error_connection_integration_not_available = error_message("Connection could not be created: {error}")
|
|
259
|
+
error_connection_invalid_ca_pem = error_message("Invalid CA certificate in PEM format")
|
|
260
|
+
error_connection_ca_pem_not_found = error_message("CA certificate in PEM format not found at {ca_pem}")
|
|
261
|
+
error_workspace = error_message("Workspace {workspace} not found. use 'tb workspace ls' to list your workspaces")
|
|
262
|
+
error_deleted_include = error_message(
|
|
263
|
+
"Related include file {include_file} was deleted and it's used in {filename}. Delete or remove dependency from {filename}."
|
|
264
|
+
)
|
|
265
|
+
error_not_found_include = error_message(
|
|
266
|
+
"Included file {filename} at line {lineno} not found. Check if the file exists and the path is correct."
|
|
267
|
+
)
|
|
268
|
+
error_branch = error_message(
|
|
269
|
+
"Branch {branch} not found. use 'tb branch ls' to list your Branches, make sure you are authenticated using the right workspace token"
|
|
270
|
+
)
|
|
271
|
+
error_not_a_branch = error_message(
|
|
272
|
+
"To use this command you need to be authenticated on a Branch. Use 'tb branch ls' and 'tb branch use' and retry the command."
|
|
273
|
+
)
|
|
274
|
+
error_not_allowed_in_branch = error_message(
|
|
275
|
+
"You need to be in Main to run this command. Hint: run `tb branch use main` to switch to Main"
|
|
276
|
+
)
|
|
277
|
+
error_not_allowed_in_main_branch = error_message("Command disabled for 'main' Branch")
|
|
278
|
+
error_getting_region_by_index = error_message(
|
|
279
|
+
"Unable to get region by index, list available regions using 'tb auth ls'"
|
|
280
|
+
)
|
|
281
|
+
error_region_index = error_message(
|
|
282
|
+
"Error selecting region '{host_index}', available options are: {available_options} or 0"
|
|
283
|
+
)
|
|
284
|
+
error_getting_region_by_name_or_url = error_message(
|
|
285
|
+
"Unable to get region by name or host url, list available regions using 'tb auth ls'"
|
|
286
|
+
)
|
|
287
|
+
error_operation_can_not_be_performed = error_message("Operation can not be performed: {error}")
|
|
288
|
+
error_partial_replace_cant_be_executed = error_message(
|
|
289
|
+
"A partial replace can't be executed in the '{datasource}' Data Source."
|
|
290
|
+
)
|
|
291
|
+
error_push_fixture_will_replace_data = error_message(
|
|
292
|
+
"Data Source '{datasource}' already has data. To override it, use --force"
|
|
293
|
+
)
|
|
294
|
+
error_datasource_ls_type = error_message("Invalid Format provided")
|
|
295
|
+
error_pipe_ls_type = error_message("Invalid Format provided")
|
|
296
|
+
error_token_not_validate_in_any_region = error_message("Token not validated in any region")
|
|
297
|
+
error_not_authenticated = error_message("You are not authenticated, use 'tb auth -i' to authenticate yourself")
|
|
298
|
+
error_checking_templates = error_message("Unable to retrieve list of available starter kits")
|
|
299
|
+
error_starterkit_index = error_message(
|
|
300
|
+
"Error selecting starter kit '{starterkit_index}'. Select a valid index or 0 to cancel"
|
|
301
|
+
)
|
|
302
|
+
error_starterkit_name = error_message("Unknown starter kit '{starterkit_name}'")
|
|
303
|
+
error_missing_url_or_connector = error_message(
|
|
304
|
+
"Missing url, local path or --connector argument for append to datasource '{datasource}'"
|
|
305
|
+
)
|
|
306
|
+
error_missing_node_name = error_message("Missing node name for pipe creation after the NODE label")
|
|
307
|
+
error_missing_sql_command = error_message("Missing sql query for pipe creation after the SQL label")
|
|
308
|
+
error_missing_datasource_name = error_message(
|
|
309
|
+
"Missing datasource name for pipe creation after the DATASOURCE label"
|
|
310
|
+
)
|
|
311
|
+
error_running_test = error_message("There was a problem running test file {file} (use -v for more info)")
|
|
312
|
+
error_processing_blocks = error_message("There was been an error while processing some blocks: {error}")
|
|
313
|
+
error_switching_to_main = error_message(
|
|
314
|
+
"** Unable to switch to 'main' Workspace. Need to authenticate again, use 'tb auth"
|
|
315
|
+
)
|
|
316
|
+
error_parsing_node_with_unclosed_if = error_message(
|
|
317
|
+
"Missing {{%end%}} block in parsing node '{node}' from pipe '{pipe}':\n Missing in line '{lineno}' of the SQL:\n '{sql}'"
|
|
318
|
+
)
|
|
319
|
+
error_unknown_connection = error_message("Unknown connection '{connection}' in Data Source '{datasource}'.")
|
|
320
|
+
error_unknown_kafka_connection = error_message(
|
|
321
|
+
"Unknown Kafka connection in Data Source '{datasource}'. Hint: you can create it with the 'tb connection create kafka' command.\n** See https://www.tinybird.co/docs/ingest/kafka.html?highlight=kafka#using-include-to-store-connection-settings to learn more."
|
|
322
|
+
)
|
|
323
|
+
error_unknown_bq_connection = error_message(
|
|
324
|
+
"Unknown BigQuery connection in Data Source '{datasource}'. Hint: you can create it with the 'tb connection create bigquery' command."
|
|
325
|
+
)
|
|
326
|
+
error_unknown_snowflake_connection = error_message(
|
|
327
|
+
"Unknown Snowflake connection in Data Source '{datasource}'. Hint: you can create it with the 'tb connection create snowflake' command."
|
|
328
|
+
)
|
|
329
|
+
error_unknown_connection_service = error_message("Unknown connection service '{service}'")
|
|
330
|
+
error_missing_connection_name = error_message("Missing IMPORT_CONNECTION_NAME in '{datasource}'.")
|
|
331
|
+
error_missing_external_datasource = error_message(
|
|
332
|
+
"Missing IMPORT_EXTERNAL_DATASOURCE in '{datasource}'.\n** See https://www.tinybird.co/docs/ingest/snowflake to learn more."
|
|
333
|
+
)
|
|
334
|
+
error_missing_bucket_uri = error_message(
|
|
335
|
+
"Missing IMPORT_BUCKET_URI in '{datasource}'.\n** See https://www.tinybird.co/docs/ingest/s3 to learn more."
|
|
336
|
+
)
|
|
337
|
+
error_invalid_import_from_timestamp = error_message(
|
|
338
|
+
"Invalid IMPORT_FROM_TIMESTAMP in '{datasource}'.\n** See https://www.tinybird.co/docs/ingest/s3 to learn more."
|
|
339
|
+
)
|
|
340
|
+
error_missing_table_arn = error_message(
|
|
341
|
+
"Missing IMPORT_TABLE_ARN in '{datasource}'.\n** See https://www.tinybird.co/docs/ingest/dynamodb to learn more."
|
|
342
|
+
)
|
|
343
|
+
error_missing_export_bucket = error_message(
|
|
344
|
+
"Missing IMPORT_EXPORT_BUCKET in '{datasource}'.\n** See https://www.tinybird.co/docs/ingest/dynamodb to learn more."
|
|
345
|
+
)
|
|
346
|
+
error_some_data_validation_have_failed = error_message("The data validation has failed")
|
|
347
|
+
error_some_tests_have_errors = error_message("Tests with errors")
|
|
348
|
+
error_regression_yaml_not_valid = error_message(
|
|
349
|
+
"Invalid format. Check the syntax or structure of '{filename}': '{error}'"
|
|
350
|
+
)
|
|
351
|
+
error_no_git_repo_for_release = error_message("Invalid git repository in '{path}'")
|
|
352
|
+
error_commit_changes_to_release = error_message(
|
|
353
|
+
"Data project has changes: 'git status -s {path}'\n\n{git_output} \n\n You need to commit your changes in the data project, then re-run 'tb deploy' to deploy"
|
|
354
|
+
)
|
|
355
|
+
error_head_outdated = error_message(
|
|
356
|
+
"Current HEAD commit '{commit}' is outdated.\n\n 💡Hint: consider to rebase your Git branch with base branch."
|
|
357
|
+
)
|
|
358
|
+
warning_head_outdated = warning_message(
|
|
359
|
+
"Current HEAD commit '{commit}' is outdated.\n\n 💡Hint: consider to rebase your Git branch with base branch."
|
|
360
|
+
)
|
|
361
|
+
error_head_already_released = error_message("Current HEAD commit '{commit}' is already deployed")
|
|
362
|
+
error_in_git_ancestor_commits = error_message(
|
|
363
|
+
"Error checking relationship between HEAD '{head_commit}' and Workspace commit '{workspace_commit}'.\n\n Current Workspace commit needs to be an ancestor of the commit being deployed.\n\n 💡 Hint: consider to rebase your Git branch. If the problem persists, double check the Workspace commit exists in the git log, if it does not exist you can override the Workspace commit to an ancestor of the commit being deployed using `tb init --override-commit <commit>`"
|
|
364
|
+
)
|
|
365
|
+
error_init_release = error_message(
|
|
366
|
+
"No release on Workspace '{workspace}'. Hint: use 'tb init --git' to start working with git"
|
|
367
|
+
)
|
|
368
|
+
error_branch_init_release = error_message(
|
|
369
|
+
"Branch '{workspace}' not ready for deploy. Hint: use 'tb init --git' to start working with git and assure Branch is completely created using '--wait' on 'tb branch create'"
|
|
370
|
+
)
|
|
371
|
+
error_commit_changes_to_init_release = error_message(
|
|
372
|
+
"Data project has changes: 'git status -s {path}'\n\n{git_output} \n\n You need to commit your changes in the data project, then re-run 'tb init --git' to finish git initialization."
|
|
373
|
+
)
|
|
374
|
+
error_no_git_repo_for_init = error_message(
|
|
375
|
+
"'{repo_path}' does not appear to be a git repository. Hint: you can create it with 'git init'"
|
|
376
|
+
)
|
|
377
|
+
error_no_git_main_branch = error_message(
|
|
378
|
+
"Please make sure you run `tb init --git` over your main git branch, supported main branch names are: main, master, develop"
|
|
379
|
+
)
|
|
380
|
+
error_dottinyb_not_ignored = error_message(
|
|
381
|
+
"Include '.tinyb' in .gitignore. Otherwise you could expose tokens. Hint: 'echo \".tinyb\" >> {git_working_dir}.gitignore'"
|
|
382
|
+
)
|
|
383
|
+
error_dotdiff_not_ignored = error_message(
|
|
384
|
+
"Include '.diff_tmp' in .gitignore. Hint: 'echo \".diff_tmp\" >> {git_working_dir}.gitignore'"
|
|
385
|
+
)
|
|
386
|
+
error_token_does_not_exist = error_message("Token '{token_id}' does not exist")
|
|
387
|
+
error_no_correct_token_for_init = error_message(
|
|
388
|
+
"No access to git. Use a Workspace admin token. See https://www.tinybird.co/docs/production/working-with-version-control.html"
|
|
389
|
+
)
|
|
390
|
+
error_diff_resources_for_git_init = error_message(
|
|
391
|
+
"Error initializing Git, there are diffs between local Data Project and Workspace '{workspace}'.\nHint: Execute '{pull_command}' to download Datafiles"
|
|
392
|
+
)
|
|
393
|
+
error_remove_oldest_rollback = error_message(
|
|
394
|
+
"Removal of oldest rollback Release failed with error: {error}. Release {semver} is in preview status and has not been promoted, remove the rollback Release and promote to finish the deployment."
|
|
395
|
+
)
|
|
396
|
+
error_release_already_set = error_message("Can't init '{workspace}', it has already a commit '{commit}'")
|
|
397
|
+
error_release_rm_param = error_message("One of --semver <semver> or --oldest-rollback are required.")
|
|
398
|
+
error_release_rollback_live_not_found = error_message("Live Release not found. Rollback can't be applied")
|
|
399
|
+
error_git_provider_index = error_message(
|
|
400
|
+
"Error selecting provider '{host_index}', available options are: {available_options} or 0"
|
|
401
|
+
)
|
|
402
|
+
error_unsupported_datafile = error_message("Unsupported Datafile type {extension}")
|
|
403
|
+
error_unable_to_identify_main_workspace = error_message("We could not identify the main workspace")
|
|
404
|
+
error_unsupported_diff = error_message(
|
|
405
|
+
"There are resources renamed. `tb deploy` can't deploy renamed resources, create new resources instead."
|
|
406
|
+
)
|
|
407
|
+
error_forkdownstream_pipes_with_engine = error_message(
|
|
408
|
+
"Materialized view {pipe} has the datasource definition in the same file as the SQL transformation. This is no longer supported while using Versions. Please, split the datasource definition into a separate file."
|
|
409
|
+
)
|
|
410
|
+
error_check_backfill_required = error_message(
|
|
411
|
+
"Not safe to deploy to live resource '{resource_name}', backfill might be required. Consider deploying to preview bumping SemVer to major or disabling 'TB_AUTO_PROMOTE'. In case you want to disable this check use 'TB_CHECK_BACKFILL_REQUIRED=0'. For more information about the deployment process, please visit https://www.tinybird.co/docs/production/deployment-strategies"
|
|
412
|
+
)
|
|
413
|
+
|
|
414
|
+
error_connector_require_post_release = error_message(
|
|
415
|
+
"{connector} Data sources require a post-release deployment. Increment the post-release number of the semver (for example: 0.0.1 -> 0.0.1-1) to do so. You can read more about post-releases at https://www.tinybird.co/docs/production/deployment-strategies"
|
|
416
|
+
)
|
|
417
|
+
|
|
418
|
+
error_number_of_scopes_and_resources_mismatch = error_message(
|
|
419
|
+
"The number of --scope and --resource options must be the same"
|
|
420
|
+
)
|
|
421
|
+
error_number_of_fixed_params_and_resources_mismatch = error_message(
|
|
422
|
+
"The number of --fixed-params options must not exceed the number of --scope and --resource options."
|
|
423
|
+
)
|
|
424
|
+
error_pipe_not_materialized = error_message("Pipe {pipe} is not materialized.")
|
|
425
|
+
error_populate_no_materialized_in_pipe = error_message("No materialized nodes in pipe {pipe}. Use --node param.")
|
|
426
|
+
error_populate_several_materialized_in_pipe = error_message(
|
|
427
|
+
"Several materialized nodes in pipe {pipe}. Use --node param."
|
|
428
|
+
)
|
|
429
|
+
error_unlinking_pipe_not_linked = error_message("** {pipe} is not linked (MV, Copy, or Sink).")
|
|
430
|
+
error_getting_tags = error_message("Error getting tags: {error}")
|
|
431
|
+
error_creating_tag = error_message("Error creating new tag: {error}")
|
|
432
|
+
error_updating_tag = error_message("Error updating tag: {error}")
|
|
433
|
+
error_tag_generic = error_message("There was an issue updating tags. {error}")
|
|
434
|
+
error_tag_not_found = error_message("Tag {tag_name} not found.")
|
|
435
|
+
|
|
436
|
+
info_incl_relative_path = info_message("** Relative path {path} does not exist, skipping.")
|
|
437
|
+
info_ignoring_incl_file = info_message(
|
|
438
|
+
"** Ignoring file {filename}. .incl files are not checked independently. They are checked as part of the file that includes them. Please check the file that includes this .incl file."
|
|
439
|
+
)
|
|
440
|
+
|
|
441
|
+
info_update_datasource = info_message("** Changes detected in '{datasource}': \n {params}")
|
|
442
|
+
info_local_release = info_message(
|
|
443
|
+
"** Detected a post version: {version}. The current live Release will be modified, no rollback to the previous local Release will be available."
|
|
444
|
+
)
|
|
445
|
+
info_dry_local_release = info_message(
|
|
446
|
+
"** [DRY RUN] Detected a post version: {version}. The current live Release will be modified, no rollback to the previous local Release will be available."
|
|
447
|
+
)
|
|
448
|
+
info_major_release = info_message(
|
|
449
|
+
"** Detected a major version: {version}. A new Release will be created in preview status."
|
|
450
|
+
)
|
|
451
|
+
info_dry_major_release = info_message(
|
|
452
|
+
"** [DRY RUN] Detected a major version: {version}. A new Release will be created in preview status."
|
|
453
|
+
)
|
|
454
|
+
info_minor_patch_release_with_autopromote = info_message(
|
|
455
|
+
"** Detected a minor or patch version: {version}. A new Release will be created and promoted to live. Use TB_AUTO_PROMOTE=0 to avoid auto promote."
|
|
456
|
+
)
|
|
457
|
+
info_dry_minor_patch_release_with_autopromote = info_message(
|
|
458
|
+
"** [DRY RUN] Detected a minor or patch version: {version}. A new Release will be created and promoted to live. Use TB_AUTO_PROMOTE=0 to avoid auto promote."
|
|
459
|
+
)
|
|
460
|
+
info_minor_patch_release_no_autopromote = info_message(
|
|
461
|
+
"** Detected a minor or patch version: {version}. TB_AUTO_PROMOTE=0 detected, a new Release will be created in preview status."
|
|
462
|
+
)
|
|
463
|
+
info_dry_minor_patch_release_no_autopromote = info_message(
|
|
464
|
+
"** [DRY RUN] Detected a minor or patch version: {version}. TB_AUTO_PROMOTE=0 detected, a new Release will be created in preview status."
|
|
465
|
+
)
|
|
466
|
+
info_reading_from_env = info_message("** Reading {value} from env var {envvar}")
|
|
467
|
+
info_releases_detected = info_message("** Live Release: {current_semver} => New Release: {semver}")
|
|
468
|
+
info_dry_releases_detected = info_message("** [DRY RUN] Live Release: {current_semver} => New Release: {semver}")
|
|
469
|
+
info_pre_prompt_auth_login_user_token = info_message(
|
|
470
|
+
"ℹ️ In order to log into Tinybird, you need your user token. Please, go to {host}/tokens/ and paste your User Token here."
|
|
471
|
+
)
|
|
472
|
+
prompt_auth_login_user_token = prompt_message("❓ User token:")
|
|
473
|
+
|
|
474
|
+
prompt_choose = prompt_message("=> Choose one of the above options to continue... ")
|
|
475
|
+
prompt_choose_node = prompt_message("=> Please, select a node to materialize... ")
|
|
476
|
+
prompt_populate = prompt_message(
|
|
477
|
+
"Do you want to populate the materialized view with existing data? (It'll truncate the materialized view before population starts)"
|
|
478
|
+
)
|
|
479
|
+
|
|
480
|
+
prompt_ws_name = prompt_message("❓ Workspace name:")
|
|
481
|
+
prompt_ws_template = prompt_message("❓ Starter template:")
|
|
482
|
+
|
|
483
|
+
prompt_bigquery_account = prompt_message(
|
|
484
|
+
"""** Log into your Google Cloud Platform Console as a project editor and go to https://console.cloud.google.com/iam-admin/iam
|
|
485
|
+
** Grant access to this principal: {service_account}
|
|
486
|
+
** Assign it the role "BigQuery Data Viewer"
|
|
487
|
+
Ready? """
|
|
488
|
+
)
|
|
489
|
+
|
|
490
|
+
prompt_s3_iamrole_connection_login_aws = prompt_message("""[1] Log into your AWS Console\n\n""")
|
|
491
|
+
prompt_s3_iamrole_connection_policy = prompt_message(
|
|
492
|
+
"""\n[2] Go to IAM > Policies. Create a new policy with the following permissions. Please, replace {replacements}:\n\n{access_policy}\n\n(The policy has been copied to your clipboard)\n\n"""
|
|
493
|
+
)
|
|
494
|
+
prompt_s3_iamrole_connection_policy_not_copied = prompt_message(
|
|
495
|
+
"""\n[2] Go to IAM > Policies. Create a new policy with the following permissions. Please, copy this policy and replace <bucket> with your bucket name:\n\n{access_policy}\n\n"""
|
|
496
|
+
)
|
|
497
|
+
prompt_s3_iamrole_connection_role = prompt_message(
|
|
498
|
+
"""\n[3] Go to IAM > Roles. Create a new IAM Role using the following custom trust policy and attach the access policy you just created in the previous step:\n\n{trust_policy}\n\n(The policy has been copied to your clipboard)\n\n"""
|
|
499
|
+
)
|
|
500
|
+
prompt_s3_iamrole_connection_role_not_copied = prompt_message(
|
|
501
|
+
"""\n[3] Go to IAM > Roles. Create a new IAM Role using the following custom trust policy and attach the access policy you just created in the previous step:\n\n{trust_policy}\n\n"""
|
|
502
|
+
)
|
|
503
|
+
prompt_init_git_release_pull = prompt_message(
|
|
504
|
+
"❓ Download the Data Project to continue, otherwise you can't initialize Workspace with Git. Execute '{pull_command}'?"
|
|
505
|
+
)
|
|
506
|
+
prompt_init_cicd = prompt_message("\n Do you want to generate CI/CD config files?")
|
|
507
|
+
prompt_init_git_release_force = prompt_message(
|
|
508
|
+
"You are going to manually update workspace commit reference manually, this is just for special occasions. Do you want to update current commit reference '{current_commit}' to '{new_commit}'?"
|
|
509
|
+
)
|
|
510
|
+
|
|
511
|
+
warning_exchange = warning_message(
|
|
512
|
+
"Warning: Do you want to exchange Data Source {datasource_a} by Data Source {datasource_b}?"
|
|
513
|
+
)
|
|
514
|
+
warning_no_test_results = warning_message("Warning: No test results to show")
|
|
515
|
+
warning_using_branch_token = warning_message("** You're using the token defined in $TB_TOKEN.")
|
|
516
|
+
warning_using_branch_host = warning_message("** You're using the token defined in $TB_HOST.")
|
|
517
|
+
|
|
518
|
+
error_bump_release = error_message(
|
|
519
|
+
"Error: Bump the --semver flag, example 'tb --semver 0.0.2 {command}'. If you are in CI, bump the VERSION envvar in .tinyenv\n"
|
|
520
|
+
)
|
|
521
|
+
error_bigquery_improper_permissions = error_message(
|
|
522
|
+
"Error: no access detected. It might take a minute to detect the new permissions.\n"
|
|
523
|
+
)
|
|
524
|
+
error_snowflake_improper_permissions = error_message(
|
|
525
|
+
"Snowflake connection is not valid. Please check your credentials and try again.\n"
|
|
526
|
+
)
|
|
527
|
+
error_connection_improper_permissions = error_message(
|
|
528
|
+
"Connection is not valid. Please check your credentials and try again.\n"
|
|
529
|
+
)
|
|
530
|
+
error_cicd_already_exists = info_message("CI/CD config for {provider} already exists. Use --force to overwrite")
|
|
531
|
+
|
|
532
|
+
info_connection_already_exists = info_message(
|
|
533
|
+
"Connection {name} already exists. Use 'tb connection ls' to list your connections"
|
|
534
|
+
)
|
|
535
|
+
info_creating_kafka_connection = info_message("** Creating new Kafka connection '{connection_name}'")
|
|
536
|
+
info_creating_s3_iamrole_connection = info_message("** Creating new S3 IAM Role connection '{connection_name}'")
|
|
537
|
+
info_creating_dynamodb_connection = info_message("** Creating new DynamoDB connection '{connection_name}'")
|
|
538
|
+
|
|
539
|
+
warning_remove_oldest_rollback = warning_message(
|
|
540
|
+
"** [WARNING] Will try to remove oldest rollback Release before promoting to live Release {semver}."
|
|
541
|
+
)
|
|
542
|
+
warning_dry_remove_oldest_rollback = warning_message(
|
|
543
|
+
"** [DRY RUN] [WARNING] Will try to remove oldest rollback Release before promoting to live Release {semver}."
|
|
544
|
+
)
|
|
545
|
+
warning_regression_skipped = warning_message(
|
|
546
|
+
"Regression tests are skipped. Set `export TB_SKIP_REGRESSION=0` or remove --skip-regression-tests for them to pass."
|
|
547
|
+
)
|
|
548
|
+
warning_beta_tester = warning_message(
|
|
549
|
+
"This feature is under development and released as a beta version. You can report any feedback (bugs, feature requests, etc.) to support@tinybird.co"
|
|
550
|
+
)
|
|
551
|
+
warning_connector_not_installed = warning_message(
|
|
552
|
+
"Auth found for {connector} connector but it's not properly installed. Please run `pip install tinybird-cli[{connector}]` to use it"
|
|
553
|
+
)
|
|
554
|
+
warning_deprecated = warning_message("** 🚨🚨🚨 [DEPRECATED]: {warning}")
|
|
555
|
+
warning_deprecated_releases = warning_message(
|
|
556
|
+
"** 🚨🚨🚨 [DEPRECATED]: --semver and Releases are deprecated. You can keep using `tb deploy` to deploy the changed resources from a git commit to the main Workspace and any other command without the --semver flag."
|
|
557
|
+
)
|
|
558
|
+
warning_token_pipe = warning_message("** There's no read token for pipe {pipe}")
|
|
559
|
+
warning_file_not_found_inside = warning_message(
|
|
560
|
+
"** Warning: {name} not found inside: \n - {folder}\n - {folder}/datasources\n - {folder}/endpoints"
|
|
561
|
+
)
|
|
562
|
+
warning_check_pipe = warning_message("** Warning: Failed removing checker pipe: {content}")
|
|
563
|
+
single_warning_materialized_pipe = warning_message(
|
|
564
|
+
"⚠️ {content} For more information read {docs_url} or contact us at support@tinybird.co"
|
|
565
|
+
)
|
|
566
|
+
warning_datasource_already_exists = warning_message(
|
|
567
|
+
"""** Warning: Data Source {datasource} already exists and can't be migrated or replaced.
|
|
568
|
+
** This is a safety feature to avoid removing a Data Source by mistake.
|
|
569
|
+
** Drop it using:
|
|
570
|
+
** $ tb datasource rm {datasource}"""
|
|
571
|
+
)
|
|
572
|
+
warning_name_already_exists = warning_message("** Warning: {name} already exists, skipping")
|
|
573
|
+
warning_dry_name_already_exists = warning_message("** [DRY RUN] {name} already exists, skipping")
|
|
574
|
+
warning_datasource_cannot_be_pushed = warning_message(
|
|
575
|
+
"** [DRY RUN] Failed pushing datasource. Top level object names must be unique. {name} cannot have same name as an existing pipe."
|
|
576
|
+
)
|
|
577
|
+
warning_pipe_cannot_be_pushed = warning_message(
|
|
578
|
+
"** [DRY RUN] Failed pushing pipe. Top level object names must be unique. {name} cannot have same name as an existing datasource."
|
|
579
|
+
)
|
|
580
|
+
warning_fixture_not_found = warning_message("** Warning: No fixture found for the datasource {datasource_name}")
|
|
581
|
+
warning_update_version = warning_message(
|
|
582
|
+
'** UPDATE AVAILABLE: please run "pip install tinybird=={latest_version}" to update or `export TB_VERSION_WARNING=0` to skip the check.'
|
|
583
|
+
)
|
|
584
|
+
warning_current_version = warning_message("** current: tinybird {current_version}\n")
|
|
585
|
+
warning_confirm_truncate_datasource = prompt_message(
|
|
586
|
+
"Do you want to truncate {datasource}? Once truncated, your data can't be recovered"
|
|
587
|
+
)
|
|
588
|
+
warning_confirm_delete_datasource = prompt_message("{dependencies_information} {warning_message}")
|
|
589
|
+
warning_confirm_delete_rows_datasource = prompt_message(
|
|
590
|
+
"Do you want to delete {datasource}'s rows matching condition \"{delete_condition}\"? Once deleted, they can't be recovered"
|
|
591
|
+
)
|
|
592
|
+
warning_confirm_delete_pipe = prompt_message('Do you want to remove the pipe "{pipe}"?')
|
|
593
|
+
warning_confirm_copy_pipe = prompt_message('Do you want to run a copy job from the pipe "{pipe}"?')
|
|
594
|
+
warning_confirm_sink_job = prompt_message('Do you want to run a sink job from the pipe "{pipe}"?')
|
|
595
|
+
warning_confirm_clear_workspace = prompt_message(
|
|
596
|
+
"Do you want to remove all pipes and Data Sources from this workspace?"
|
|
597
|
+
)
|
|
598
|
+
warning_confirm_delete_workspace = prompt_message("Do you want to remove {workspace_name} workspace?")
|
|
599
|
+
warning_confirm_delete_branch = prompt_message("Do you want to remove '{branch}' Branch?")
|
|
600
|
+
warning_confirm_delete_release = prompt_message("Do you want to remove Release {semver}?")
|
|
601
|
+
warning_confirm_rollback_release = prompt_message("Do you want to rollback current Release {semver} to {rollback}?")
|
|
602
|
+
|
|
603
|
+
warning_confirm_delete_token = prompt_message("Do you want to delete Token {token}?")
|
|
604
|
+
warning_confirm_refresh_token = prompt_message("Do you want to refresh Token {token}?")
|
|
605
|
+
warning_datasource_is_connected = warning_message(
|
|
606
|
+
"** Warning: '{datasource}' Data Source is connected to {connector}. If you delete it, it will stop consuming data"
|
|
607
|
+
)
|
|
608
|
+
warning_development_cli = warning_message("** Using CLI in development mode\n")
|
|
609
|
+
warning_token_scope = warning_message("** Warning: This token is not an admin token")
|
|
610
|
+
warning_parquet_fixtures_not_supported = warning_message(
|
|
611
|
+
"** Warning: generating fixtures for Parquet files is not supported"
|
|
612
|
+
)
|
|
613
|
+
warning_datasource_share = warning_message(
|
|
614
|
+
"** Warning: Do you want to share the datasource {datasource} from the workspace {source_workspace} to {destination_workspace}?"
|
|
615
|
+
)
|
|
616
|
+
warning_datasource_unshare = warning_message(
|
|
617
|
+
"** Warning: Do you want to unshare the datasource {datasource} from the workspace {source_workspace} shared with {destination_workspace}?"
|
|
618
|
+
)
|
|
619
|
+
warning_datasource_sync = warning_message("** Warning: Do you want to sync the Data Source {datasource}?")
|
|
620
|
+
warning_datasource_sync_bucket = warning_message(
|
|
621
|
+
"** Warning: Do you want to ingest all the selected files (new and previous) from the {datasource} bucket? Be aware that data might be duplicated if you have previously ingested those files.\n"
|
|
622
|
+
)
|
|
623
|
+
warning_users_dont_exist = warning_message(
|
|
624
|
+
"** Warning: The following users do not exist in the workspace {workspace}: {users}"
|
|
625
|
+
)
|
|
626
|
+
warning_user_doesnt_exist = warning_message(
|
|
627
|
+
"** Warning: The user {user} does not exist in the workspace {workspace}"
|
|
628
|
+
)
|
|
629
|
+
warning_skipping_include_file = warning_message("** Warning: Skipping {file} as is an included file")
|
|
630
|
+
warning_disabled_ssl_checks = warning_message("** Warning: Running with TB_DISABLE_SSL_CHECKS")
|
|
631
|
+
warning_git_release_init_with_diffs = warning_message(
|
|
632
|
+
"** Warning: There are diffs between Workspace resources and git local repository"
|
|
633
|
+
)
|
|
634
|
+
warning_for_cicd_file = warning_message("** 🚨 Warning 🚨: {warning_message}")
|
|
635
|
+
warning_unknown_response = warning_message("** Warning. Unknown response from server: {response}")
|
|
636
|
+
warning_resource_not_in_workspace = warning_message("** Warning: '{resource_name}' not found in workspace")
|
|
637
|
+
warning_copy_pipes_changed = warning_message(
|
|
638
|
+
"Your changes in the copy pipe will be applied directly to Live. Alter strategy is prefered to change copy pipes. Increment the post-release number of the semver (for example: 0.0.1 -> 0.0.1-1)"
|
|
639
|
+
)
|
|
640
|
+
warning_sink_no_connection = warning_message(
|
|
641
|
+
"** Warning: pipe '{pipe_name}' does not have an associated Sink connection."
|
|
642
|
+
)
|
|
643
|
+
warning_pipe_restricted_param = warning_message(
|
|
644
|
+
"** The parameter name '{word}' is a reserved word. Please, choose another name or the pipe will not work as expected."
|
|
645
|
+
)
|
|
646
|
+
warning_pipe_restricted_params = warning_message(
|
|
647
|
+
"** The parameter names {words} and '{last_word}' are reserved words. Please, choose another name or the pipe will not work as expected."
|
|
648
|
+
)
|
|
649
|
+
warning_tag_remove_no_resources = prompt_message(
|
|
650
|
+
"Tag {tag_name} is not used by any resource. Do you want to remove it?"
|
|
651
|
+
)
|
|
652
|
+
warning_tag_remove = prompt_message(
|
|
653
|
+
"Tag {tag_name} is used by {resources_len} resources. Do you want to remove it?"
|
|
654
|
+
)
|
|
655
|
+
|
|
656
|
+
info_fixtures_branch = info_message("** Data Fixtures are only pushed to Branches")
|
|
657
|
+
info_materialize_push_datasource_exists = warning_message("** Data Source {name} already exists")
|
|
658
|
+
info_materialize_push_datasource_override = prompt_message(
|
|
659
|
+
"Delete the Data Source from the workspace and push {name} again?"
|
|
660
|
+
)
|
|
661
|
+
info_materialize_push_pipe_skip = info_message(" [1] Push {name} and override if it exists")
|
|
662
|
+
info_materialize_push_pipe_override = info_message(" [2] Push {name} and override if it exists with no checks")
|
|
663
|
+
info_materialize_populate_partial = info_message(
|
|
664
|
+
" [1] Partially populate: Uses a 10 percent subset of the data or a maximum of 2M rows to quickly validate the materialized view"
|
|
665
|
+
)
|
|
666
|
+
info_materialize_populate_full = info_message(" [2] Fully populate")
|
|
667
|
+
info_pipe_backup_created = info_message("** Created backup file with name {name}")
|
|
668
|
+
info_before_push_materialize = info_message("** Pushing the pipe {name} to your workspace to analyze it")
|
|
669
|
+
info_before_materialize = info_message("** Analyzing the pipe {name}")
|
|
670
|
+
info_pipe_exists = prompt_message("** A pipe with the name {name} already exists, do you want to override it?")
|
|
671
|
+
prompt_override = prompt_message("** Do you want to try override it?")
|
|
672
|
+
prompt_override_local_file = prompt_message(
|
|
673
|
+
"** Do you want to override {name} with the formatted version shown above?"
|
|
674
|
+
)
|
|
675
|
+
info_populate_job_result = info_message("** Populating job result\n {result}")
|
|
676
|
+
info_populate_job_url = info_message("** Populating job url {url}")
|
|
677
|
+
info_data_branch_job_url = info_message("** Branch job url {url}")
|
|
678
|
+
info_regression_tests_branch_job_url = info_message("** Branch regression tests job url {url}")
|
|
679
|
+
info_merge_branch_job_url = info_message("** Merge Branch deployment job url {url}")
|
|
680
|
+
info_copy_from_main_job_url = info_message("** Copy from 'main' Workspace to '{datasource_name}' job url {url}")
|
|
681
|
+
info_copy_with_sql_job_url = info_message("** Copy with --sql `{sql}` to '{datasource_name}' job url {url}")
|
|
682
|
+
info_populate_subset_job_url = info_message("** Populating (subset {subset}) job url {url}")
|
|
683
|
+
info_populate_condition_job_url = info_message(
|
|
684
|
+
"** Populating with --sql-condition `{populate_condition}` => job url {url}"
|
|
685
|
+
)
|
|
686
|
+
info_create_not_found_token = info_message("** Token {token} not found, creating one")
|
|
687
|
+
info_create_found_token = info_message("** Token {token} found, adding permissions")
|
|
688
|
+
info_populate_job = info_message("** Populating job ({job}) {progress}- {status}")
|
|
689
|
+
info_building_dependencies = info_message("** Building dependencies")
|
|
690
|
+
info_processing_new_resource = info_message("** Running '{name}' {version}")
|
|
691
|
+
info_dry_processing_new_resource = info_message("** [DRY RUN] Running '{name}' {version}")
|
|
692
|
+
info_building_resource = info_message("** Building {name}")
|
|
693
|
+
info_processing_resource = info_message(
|
|
694
|
+
"** Running '{name}' => v{version} (remote latest version: v{latest_version})"
|
|
695
|
+
)
|
|
696
|
+
info_dry_processing_resource = info_message(
|
|
697
|
+
"** [DRY RUN] Running '{name}' => v{version} (remote latest version: v{latest_version})"
|
|
698
|
+
)
|
|
699
|
+
info_dry_sink_run = info_message("** [DRY RUN] No Sink job created")
|
|
700
|
+
info_pushing_fixtures = info_message("** Pushing fixtures")
|
|
701
|
+
info_not_pushing_fixtures = info_message("** Not pushing fixtures")
|
|
702
|
+
info_checking_file = info_message("** Checking {file}")
|
|
703
|
+
info_checking_file_size = info_message("** Checking {filename} (appending {size})")
|
|
704
|
+
info_no_rows = info_message("** No rows")
|
|
705
|
+
info_processing_file = info_message("** Processing {filename}")
|
|
706
|
+
info_skip_already_exists = print_message(" => skipping, already exists")
|
|
707
|
+
info_dependency_list = info_message("** {dependency}")
|
|
708
|
+
info_dependency_list_item = info_message("** --- {dependency}")
|
|
709
|
+
info_no_dependencies_found = info_message("** No dependencies found for {dependency}")
|
|
710
|
+
info_no_compatible_dependencies_found = info_message("** Data Sources with incompatible partitions found:")
|
|
711
|
+
info_append_data = info_message("** => If you want to insert data use: $ tb datasource append")
|
|
712
|
+
info_datasources = info_message("** Data Sources:")
|
|
713
|
+
info_connections = info_message("** Connections:")
|
|
714
|
+
info_tokens = info_message("** Tokens:")
|
|
715
|
+
info_token_scopes = info_message("** Token '{token}' scopes:")
|
|
716
|
+
info_query_stats = print_message("** Query took {seconds} seconds\n** Rows read: {rows}\n** Bytes read: {bytes}")
|
|
717
|
+
info_datasource_title = print_message("** {title}", bcolors.BOLD)
|
|
718
|
+
info_datasource_row = info_message("{row}")
|
|
719
|
+
info_datasource_delete_rows_job_url = info_message("** Delete rows job url {url}")
|
|
720
|
+
info_datasource_scheduling_state = info_message("** Scheduling state for Data Source '{datasource}': {state}")
|
|
721
|
+
info_datasource_scheduling_pause = info_message("** Pausing scheduling...")
|
|
722
|
+
info_datasource_scheduling_resume = info_message("** Resuming scheduling...")
|
|
723
|
+
info_pipes = info_message("** Pipes:")
|
|
724
|
+
info_pipe_name = info_message("** - {pipe}")
|
|
725
|
+
info_using_node = print_message("** Using last node {node} as endpoint")
|
|
726
|
+
info_using_node_to_copy = print_message("** Using last node {node} to copy data")
|
|
727
|
+
info_removing_datasource = info_message("** Removing Data Source {datasource}")
|
|
728
|
+
info_removing_datasource_not_found = info_message("** {datasource} not found")
|
|
729
|
+
info_dry_removing_datasource = info_message("** [DRY RUN] Removing Data Source {datasource}")
|
|
730
|
+
info_removing_pipe = info_message("** Removing pipe {pipe}")
|
|
731
|
+
info_removing_pipe_not_found = info_message("** {pipe} not found")
|
|
732
|
+
info_dry_removing_pipe = info_message("** [DRY RUN] Removing pipe {pipe}")
|
|
733
|
+
info_path_created = info_message("✓ /{path}")
|
|
734
|
+
info_file_created = info_message("✓ /{file}")
|
|
735
|
+
info_path_already_exists = info_message("✓ /{path} already exists, skipping")
|
|
736
|
+
info_dottinyb_already_ignored = info_message("** - '.tinyb' already in .gitignore, skipping")
|
|
737
|
+
info_dotdifftemp_already_ignored = info_message("** - '.diff_tmp' not found or already in .gitignore, skipping")
|
|
738
|
+
info_dottinyenv_already_exists = info_message("** - '.tinyenv' already exists, skipping")
|
|
739
|
+
info_cicd_already_exists = info_message(
|
|
740
|
+
"** - ci/cd config for {provider} already exists, skipping. Use --force to overwrite"
|
|
741
|
+
)
|
|
742
|
+
info_writing_resource = info_message("** Writing {resource}")
|
|
743
|
+
info_skipping_resource = info_message("** Skipping {resource}")
|
|
744
|
+
info_writing_datasource = info_message("[D] writing {datasource}")
|
|
745
|
+
info_starting_import_process = info_message("** \N{EGG} starting import process")
|
|
746
|
+
info_progress_blocks = info_message("\N{EGG} blocks")
|
|
747
|
+
info_progress_current_blocks = info_message("\N{HATCHING CHICK} blocks")
|
|
748
|
+
info_release_generated = info_message(
|
|
749
|
+
"** Custom deployment files for Release {semver} generated. Edit the `deploy.sh` file with the instructions to deploy the branch and `postdeploy.sh` file with the instructions to do data operations (e.g. populates) after deploying."
|
|
750
|
+
)
|
|
751
|
+
info_jobs = info_message("** Jobs:")
|
|
752
|
+
info_workspaces = info_message("** Workspaces:")
|
|
753
|
+
info_branches = info_message("** Branches:")
|
|
754
|
+
info_releases = info_message("** Releases:")
|
|
755
|
+
info_current_workspace = info_message("** Current workspace:")
|
|
756
|
+
info_current_branch = info_message("** Current Branch:")
|
|
757
|
+
info_job = info_message(" ** Job: {job}")
|
|
758
|
+
info_data_pushed = info_message("** Data pushed to {datasource}")
|
|
759
|
+
info_materialized_datasource_created = info_message(
|
|
760
|
+
"** Materialized pipe '{pipe}' created the Data Source '{datasource}'"
|
|
761
|
+
)
|
|
762
|
+
info_materialized_datasource_used = info_message(
|
|
763
|
+
"** Materialized pipe '{pipe}' using the Data Source '{datasource}'"
|
|
764
|
+
)
|
|
765
|
+
info_unlinking_materialized_pipe = info_message("** Unlinking materialized pipe {pipe}")
|
|
766
|
+
info_unlinking_copy_pipe = info_message("** Unlinking copy pipe {pipe}")
|
|
767
|
+
info_unlinking_sink_pipe = info_message("** Unlinking sink pipe {pipe}")
|
|
768
|
+
info_unlinking_stream_pipe = info_message("** Unlinking stream pipe {pipe}")
|
|
769
|
+
info_materialized_unlinking_pipe_not_found = info_message("** {pipe} not found")
|
|
770
|
+
info_materialized_dry_unlinking_pipe = info_message("** [DRY RUN] Unlinking materialized pipe {pipe}")
|
|
771
|
+
info_copy_datasource_created = info_message("** Copy pipe '{pipe}' created the Data Source '{datasource}'")
|
|
772
|
+
info_copy_datasource_used = info_message("** Copy pipe '{pipe}' using the Data Source '{datasource}'")
|
|
773
|
+
info_no_pipes_stats = info_message("** No pipe stats")
|
|
774
|
+
info_starting_export_process = info_message("** \N{CHICKEN} starting export process from {connector}")
|
|
775
|
+
info_ask_for_datasource_confirmation = info_message("** Please type the Data Source name to be replaced")
|
|
776
|
+
info_datasource_doesnt_match = info_message("** The description or schema of '{datasource}' has changed.")
|
|
777
|
+
info_datasource_alter_dependent_pipes = info_message(
|
|
778
|
+
"** Please review the list of dependent pipes that could be affected by these changes:"
|
|
779
|
+
)
|
|
780
|
+
info_custom_deployment = info_message(
|
|
781
|
+
"** 🚨 Warning 🚨: The changes in the branch require the `--yes` flag to the `tb deploy` command to overwrite resources. Run `tb release generate --semver <semver> to generate a custom deployment and include the `--yes` flag. Read more about custom deployments => https://www.tinybird.co/docs/production/deployment-strategies.html#customizing-deployments"
|
|
782
|
+
)
|
|
783
|
+
info_ask_for_alter_confirmation = info_message("** Please confirm you want to apply the changes above y/N")
|
|
784
|
+
info_available_regions = info_message("** List of available regions:")
|
|
785
|
+
info_trying_authenticate = info_message("** Trying to authenticate with {host}")
|
|
786
|
+
info_auth_cancelled_by_user = info_message("** Auth cancelled by user.")
|
|
787
|
+
info_user_already_exists = info_message("** The user '{user}' already exists in {workspace_name}")
|
|
788
|
+
info_users_already_exists = info_message("** All users already exist in {workspace_name}")
|
|
789
|
+
info_user_not_exists = info_message("** The user '{user}' doesn't exist in {workspace_name}.")
|
|
790
|
+
info_users_not_exists = info_message("** These users don't exist in {workspace_name}.")
|
|
791
|
+
info_cancelled_by_user = info_message("** Cancelled by user.")
|
|
792
|
+
info_copy_job_running = info_message("** Running {pipe}")
|
|
793
|
+
info_copy_pipe_resuming = info_message("** Resuming {pipe}")
|
|
794
|
+
info_copy_pipe_pausing = info_message("** Pausing {pipe}")
|
|
795
|
+
info_sink_job_running = info_message("** Running {pipe}")
|
|
796
|
+
info_workspace_create_greeting = info_message(
|
|
797
|
+
"Please enter the name for your new workspace. Remember the name you choose must be unique, you can add a suffix in case of collision.\nYou can bypass this step by supplying it after the command."
|
|
798
|
+
)
|
|
799
|
+
info_create_ws_msg_template = info_message(
|
|
800
|
+
"Now let's pick a starter template! 🐣\nStarter template are pre-built data projects for different use cases, that you can use as a starting point and then build on top of that.\nYou can bypass this step by supplying a value for the --starter-kit option."
|
|
801
|
+
)
|
|
802
|
+
info_workspace_branch_create_greeting = info_message(
|
|
803
|
+
"Please enter the name for your new Branch. Remember the name you choose must be unique, you can add a suffix in case of collision.\nYou can bypass this step by supplying a value for the --name option."
|
|
804
|
+
)
|
|
805
|
+
info_no_git_release_yet = info_message("\n** Initializing based on git for Workspace '{workspace}'")
|
|
806
|
+
info_diff_resources_for_git_init = info_message(
|
|
807
|
+
"** Checking diffs between remote Workspace and local. Hint: use 'tb diff' to check if your Data Project and Workspace synced"
|
|
808
|
+
)
|
|
809
|
+
info_cicd_file_generated = info_message("✓ {file_path}")
|
|
810
|
+
info_available_git_providers = info_message("** List of available providers:")
|
|
811
|
+
info_git_release_init_without_diffs = info_message("** No diffs detected for '{workspace}'")
|
|
812
|
+
info_deployment_detecting_changes_header = info_message("\n** Detecting changes from last commit ...")
|
|
813
|
+
info_deployment_preparing_release_header = info_message("\n** Preparing commit ...")
|
|
814
|
+
info_deployment_deploying_release_dry_run_header = info_message("\n** [DRY RUN] Deploying commit ...")
|
|
815
|
+
info_deployment_deploying_release_header = info_message("\n** Deploying commit ...")
|
|
816
|
+
info_deployment_deploy_deps = info_message("** Deploying downstream dependent pipes ...")
|
|
817
|
+
info_git_release_diffs = info_message(
|
|
818
|
+
"** Diffs from current commit '{current_release_commit}' and new '{new_release_commit}':"
|
|
819
|
+
)
|
|
820
|
+
info_git_release_diff = info_message("\t{change_type}:\t{datafile_changed}")
|
|
821
|
+
info_git_release_no_diffs = info_message("\tno diffs detected")
|
|
822
|
+
info_detected_changes_from_includes = info_message("** Changes from includes:")
|
|
823
|
+
info_processing_from_include = info_message("\t{include_filename} => {filename}")
|
|
824
|
+
info_deps_for_resource = info_message("\t{resource} => '{dep}'")
|
|
825
|
+
info_deleting_resource = info_message("** {dry_run}Deleting '{resource_name}'")
|
|
826
|
+
info_detected_changes_only_format = info_message("** Ignoring resources due to only format changes:")
|
|
827
|
+
info_ignored_only_format = info_message("\t{resource}")
|
|
828
|
+
|
|
829
|
+
info_cicd_generation_cancelled_by_user = info_message("** CI/CD files generation cancelled by user.")
|
|
830
|
+
info_skipping_sharing_datasources_branch = info_message(
|
|
831
|
+
"** Skipping sharing the datasoure {datasource} in a Branch"
|
|
832
|
+
)
|
|
833
|
+
info_skipping_shared_with_entry = info_message(
|
|
834
|
+
"** Skipping `SHARED_WITH` entry as the flag --user_token was not used"
|
|
835
|
+
)
|
|
836
|
+
info_generate_cicd_config = info_message(
|
|
837
|
+
"** {provider} CI/CD config files generated. Read this guide to learn how to run CI/CD pipelines: https://www.tinybird.co/docs/production/continuous-integration.html"
|
|
838
|
+
)
|
|
839
|
+
info_release_no_rollback = info_message("** No action")
|
|
840
|
+
info_no_release_deleted = info_message(" ** No Release deleted")
|
|
841
|
+
info_release_rm_resources_dry_run = info_message(
|
|
842
|
+
"** Release {semver} delete (dry run). The following resources IDs are only present in this Release and will be deleted:"
|
|
843
|
+
)
|
|
844
|
+
info_release_rm_resources = info_message(
|
|
845
|
+
"** The following resources IDs are only present in this Release and will be deleted:"
|
|
846
|
+
)
|
|
847
|
+
info_release_rollback = info_message(
|
|
848
|
+
"** The following resources IDs are present in the {semver} Release and will be restored:"
|
|
849
|
+
)
|
|
850
|
+
info_tag_list = info_message("** Tags:")
|
|
851
|
+
info_tag_resources = info_message("** Resources tagged by {tag_name}:")
|
|
852
|
+
warning_no_release = warning_message(
|
|
853
|
+
"** Warning: Workspace does not have Releases, run `tb init --git` to activate them."
|
|
854
|
+
)
|
|
855
|
+
warning_release_risky_operation_in_live = warning_message(
|
|
856
|
+
"** Warning: This operation will make changes to the live Release. Consider using a preview release or a branch."
|
|
857
|
+
)
|
|
858
|
+
|
|
859
|
+
success_test_endpoint = info_message(
|
|
860
|
+
"** => Test endpoint with:\n** $ curl {host}/v0/pipes/{pipe}.json?token={token}"
|
|
861
|
+
)
|
|
862
|
+
success_deployment_release = success_message("** => Release {semver} created in deploying status")
|
|
863
|
+
success_test_endpoint_no_token = success_message("** => Test endpoint at {host}/v0/pipes/{pipe}.json")
|
|
864
|
+
success_promote = success_message(
|
|
865
|
+
"** Release has been promoted to Live. Run `tb release ls` to list Releases in the Workspace. To rollback to the previous Release run `tb release rollback`."
|
|
866
|
+
)
|
|
867
|
+
success_rollback = success_message(
|
|
868
|
+
"** Previous Release has been promoted to Live. Run `tb release ls` to list Releases in the Workspace."
|
|
869
|
+
)
|
|
870
|
+
success_processing_data = success_message("** OK")
|
|
871
|
+
success_generated_file = success_message(
|
|
872
|
+
"""** Generated {file}
|
|
873
|
+
** => Create it on the server running: $ tb push {file}
|
|
874
|
+
** => Append data using: $ tb datasource append {stem} {filename}
|
|
875
|
+
"""
|
|
876
|
+
)
|
|
877
|
+
success_generated_pipe = success_message(
|
|
878
|
+
"""** Generated {file}
|
|
879
|
+
** => Create it on the server running: $ tb push {file}
|
|
880
|
+
"""
|
|
881
|
+
)
|
|
882
|
+
success_generated_matview = success_message(
|
|
883
|
+
"""** Generated destination Data Source for materialized node {node_name} -> {file}
|
|
884
|
+
** => Check everything is correct before and create it on the server running: $ tb push {file}
|
|
885
|
+
"""
|
|
886
|
+
)
|
|
887
|
+
success_generated_local_file = success_message("** => Saved local file {file}")
|
|
888
|
+
success_generated_fixture = success_message("** => Generated fixture {fixture}")
|
|
889
|
+
success_processing_file = success_message("** => File {filename} processed correctly")
|
|
890
|
+
success_appended_rows = success_message("** Appended {appended_rows} new rows")
|
|
891
|
+
success_total_rows = success_message("** Total rows in {datasource}: {total_rows}")
|
|
892
|
+
success_appended_datasource = success_message("** Data appended to Data Source '{datasource}' successfully!")
|
|
893
|
+
success_replaced_datasource = success_message("** Data replaced in Data Source '{datasource}' successfully!")
|
|
894
|
+
success_auth = success_message(
|
|
895
|
+
"** Auth successful! \n** Configuration written to .tinyb file, consider adding it to .gitignore"
|
|
896
|
+
)
|
|
897
|
+
success_auth_added = success_message("** Auth config added!")
|
|
898
|
+
success_auth_removed = success_message("** Auth config removed")
|
|
899
|
+
success_delete_datasource = success_message("** Data Source '{datasource}' deleted")
|
|
900
|
+
success_update_datasource = success_message("** Data Source '{datasource}' updated:\n {params}")
|
|
901
|
+
success_promoting_datasource = success_message("** Data Source '{datasource}' connection settings updated")
|
|
902
|
+
success_truncate_datasource = success_message("** Data Source '{datasource}' truncated")
|
|
903
|
+
success_sync_datasource = success_message("** Data Source '{datasource}' syncing in progress")
|
|
904
|
+
success_exchange_datasources = success_message("** Data Sources '{datasource_a}' and '{datasource_b}' exchanged")
|
|
905
|
+
|
|
906
|
+
success_delete_rows_datasource = success_message(
|
|
907
|
+
"** Data Source '{datasource}' rows deleted matching condition \"{delete_condition}\""
|
|
908
|
+
)
|
|
909
|
+
success_dry_run_delete_rows_datasource = success_message(
|
|
910
|
+
"** [DRY RUN] Data Source '{datasource}' rows '{rows}' matching condition \"{delete_condition}\" to be deleted"
|
|
911
|
+
)
|
|
912
|
+
success_delete_pipe = success_message("** Pipe '{pipe}' deleted")
|
|
913
|
+
success_created_matview = success_message(
|
|
914
|
+
"""** Materialized view {name} created!
|
|
915
|
+
** Materialized views work as insert triggers, anytime you append data into the source Data Source the materialized node query will be triggered.
|
|
916
|
+
"""
|
|
917
|
+
)
|
|
918
|
+
success_created_pipe = success_message(
|
|
919
|
+
"""** New pipe created!
|
|
920
|
+
** Node id: {node_id})
|
|
921
|
+
** Set node as endpoint with:
|
|
922
|
+
** $ tb pipe set_endpoint {pipe} {node_id}
|
|
923
|
+
** Pipe URL: {host}/v0/pipes/{pipe}
|
|
924
|
+
"""
|
|
925
|
+
)
|
|
926
|
+
success_node_changed = success_message(
|
|
927
|
+
"** New node: {node_id}\n => pipe: {pipe_name_or_uid}\n => name: {node_name}"
|
|
928
|
+
)
|
|
929
|
+
success_node_published = success_message(
|
|
930
|
+
"""** Endpoint published!
|
|
931
|
+
** Pipe URL: {host}/v0/pipes/{pipe}
|
|
932
|
+
"""
|
|
933
|
+
)
|
|
934
|
+
success_node_unpublished = success_message(
|
|
935
|
+
"""** Endpoint unpublished!
|
|
936
|
+
** Pipe URL: {host}/v0/pipes/{pipe}
|
|
937
|
+
"""
|
|
938
|
+
)
|
|
939
|
+
success_pipe_unlinked = success_message("""** Pipe {pipe} unlinked""")
|
|
940
|
+
success_node_copy = success_message(
|
|
941
|
+
"""** Node set to be used to copy data!
|
|
942
|
+
** Pipe URL: {host}/v0/pipes/{pipe}
|
|
943
|
+
"""
|
|
944
|
+
)
|
|
945
|
+
success_scheduled_copy_job_created = success_message("""** Copy to '{target_datasource}' scheduled job created""")
|
|
946
|
+
success_copy_job_created = success_message("""** Copy to '{target_datasource}' job created: {job_url}""")
|
|
947
|
+
success_sink_job_created = success_message("""** Sink to '{bucket_path}' job created: {job_url}""")
|
|
948
|
+
success_data_copied_to_ds = success_message("""** Data copied to '{target_datasource}'""")
|
|
949
|
+
success_copy_pipe_resumed = success_message("""** Copy pipe {pipe} resumed""")
|
|
950
|
+
success_copy_pipe_paused = success_message("""** Copy pipe {pipe} paused""")
|
|
951
|
+
success_sink_job_finished = success_message("** Data sinked to '{bucket_path}'")
|
|
952
|
+
success_print_pipe = success_message("** Pipe: {pipe}")
|
|
953
|
+
success_create = success_message("** '{name}' created")
|
|
954
|
+
success_delete = success_message("** '{name}' deleted")
|
|
955
|
+
success_dynamodb_initial_load = success_message("** Initial load of DynamoDB table started: {job_url}")
|
|
956
|
+
success_progress_blocks = success_message("✓ Done!")
|
|
957
|
+
success_now_using_config = success_message("** Now using {name} ({id})")
|
|
958
|
+
success_connector_config = success_message(
|
|
959
|
+
"** {connector} configuration written to {file_name} file, consider adding it to .gitignore"
|
|
960
|
+
)
|
|
961
|
+
success_job_cancellation_cancelled = success_message("** Job with id '{job_id}' has been cancelled")
|
|
962
|
+
success_job_cancellation_cancelling = success_message(
|
|
963
|
+
"** Job with id '{job_id}' is now in cancelling status and will be cancelled eventually"
|
|
964
|
+
)
|
|
965
|
+
success_datasource_alter = success_message("** The Data Source has been correctly updated.")
|
|
966
|
+
success_datasource_kafka_connected = success_message(
|
|
967
|
+
"** Data Source '{id}' created\n" "** Kafka streaming connection configured successfully!"
|
|
968
|
+
)
|
|
969
|
+
success_datasource_shared = success_message(
|
|
970
|
+
"** The Data Source {datasource} has been correctly shared with {workspace}"
|
|
971
|
+
)
|
|
972
|
+
success_datasource_unshared = success_message(
|
|
973
|
+
"** The Data Source {datasource} has been correctly unshared from {workspace}"
|
|
974
|
+
)
|
|
975
|
+
success_datasource_scheduling_resumed = success_message("""** Scheduling resumed for Data Source '{datasource}'""")
|
|
976
|
+
success_datasource_scheduling_paused = success_message("""** Scheduling paused for Data Source '{datasource}'""")
|
|
977
|
+
success_connection_created = success_message("** Connection {id} created successfully!")
|
|
978
|
+
|
|
979
|
+
# TODO: Update the message when the .env feature is implemented
|
|
980
|
+
# xxxx.connection created successfully! Connection details saved into the .env file and referenced automatically in your connection file.
|
|
981
|
+
success_connection_file_created = success_message(
|
|
982
|
+
"** {name} created successfully! Connection details saved in your connection file."
|
|
983
|
+
)
|
|
984
|
+
success_s3_iam_connection_created = success_message(
|
|
985
|
+
"** Info associated with this connection:\n** External ID: {external_id}\n** Role ARN: {role_arn}"
|
|
986
|
+
)
|
|
987
|
+
success_dynamodb_connection_created = success_message(
|
|
988
|
+
"** Info associated with this DynamoDB connection:\n** Region: {region}\n** Role ARN: {role_arn}"
|
|
989
|
+
)
|
|
990
|
+
success_delete_connection = success_message("** Connection {connection_id} removed successfully")
|
|
991
|
+
success_connection_using = success_message("** Using connection '{connection_name}'")
|
|
992
|
+
success_using_host = success_message("** Using host: {host} ({name})")
|
|
993
|
+
success_workspace_created = success_message("** Workspace '{workspace_name}' has been created")
|
|
994
|
+
success_workspace_branch_created = success_message(
|
|
995
|
+
"** Branch '{branch_name}' from '{workspace_name}' has been created"
|
|
996
|
+
)
|
|
997
|
+
success_workspace_data_branch = success_message(
|
|
998
|
+
"** Partitions from 'main' Workspace have been attached to the Branch"
|
|
999
|
+
)
|
|
1000
|
+
success_workspace_data_branch_in_progress = success_message(
|
|
1001
|
+
"** Partitions from 'main' Workspace are being attached to the Branch in job {job_url}"
|
|
1002
|
+
)
|
|
1003
|
+
|
|
1004
|
+
success_workspace_deploying_template = success_message(
|
|
1005
|
+
"Deploying your new '{workspace_name}' workspace, using the '{template}' template:"
|
|
1006
|
+
)
|
|
1007
|
+
success_workspace_deleted = success_message("** Workspace '{workspace_name}' deleted")
|
|
1008
|
+
success_branch_deleted = success_message("** Branch '{branch_name}' deleted")
|
|
1009
|
+
success_workspace_user_added = success_message("** User {user} added to workspace '{workspace_name}'")
|
|
1010
|
+
success_workspace_users_added = success_message("** Users added to workspace '{workspace_name}'")
|
|
1011
|
+
success_workspace_user_removed = success_message("** User {user} removed from workspace '{workspace_name}'")
|
|
1012
|
+
success_workspace_users_removed = success_message("** Users removed from workspace '{workspace_name}'")
|
|
1013
|
+
success_workspace_user_changed_role = success_message("** {user}'s role setted to {role} in '{workspace_name}'")
|
|
1014
|
+
success_workspace_users_changed_role = success_message("** Users' role setted to {role} in '{workspace_name}'")
|
|
1015
|
+
|
|
1016
|
+
success_test_added = success_message("** Test added successfully")
|
|
1017
|
+
success_remember_api_host = success_message("** Remember to use {api_host} in all your API calls.")
|
|
1018
|
+
success_git_release = success_message("** New commit deployed: '{release_commit}'")
|
|
1019
|
+
success_dry_git_release = success_message("** [DRY RUN] New commit deployed: '{release_commit}'")
|
|
1020
|
+
success_init_git_release = success_message(
|
|
1021
|
+
"** Workspace '{workspace_name}' initialized to commit '{release_commit}'.\n Now start working with git, pushing changes to pull requests and let the CI/CD work for you. More details in this guide: https://www.tinybird.co/docs/production/working-with-version-control.html."
|
|
1022
|
+
)
|
|
1023
|
+
success_release_update = success_message("** Live Release {semver} updated to {new_semver}")
|
|
1024
|
+
success_dry_release_update = success_message("** [DRY RUN] Live Release {semver} updated to {new_semver}")
|
|
1025
|
+
success_release_promote = success_message("** Release {semver} promoted to live")
|
|
1026
|
+
success_dry_release_promote = success_message("** [DRY RUN] Release {semver} promoted to live")
|
|
1027
|
+
success_release_preview = success_message("** Release {semver} in preview status")
|
|
1028
|
+
success_dry_release_preview = success_message("** [DRY RUN] Release {semver} in preview status")
|
|
1029
|
+
success_release_rollback = success_message("** Workspace rolled back to Release {semver}")
|
|
1030
|
+
success_release_delete = success_message("** Release {semver} deleted")
|
|
1031
|
+
info_release_delete_dry_run = info_message(
|
|
1032
|
+
"** Release {semver} delete (dry run). The following resources IDs are only present in this Release and will be deleted:"
|
|
1033
|
+
)
|
|
1034
|
+
|
|
1035
|
+
success_delete_token = success_message("** Token '{token}' removed successfully")
|
|
1036
|
+
success_refresh_token = success_message("** Token '{token}' refreshed successfully")
|
|
1037
|
+
success_copy_token = success_message("** Token '{token}' copied to clipboard")
|
|
1038
|
+
success_tag_created = success_message("** Tag '{tag_name}' created!")
|
|
1039
|
+
success_tag_removed = success_message("** Tag '{tag_name}' removed!")
|
|
1040
|
+
|
|
1041
|
+
debug_running_file = print_message("** Running {file}", bcolors.CGREY)
|
|
1042
|
+
|
|
1043
|
+
success = success_message("{message}")
|
|
1044
|
+
info = info_message("{message}")
|
|
1045
|
+
highlight = info_highlight_message("{message}")
|
|
1046
|
+
error = error_message("{message}")
|
|
1047
|
+
gray = gray_message("{message}")
|
|
1048
|
+
warning = warning_message("{message}")
|