validio-cli 10.1.0__tar.gz → 10.2.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 (29) hide show
  1. {validio_cli-10.1.0 → validio_cli-10.2.0}/PKG-INFO +1 -1
  2. {validio_cli-10.1.0 → validio_cli-10.2.0}/pyproject.toml +2 -2
  3. {validio_cli-10.1.0 → validio_cli-10.2.0}/pyproject.toml.orig +2 -2
  4. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/__init__.py +13 -1
  5. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/channels.py +6 -3
  6. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/filters.py +6 -3
  7. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/integrations.py +2 -1
  8. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/notification_rules.py +6 -3
  9. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/segmentations.py +6 -3
  10. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/sources.py +7 -4
  11. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/validator_debug_queries.py +6 -3
  12. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/validators.py +6 -3
  13. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/windows.py +6 -3
  14. {validio_cli-10.1.0 → validio_cli-10.2.0}/README_PUBLIC.md +0 -0
  15. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/code.py +0 -0
  16. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/config.py +0 -0
  17. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/credentials.py +0 -0
  18. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/dbt.py +0 -0
  19. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/incidents.py +0 -0
  20. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/metrics.py +0 -0
  21. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/namespaces.py +0 -0
  22. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/resources.py +0 -0
  23. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/segments.py +0 -0
  24. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/entities/users.py +0 -0
  25. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/bin/main.py +0 -0
  26. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/components.py +0 -0
  27. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/metadata.py +0 -0
  28. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/namespace.py +0 -0
  29. {validio_cli-10.1.0 → validio_cli-10.2.0}/validio_cli/schema.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: validio-cli
3
- Version: 10.1.0
3
+ Version: 10.2.0
4
4
  Summary: CLI tool to interact with the Validio platform
5
5
  Author: Validio
6
6
  Author-email: Validio <support@validio.io>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "validio-cli"
3
- version = "10.1.0"
3
+ version = "10.2.0"
4
4
  description = "CLI tool to interact with the Validio platform"
5
5
  requires-python = ">=3.10,<4"
6
6
  readme = "README_PUBLIC.md"
@@ -39,7 +39,7 @@ dev = [
39
39
  "ruff==0.16.1",
40
40
  "mypy>=1.2.0,<2",
41
41
  "licensecheck>=2025.1.0,<2026",
42
- "pytest>=9.0.3,<10",
42
+ "pytest>=9.1.1,<10",
43
43
  "flameprof>=0.4,<0.5",
44
44
  "validio-sdk",
45
45
  ]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "validio-cli"
3
- version = "10.1.0"
3
+ version = "10.2.0"
4
4
  description = "CLI tool to interact with the Validio platform"
5
5
  authors = [{ name = "Validio", email = "support@validio.io" }]
6
6
  requires-python = ">=3.10,<4"
@@ -36,7 +36,7 @@ dev = [
36
36
  "ruff==0.16.1",
37
37
  "mypy>=1.2.0,<2",
38
38
  "licensecheck>=2025.1.0,<2026",
39
- "pytest>=9.0.3,<10",
39
+ "pytest>=9.1.1,<10",
40
40
  "flameprof>=0.4,<0.5",
41
41
  "validio-sdk",
42
42
  ]
@@ -2,7 +2,7 @@ import asyncio
2
2
  import contextlib
3
3
  import json
4
4
  import sys
5
- from collections.abc import Callable
5
+ from collections.abc import Callable, Coroutine
6
6
  from dataclasses import dataclass
7
7
  from datetime import datetime, timezone
8
8
  from enum import Enum
@@ -19,12 +19,14 @@ from validio_sdk import config
19
19
  from validio_sdk._api.api import APIClient
20
20
  from validio_sdk.client import USER_AGENT as SDK_USER_AGENT
21
21
  from validio_sdk.config import Config, ValidioConfig
22
+ from validio_sdk.exception import ResourceNotFoundError
22
23
  from validio_sdk.features import Feature, all_features, set_enabled
23
24
  from validio_sdk.util import ClassJSONEncoder
24
25
 
25
26
  from validio_cli.metadata import version as cli_version
26
27
 
27
28
  F = TypeVar("F", bound=Callable[..., Any])
29
+ R = TypeVar("R")
28
30
  T = TypeVar("T", bound="OutputSettings")
29
31
 
30
32
  DEFAULT_NAMESPACE: str = "default"
@@ -132,6 +134,16 @@ def get_client(
132
134
  return APIClient(config=cfg, user_agent=user_agent, headers=headers), cfg
133
135
 
134
136
 
137
+ async def none_if_404(
138
+ lookup: Coroutine[Any, Any, R],
139
+ ) -> R | None:
140
+ """Return None if response is a 404."""
141
+ try:
142
+ return await lookup
143
+ except ResourceNotFoundError:
144
+ return None
145
+
146
+
135
147
  @dataclass
136
148
  class OutputSettings:
137
149
  attribute_name: str | None = None
@@ -15,6 +15,7 @@ from validio_cli import (
15
15
  ValidioConfig,
16
16
  _single_resource_if_specified,
17
17
  get_client,
18
+ none_if_404,
18
19
  output_json,
19
20
  output_ok_or_error,
20
21
  output_text,
@@ -105,9 +106,11 @@ async def get_channel_id(
105
106
  if identifier.startswith(prefix):
106
107
  return identifier
107
108
 
108
- resource = await vc.get_channels(
109
- channel_id=identifier,
110
- namespace_id=get_namespace(namespace, cfg),
109
+ resource = await none_if_404(
110
+ vc.get_channels(
111
+ channel_id=identifier,
112
+ namespace_id=get_namespace(namespace, cfg),
113
+ )
111
114
  )
112
115
 
113
116
  if resource is None:
@@ -14,6 +14,7 @@ from validio_cli import (
14
14
  OutputSettings,
15
15
  ValidioConfig,
16
16
  get_client,
17
+ none_if_404,
17
18
  output_json,
18
19
  output_ok_or_error,
19
20
  output_text,
@@ -113,9 +114,11 @@ async def get_filter_id(
113
114
  if identifier.startswith(prefix):
114
115
  return identifier
115
116
 
116
- resource = await vc.get_filters(
117
- filter_id=identifier,
118
- namespace_id=get_namespace(namespace, cfg),
117
+ resource = await none_if_404(
118
+ vc.get_filters(
119
+ filter_id=identifier,
120
+ namespace_id=get_namespace(namespace, cfg),
121
+ )
119
122
  )
120
123
 
121
124
  if resource is None:
@@ -13,6 +13,7 @@ from validio_cli import (
13
13
  OutputSettings,
14
14
  _single_resource_if_specified,
15
15
  get_client,
16
+ none_if_404,
16
17
  output_json,
17
18
  output_ok_or_error,
18
19
  output_text,
@@ -93,7 +94,7 @@ async def get_integration_id(vc: APIClient, identifier: str) -> str | None:
93
94
  if identifier.startswith(prefix):
94
95
  return identifier
95
96
 
96
- resource = await vc.get_integrations(integration_id=identifier)
97
+ resource = await none_if_404(vc.get_integrations(integration_id=identifier))
97
98
 
98
99
  if resource is None:
99
100
  print(f"No {identifier_type} with name or id {identifier} found")
@@ -15,6 +15,7 @@ from validio_cli import (
15
15
  OutputSettings,
16
16
  _single_resource_if_specified,
17
17
  get_client,
18
+ none_if_404,
18
19
  output_json,
19
20
  output_ok_or_error,
20
21
  output_text,
@@ -110,9 +111,11 @@ async def get_notification_rule_id(
110
111
  if identifier.startswith(prefix):
111
112
  return identifier
112
113
 
113
- resource = await vc.get_notification_rules(
114
- notification_rule_id=identifier,
115
- namespace_id=get_namespace(namespace, cfg),
114
+ resource = await none_if_404(
115
+ vc.get_notification_rules(
116
+ notification_rule_id=identifier,
117
+ namespace_id=get_namespace(namespace, cfg),
118
+ )
116
119
  )
117
120
 
118
121
  if resource is None:
@@ -14,6 +14,7 @@ from validio_cli import (
14
14
  OutputFormatOption,
15
15
  OutputSettings,
16
16
  get_client,
17
+ none_if_404,
17
18
  output_json,
18
19
  output_ok_or_error,
19
20
  output_text,
@@ -114,9 +115,11 @@ async def get_segmentation_id(
114
115
  if identifier.startswith(prefix):
115
116
  return identifier
116
117
 
117
- resource = await vc.get_segmentations(
118
- segmentation_id=identifier,
119
- namespace_id=get_namespace(namespace, cfg),
118
+ resource = await none_if_404(
119
+ vc.get_segmentations(
120
+ segmentation_id=identifier,
121
+ namespace_id=get_namespace(namespace, cfg),
122
+ )
120
123
  )
121
124
 
122
125
  if resource is None:
@@ -31,6 +31,7 @@ from validio_cli import (
31
31
  components,
32
32
  format_text,
33
33
  get_client,
34
+ none_if_404,
34
35
  output_json,
35
36
  output_ok_or_error,
36
37
  output_text,
@@ -997,10 +998,12 @@ async def _get_source_id(
997
998
  if identifier.startswith(prefix):
998
999
  return identifier
999
1000
 
1000
- resource = await get_sources(
1001
- session,
1002
- source_id=identifier,
1003
- namespace_id=get_namespace(namespace, cfg),
1001
+ resource = await none_if_404(
1002
+ get_sources(
1003
+ session,
1004
+ source_id=identifier,
1005
+ namespace_id=get_namespace(namespace, cfg),
1006
+ )
1004
1007
  )
1005
1008
 
1006
1009
  if resource is None:
@@ -13,6 +13,7 @@ from validio_cli import (
13
13
  OutputFormatOption,
14
14
  OutputSettings,
15
15
  get_client,
16
+ none_if_404,
16
17
  output_json,
17
18
  output_ok_or_error,
18
19
  output_text,
@@ -111,9 +112,11 @@ async def get_validator_debug_query_id(
111
112
  if identifier.startswith(prefix):
112
113
  return identifier
113
114
 
114
- resource = await vc.get_validator_debug_queries(
115
- validator_debug_query_id=identifier,
116
- namespace_id=get_namespace(namespace, cfg),
115
+ resource = await none_if_404(
116
+ vc.get_validator_debug_queries(
117
+ validator_debug_query_id=identifier,
118
+ namespace_id=get_namespace(namespace, cfg),
119
+ )
117
120
  )
118
121
 
119
122
  if resource is None:
@@ -14,6 +14,7 @@ from validio_cli import (
14
14
  OutputFormatOption,
15
15
  OutputSettings,
16
16
  get_client,
17
+ none_if_404,
17
18
  output_json,
18
19
  output_ok_or_error,
19
20
  output_text,
@@ -125,9 +126,11 @@ async def get_validator_id(
125
126
  if identifier.startswith(prefix):
126
127
  return identifier
127
128
 
128
- resource = await vc.get_validators(
129
- validator_id=identifier,
130
- namespace_id=get_namespace(namespace, cfg),
129
+ resource = await none_if_404(
130
+ vc.get_validators(
131
+ validator_id=identifier,
132
+ namespace_id=get_namespace(namespace, cfg),
133
+ )
131
134
  )
132
135
 
133
136
  if resource is None:
@@ -15,6 +15,7 @@ from validio_cli import (
15
15
  OutputFormatOption,
16
16
  OutputSettings,
17
17
  get_client,
18
+ none_if_404,
18
19
  output_json,
19
20
  output_ok_or_error,
20
21
  output_text,
@@ -118,9 +119,11 @@ async def get_window_id(
118
119
  if identifier.startswith(prefix):
119
120
  return identifier
120
121
 
121
- resource = await vc.get_windows(
122
- window_id=identifier,
123
- namespace_id=get_namespace(namespace, cfg),
122
+ resource = await none_if_404(
123
+ vc.get_windows(
124
+ window_id=identifier,
125
+ namespace_id=get_namespace(namespace, cfg),
126
+ )
124
127
  )
125
128
 
126
129
  if resource is None: