validio-cli 0.20.1__tar.gz → 0.21.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 (26) hide show
  1. {validio_cli-0.20.1 → validio_cli-0.21.0}/PKG-INFO +1 -1
  2. {validio_cli-0.20.1 → validio_cli-0.21.0}/pyproject.toml +1 -1
  3. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/code.py +67 -0
  4. {validio_cli-0.20.1 → validio_cli-0.21.0}/LICENSE +0 -0
  5. {validio_cli-0.20.1 → validio_cli-0.21.0}/README_PUBLIC.md +0 -0
  6. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/__init__.py +0 -0
  7. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/channels.py +0 -0
  8. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/config.py +0 -0
  9. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/credentials.py +0 -0
  10. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/dbt.py +0 -0
  11. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/incidents.py +0 -0
  12. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/metrics.py +0 -0
  13. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/notification_rules.py +0 -0
  14. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/recommendations.py +0 -0
  15. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/resources.py +0 -0
  16. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/segmentations.py +0 -0
  17. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/segments.py +0 -0
  18. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/sources.py +0 -0
  19. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/users.py +0 -0
  20. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/validators.py +0 -0
  21. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/entities/windows.py +0 -0
  22. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/bin/main.py +0 -0
  23. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/components.py +0 -0
  24. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/metadata.py +0 -0
  25. {validio_cli-0.20.1 → validio_cli-0.21.0}/validio_cli/namespace.py +0 -0
  26. {validio_cli-0.20.1 → validio_cli-0.21.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.20.1
3
+ Version: 0.21.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.20.1"
6
+ version = "0.21.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"
@@ -15,6 +15,10 @@ from validio_sdk.code import scaffold
15
15
  from validio_sdk.resource._diff import DiffContext, GraphDiff, ResourceUpdate
16
16
  from validio_sdk.resource._resource import Resource
17
17
  from validio_sdk.resource._util import SourceSchemaReinference
18
+ from validio_sdk.resource.replacement import (
19
+ ImmutableFieldReplacementReason,
20
+ ReplacementReason,
21
+ )
18
22
  from validio_sdk.validio_client import ValidioAPIClient
19
23
 
20
24
  from validio_cli import AsyncTyper, ConfigDir, Namespace, get_client_and_config
@@ -368,6 +372,7 @@ def _show_resources_diff(
368
372
  for t in resource_types:
369
373
  _show_create_resource_diff(
370
374
  getattr(diff.to_create, t),
375
+ getattr(diff.replacement_ctx, t),
371
376
  show_schema,
372
377
  show_secrets,
373
378
  escape,
@@ -378,6 +383,7 @@ def _show_resources_diff(
378
383
  for t in resource_types:
379
384
  _show_delete_resource_diff(
380
385
  getattr(diff.to_delete, t),
386
+ getattr(diff.replacement_ctx, t),
381
387
  show_schema,
382
388
  show_secrets,
383
389
  escape,
@@ -394,6 +400,16 @@ def _show_resources_diff(
394
400
  diff_output=diff_output,
395
401
  )
396
402
 
403
+ for t in resource_types:
404
+ _show_replace_resource_diff(
405
+ getattr(diff.to_create, t),
406
+ getattr(diff.replacement_ctx, t),
407
+ show_schema,
408
+ show_secrets,
409
+ escape,
410
+ diff_output,
411
+ )
412
+
397
413
  _show_deprecations(deprecations)
398
414
 
399
415
  print(
@@ -405,12 +421,16 @@ def _show_resources_diff(
405
421
 
406
422
  def _show_create_resource_diff(
407
423
  resources: Mapping[str, Resource],
424
+ replaced_resources: Mapping[str, ReplacementReason],
408
425
  show_schema: bool,
409
426
  show_secrets: bool,
410
427
  color: bool,
411
428
  diff_output: DiffOutput,
412
429
  ) -> None:
413
430
  for r in resources.values():
431
+ if r.name in replaced_resources:
432
+ continue
433
+
414
434
  class_key = r.__class__.__name__
415
435
 
416
436
  print(f"{class_key} '{r.name}' will be created")
@@ -425,12 +445,16 @@ def _show_create_resource_diff(
425
445
 
426
446
  def _show_delete_resource_diff(
427
447
  resources: Mapping[str, Resource],
448
+ replaced_resources: Mapping[str, ReplacementReason],
428
449
  show_schema: bool,
429
450
  show_secrets: bool,
430
451
  color: bool,
431
452
  diff_output: DiffOutput,
432
453
  ) -> None:
433
454
  for r in resources.values():
455
+ if r.name in replaced_resources:
456
+ continue
457
+
434
458
  class_key = r.__class__.__name__
435
459
 
436
460
  print(f"{class_key} '{r.name}' will be deleted")
@@ -475,6 +499,49 @@ def _show_update_resource_diff(
475
499
  _show_diff(b_value, a_value, color, diff_output, class_key)
476
500
 
477
501
 
502
+ def _show_replace_resource_diff(
503
+ resources: Mapping[str, Resource],
504
+ replaced_resources: Mapping[str, ReplacementReason],
505
+ show_schema: bool,
506
+ show_secrets: bool,
507
+ color: bool,
508
+ diff_output: DiffOutput,
509
+ ) -> None:
510
+ for r in resources.values():
511
+ reason = replaced_resources.get(r.name)
512
+ if not reason:
513
+ continue
514
+
515
+ class_key = r.__class__.__name__
516
+
517
+ print(f"{class_key} '{r.name}' will be replaced: {reason._reason()}")
518
+
519
+ rewrites = _diff_field_rewrites(show_schema)
520
+ a_value, b_value = (None, None)
521
+ if isinstance(reason, ImmutableFieldReplacementReason):
522
+ update = reason.resource_update
523
+ a_value = code_plan._create_resource_diff_object(
524
+ update.manifest,
525
+ show_secrets=show_secrets,
526
+ rewrites=rewrites,
527
+ secrets_changed=update.secrets_changed,
528
+ is_manifest=True,
529
+ )
530
+ b_value = code_plan._create_resource_diff_object(
531
+ update.server,
532
+ show_secrets=show_secrets,
533
+ rewrites=rewrites,
534
+ secrets_changed=update.secrets_changed,
535
+ is_manifest=False,
536
+ )
537
+ else:
538
+ b_value = code_plan._create_resource_diff_object(
539
+ r, rewrites=rewrites, show_secrets=show_secrets
540
+ )
541
+
542
+ _show_diff(a_value, b_value, color, diff_output, class_key)
543
+
544
+
478
545
  def _show_diff(
479
546
  current_value: Any,
480
547
  new_value: Any,
File without changes