validio-cli 0.26.1__tar.gz → 0.27.0__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.
Files changed (28) hide show
  1. {validio_cli-0.26.1 → validio_cli-0.27.0}/PKG-INFO +1 -1
  2. {validio_cli-0.26.1 → validio_cli-0.27.0}/pyproject.toml +1 -1
  3. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/__init__.py +0 -10
  4. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/config.py +53 -15
  5. {validio_cli-0.26.1 → validio_cli-0.27.0}/LICENSE +0 -0
  6. {validio_cli-0.26.1 → validio_cli-0.27.0}/README_PUBLIC.md +0 -0
  7. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/channels.py +0 -0
  8. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/code.py +0 -0
  9. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/credentials.py +0 -0
  10. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/dbt.py +0 -0
  11. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/filters.py +0 -0
  12. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/incidents.py +0 -0
  13. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/metrics.py +0 -0
  14. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/namespaces.py +0 -0
  15. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/notification_rules.py +0 -0
  16. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/recommendations.py +0 -0
  17. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/resources.py +0 -0
  18. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/segmentations.py +0 -0
  19. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/segments.py +0 -0
  20. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/sources.py +0 -0
  21. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/users.py +0 -0
  22. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/validators.py +0 -0
  23. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/entities/windows.py +0 -0
  24. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/bin/main.py +0 -0
  25. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/components.py +0 -0
  26. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/metadata.py +0 -0
  27. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/namespace.py +0 -0
  28. {validio_cli-0.26.1 → validio_cli-0.27.0}/validio_cli/schema.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: validio-cli
3
- Version: 0.26.1
3
+ Version: 0.27.0
4
4
  Summary: CLI tool to interact with the Validio platform
5
5
  Home-page: https://validio.io/
6
6
  License: Apache-2.0
@@ -3,7 +3,7 @@ name = "validio-cli"
3
3
  # This version does not represent the released version or any tag. For each
4
4
  # release we automatically bump this before building and publishing so this
5
5
  # should be kept at 0.0.1dev1
6
- version = "0.26.1"
6
+ version = "0.27.0"
7
7
  description = "CLI tool to interact with the Validio platform"
8
8
  authors = ["Validio <support@validio.io>"]
9
9
  license = "Apache-2.0"
@@ -18,7 +18,6 @@ from validio_sdk import config
18
18
  from validio_sdk._api.api import APIClient
19
19
  from validio_sdk.config import Config, ValidioConfig
20
20
  from validio_sdk.util import ClassJSONEncoder
21
- from validio_sdk.validio_client import ValidioAPIClient
22
21
 
23
22
  F = TypeVar("F", bound=Callable[..., Any])
24
23
  T = TypeVar("T", bound="OutputSettings")
@@ -101,15 +100,6 @@ def get_client(
101
100
  return APIClient(config=cfg), cfg
102
101
 
103
102
 
104
- async def get_client_and_config(
105
- config_dir: str = ConfigDir,
106
- ) -> tuple[ValidioAPIClient, ValidioConfig]:
107
- cfg = Config(Path(config_dir)).read()
108
- vc = ValidioAPIClient(validio_config=cfg)
109
-
110
- return vc, cfg
111
-
112
-
113
103
  @dataclass
114
104
  class OutputSettings:
115
105
  attribute_name: str | None = None
@@ -1,5 +1,6 @@
1
1
  from pathlib import Path
2
2
  from typing import Any
3
+ from urllib.parse import urlparse
3
4
 
4
5
  import typer
5
6
  from prompt_toolkit import PromptSession
@@ -13,6 +14,7 @@ from validio_sdk.config import (
13
14
  ConfigNotFoundError,
14
15
  ValidioConfig,
15
16
  )
17
+ from validio_sdk.exception import _show_trace
16
18
 
17
19
  import validio_cli
18
20
  from validio_cli import (
@@ -35,7 +37,11 @@ async def init(config_dir: str = ConfigDir) -> None:
35
37
 
36
38
  current_config = cfg.read() if cfg.config_path.is_file() else None
37
39
 
40
+ print("Address to Validio, should start with 'https://' and usually have no path")
41
+ print("Example: https://my-company.validio.io\n")
42
+
38
43
  while True:
44
+ print("-" * 50)
39
45
  current_config = await _prompt_for_config(current_config)
40
46
 
41
47
  print()
@@ -53,8 +59,7 @@ async def init(config_dir: str = ConfigDir) -> None:
53
59
  if failure_reason is None:
54
60
  break
55
61
 
56
- print(f"\n⛔️ Configuration test failed: {failure_reason}\n")
57
- print("Please correct the configuration\n")
62
+ print(f"\n{failure_reason}\n")
58
63
 
59
64
  cfg.write(current_config)
60
65
 
@@ -150,20 +155,44 @@ async def _prompt_for_config(current_config: ValidioConfig | None) -> ValidioCon
150
155
  endpoint_completer = WordCompleter(["http://localhost:8889"])
151
156
 
152
157
  session: PromptSession = PromptSession()
153
- current_config.endpoint = (
154
- await session.prompt_async(
155
- validio_cli._fixed_width("Validio endpoint URI"),
156
- completer=endpoint_completer,
157
- default=current_config.endpoint,
158
- )
159
- ).strip()
160
158
 
161
- current_config.access_key = (
162
- await session.prompt_async(
163
- validio_cli._fixed_width("API access key ID"),
164
- default=current_config.access_key,
159
+ while True:
160
+ validio_endpoint = (
161
+ (
162
+ await session.prompt_async(
163
+ validio_cli._fixed_width("Validio URL"),
164
+ completer=endpoint_completer,
165
+ default=current_config.endpoint,
166
+ )
167
+ )
168
+ .strip()
169
+ .strip("/")
165
170
  )
166
- ).strip()
171
+
172
+ current_config.endpoint = validio_endpoint
173
+
174
+ try:
175
+ result = urlparse(validio_endpoint)
176
+ assert all([result.scheme, result.netloc])
177
+
178
+ break
179
+ except Exception:
180
+ print("\nValidio URL must be a valid URL")
181
+
182
+ while True:
183
+ api_key = (
184
+ await session.prompt_async(
185
+ validio_cli._fixed_width("API access key ID"),
186
+ default=current_config.access_key,
187
+ )
188
+ ).strip()
189
+
190
+ current_config.access_key = api_key
191
+
192
+ if api_key.startswith("APK_"):
193
+ break
194
+
195
+ print("\nAPI access key ID should start with 'APK_'")
167
196
 
168
197
  current_config.access_secret = (
169
198
  await session.prompt_async(
@@ -178,4 +207,13 @@ async def _prompt_for_config(current_config: ValidioConfig | None) -> ValidioCon
178
207
 
179
208
  async def _test_configuration(config: ValidioConfig) -> str | None:
180
209
  vc = APIClient(config=config)
181
- return await vc.test_connection()
210
+
211
+ try:
212
+ await vc.test_connection()
213
+ except Exception as e:
214
+ if _show_trace():
215
+ raise e
216
+
217
+ return str(e)
218
+
219
+ return None
File without changes