nominal 1.106.0__tar.gz → 1.107.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 (115) hide show
  1. {nominal-1.106.0 → nominal-1.107.0}/CHANGELOG.md +7 -0
  2. {nominal-1.106.0 → nominal-1.107.0}/PKG-INFO +1 -1
  3. nominal-1.107.0/nominal/experimental/migration/migration_data_config.py +11 -0
  4. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/migration/migration_utils.py +18 -8
  5. {nominal-1.106.0 → nominal-1.107.0}/pyproject.toml +1 -1
  6. {nominal-1.106.0 → nominal-1.107.0}/.gitignore +0 -0
  7. {nominal-1.106.0 → nominal-1.107.0}/LICENSE +0 -0
  8. {nominal-1.106.0 → nominal-1.107.0}/README.md +0 -0
  9. {nominal-1.106.0 → nominal-1.107.0}/nominal/__init__.py +0 -0
  10. {nominal-1.106.0 → nominal-1.107.0}/nominal/__main__.py +0 -0
  11. {nominal-1.106.0 → nominal-1.107.0}/nominal/_utils/README.md +0 -0
  12. {nominal-1.106.0 → nominal-1.107.0}/nominal/_utils/__init__.py +0 -0
  13. {nominal-1.106.0 → nominal-1.107.0}/nominal/_utils/dataclass_tools.py +0 -0
  14. {nominal-1.106.0 → nominal-1.107.0}/nominal/_utils/deprecation_tools.py +0 -0
  15. {nominal-1.106.0 → nominal-1.107.0}/nominal/_utils/iterator_tools.py +0 -0
  16. {nominal-1.106.0 → nominal-1.107.0}/nominal/_utils/streaming_tools.py +0 -0
  17. {nominal-1.106.0 → nominal-1.107.0}/nominal/_utils/timing_tools.py +0 -0
  18. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/__init__.py +0 -0
  19. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/__main__.py +0 -0
  20. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/attachment.py +0 -0
  21. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/auth.py +0 -0
  22. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/config.py +0 -0
  23. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/dataset.py +0 -0
  24. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/download.py +0 -0
  25. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/mis.py +0 -0
  26. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/run.py +0 -0
  27. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/util/__init__.py +0 -0
  28. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/util/click_log_handler.py +0 -0
  29. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/util/global_decorators.py +0 -0
  30. {nominal-1.106.0 → nominal-1.107.0}/nominal/cli/util/verify_connection.py +0 -0
  31. {nominal-1.106.0 → nominal-1.107.0}/nominal/config/__init__.py +0 -0
  32. {nominal-1.106.0 → nominal-1.107.0}/nominal/config/_config.py +0 -0
  33. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/__init__.py +0 -0
  34. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_clientsbunch.py +0 -0
  35. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_constants.py +0 -0
  36. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_event_types.py +0 -0
  37. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_stream/__init__.py +0 -0
  38. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_stream/batch_processor.py +0 -0
  39. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_stream/batch_processor_proto.py +0 -0
  40. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_stream/write_stream.py +0 -0
  41. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_stream/write_stream_base.py +0 -0
  42. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_types.py +0 -0
  43. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_utils/README.md +0 -0
  44. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_utils/__init__.py +0 -0
  45. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_utils/api_tools.py +0 -0
  46. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_utils/multipart.py +0 -0
  47. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_utils/multipart_downloader.py +0 -0
  48. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_utils/networking.py +0 -0
  49. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_utils/pagination_tools.py +0 -0
  50. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_utils/query_tools.py +0 -0
  51. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/_utils/queueing.py +0 -0
  52. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/asset.py +0 -0
  53. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/attachment.py +0 -0
  54. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/bounds.py +0 -0
  55. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/channel.py +0 -0
  56. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/checklist.py +0 -0
  57. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/client.py +0 -0
  58. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/connection.py +0 -0
  59. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/containerized_extractors.py +0 -0
  60. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/data_review.py +0 -0
  61. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/dataset.py +0 -0
  62. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/dataset_file.py +0 -0
  63. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/datasource.py +0 -0
  64. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/event.py +0 -0
  65. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/exceptions.py +0 -0
  66. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/filetype.py +0 -0
  67. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/log.py +0 -0
  68. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/run.py +0 -0
  69. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/secret.py +0 -0
  70. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/unit.py +0 -0
  71. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/user.py +0 -0
  72. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/video.py +0 -0
  73. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/video_file.py +0 -0
  74. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/workbook.py +0 -0
  75. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/workbook_template.py +0 -0
  76. {nominal-1.106.0 → nominal-1.107.0}/nominal/core/workspace.py +0 -0
  77. {nominal-1.106.0 → nominal-1.107.0}/nominal/exceptions/__init__.py +0 -0
  78. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/__init__.py +0 -0
  79. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/compute/README.md +0 -0
  80. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/compute/__init__.py +0 -0
  81. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/compute/_buckets.py +0 -0
  82. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/compute/dsl/__init__.py +0 -0
  83. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/compute/dsl/_enum_expr_impls.py +0 -0
  84. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/compute/dsl/_numeric_expr_impls.py +0 -0
  85. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/compute/dsl/_range_expr_impls.py +0 -0
  86. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/compute/dsl/exprs.py +0 -0
  87. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/compute/dsl/params.py +0 -0
  88. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/dataset_utils/__init__.py +0 -0
  89. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/dataset_utils/_dataset_utils.py +0 -0
  90. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/logging/__init__.py +0 -0
  91. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/logging/click_log_handler.py +0 -0
  92. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/logging/nominal_log_handler.py +0 -0
  93. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/logging/rich_log_handler.py +0 -0
  94. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/migration/__init__.py +0 -0
  95. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/migration/migration_resources.py +0 -0
  96. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/rust_streaming/__init__.py +0 -0
  97. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/rust_streaming/rust_write_stream.py +0 -0
  98. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/stream_v2/__init__.py +0 -0
  99. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/stream_v2/_serializer.py +0 -0
  100. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/stream_v2/_write_stream.py +0 -0
  101. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/video_processing/__init__.py +0 -0
  102. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/video_processing/resolution.py +0 -0
  103. {nominal-1.106.0 → nominal-1.107.0}/nominal/experimental/video_processing/video_conversion.py +0 -0
  104. {nominal-1.106.0 → nominal-1.107.0}/nominal/nominal.py +0 -0
  105. {nominal-1.106.0 → nominal-1.107.0}/nominal/py.typed +0 -0
  106. {nominal-1.106.0 → nominal-1.107.0}/nominal/thirdparty/__init__.py +0 -0
  107. {nominal-1.106.0 → nominal-1.107.0}/nominal/thirdparty/matlab/__init__.py +0 -0
  108. {nominal-1.106.0 → nominal-1.107.0}/nominal/thirdparty/matlab/_matlab.py +0 -0
  109. {nominal-1.106.0 → nominal-1.107.0}/nominal/thirdparty/pandas/__init__.py +0 -0
  110. {nominal-1.106.0 → nominal-1.107.0}/nominal/thirdparty/pandas/_pandas.py +0 -0
  111. {nominal-1.106.0 → nominal-1.107.0}/nominal/thirdparty/polars/__init__.py +0 -0
  112. {nominal-1.106.0 → nominal-1.107.0}/nominal/thirdparty/polars/polars_export_handler.py +0 -0
  113. {nominal-1.106.0 → nominal-1.107.0}/nominal/thirdparty/tdms/__init__.py +0 -0
  114. {nominal-1.106.0 → nominal-1.107.0}/nominal/thirdparty/tdms/_tdms.py +0 -0
  115. {nominal-1.106.0 → nominal-1.107.0}/nominal/ts/__init__.py +0 -0
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.107.0](https://github.com/nominal-io/nominal-client/compare/v1.106.0...v1.107.0) (2026-01-22)
4
+
5
+
6
+ ### Features
7
+
8
+ * make migration preserve uuid and dataset include options configurable ([#584](https://github.com/nominal-io/nominal-client/issues/584)) ([95ae64d](https://github.com/nominal-io/nominal-client/commit/95ae64de267ad957d15641378b6b418e8c234faa))
9
+
3
10
  ## [1.106.0](https://github.com/nominal-io/nominal-client/compare/v1.105.0...v1.106.0) (2026-01-21)
4
11
 
5
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nominal
3
- Version: 1.106.0
3
+ Version: 1.107.0
4
4
  Summary: Automate Nominal workflows in Python
5
5
  Project-URL: Homepage, https://nominal.io
6
6
  Project-URL: Documentation, https://docs.nominal.io
@@ -0,0 +1,11 @@
1
+ class MigrationDatasetConfig:
2
+ preserve_dataset_uuid: bool
3
+ include_dataset_files: bool
4
+
5
+ def __init__(self, preserve_dataset_uuid: bool, include_dataset_files: bool) -> None:
6
+ """Args:
7
+ preserve_dataset_uuid (bool): If true, preserves the original dataset UUIDs during migration.
8
+ include_dataset_files (bool): If true, includes dataset files in the migration.
9
+ """
10
+ self.preserve_dataset_uuid = preserve_dataset_uuid
11
+ self.include_dataset_files = include_dataset_files
@@ -27,6 +27,7 @@ from nominal.core._utils.api_tools import Link, LinkDict
27
27
  from nominal.core.attachment import Attachment
28
28
  from nominal.core.run import Run
29
29
  from nominal.experimental.dataset_utils import create_dataset_with_uuid
30
+ from nominal.experimental.migration.migration_data_config import MigrationDatasetConfig
30
31
  from nominal.experimental.migration.migration_resources import MigrationResources
31
32
  from nominal.ts import (
32
33
  IntegralNanosecondsDuration,
@@ -639,7 +640,7 @@ def clone_asset(
639
640
  return copy_asset_from(
640
641
  source_asset=source_asset,
641
642
  destination_client=destination_client,
642
- include_data=True,
643
+ dataset_config=MigrationDatasetConfig(preserve_dataset_uuid=True, include_dataset_files=True),
643
644
  include_events=True,
644
645
  include_runs=True,
645
646
  )
@@ -653,7 +654,7 @@ def copy_asset_from(
653
654
  new_asset_description: str | None = None,
654
655
  new_asset_properties: dict[str, Any] | None = None,
655
656
  new_asset_labels: Sequence[str] | None = None,
656
- include_data: bool = False,
657
+ dataset_config: MigrationDatasetConfig | None = None,
657
658
  include_events: bool = False,
658
659
  include_runs: bool = False,
659
660
  ) -> Asset:
@@ -666,7 +667,7 @@ def copy_asset_from(
666
667
  new_asset_description: Optional new description for the copied asset. If not provided, original description used
667
668
  new_asset_properties: Optional new properties for the copied asset. If not provided, original properties used.
668
669
  new_asset_labels: Optional new labels for the copied asset. If not provided, the original labels are used.
669
- include_data: Whether to include data in the copied asset.
670
+ dataset_config: Configuration for dataset migration.
670
671
  include_events: Whether to include events in the copied dataset.
671
672
  include_runs: Whether to include runs in the copied asset.
672
673
 
@@ -683,15 +684,16 @@ def copy_asset_from(
683
684
  properties=new_asset_properties if new_asset_properties is not None else source_asset.properties,
684
685
  labels=new_asset_labels if new_asset_labels is not None else source_asset.labels,
685
686
  )
686
- if include_data:
687
+ if dataset_config is not None:
687
688
  source_datasets = source_asset.list_datasets()
688
689
  for data_scope, source_dataset in source_datasets:
689
- new_dataset = clone_dataset(
690
+ new_dataset = copy_dataset_from(
690
691
  source_dataset=source_dataset,
691
692
  destination_client=destination_client,
693
+ preserve_uuid=dataset_config.preserve_dataset_uuid,
694
+ include_files=dataset_config.include_dataset_files,
692
695
  )
693
696
  new_asset.add_dataset(data_scope, new_dataset)
694
- source_asset._list_dataset_scopes
695
697
 
696
698
  if include_events:
697
699
  source_events = source_asset.search_events(origin_types=SearchEventOriginType.get_manual_origin_types())
@@ -710,6 +712,7 @@ def copy_asset_from(
710
712
  def copy_resources_to_destination_client(
711
713
  destination_client: NominalClient,
712
714
  migration_resources: MigrationResources,
715
+ dataset_config: MigrationDatasetConfig | None = None,
713
716
  ) -> tuple[Sequence[tuple[str, Dataset]], Sequence[Asset], Sequence[WorkbookTemplate], Sequence[Workbook]]:
714
717
  """Based on a list of assets and workbook templates, copy resources to destination client, creating
715
718
  new datasets, datafiles, and workbooks along the way.
@@ -717,6 +720,7 @@ def copy_resources_to_destination_client(
717
720
  Args:
718
721
  destination_client (NominalClient): client of the tenant/workspace to copy resources to.
719
722
  migration_resources (MigrationResources): resources to copy.
723
+ dataset_config (MigrationDataConfig | None): Configuration for dataset migration.
720
724
 
721
725
  Returns:
722
726
  All of the created resources.
@@ -731,7 +735,13 @@ def copy_resources_to_destination_client(
731
735
 
732
736
  new_data_scopes_and_datasets: list[tuple[str, Dataset]] = []
733
737
  for source_asset in migration_resources.source_assets:
734
- new_asset = clone_asset(source_asset.asset, destination_client)
738
+ new_asset = copy_asset_from(
739
+ source_asset.asset,
740
+ destination_client,
741
+ dataset_config=dataset_config,
742
+ include_events=True,
743
+ include_runs=True,
744
+ )
735
745
  new_assets.append(new_asset)
736
746
  new_data_scopes_and_datasets.extend(new_asset.list_datasets())
737
747
 
@@ -739,7 +749,7 @@ def copy_resources_to_destination_client(
739
749
  new_template = clone_workbook_template(source_workbook_template, destination_client)
740
750
  new_templates.append(new_template)
741
751
  new_workbook = new_template.create_workbook(
742
- title=new_template.title, description=new_template.description, asset=new_assets[0]
752
+ title=new_template.title, description=new_template.description, asset=new_asset
743
753
  )
744
754
  logger.debug(
745
755
  "Created new workbook %s (rid: %s) from template %s (rid: %s)",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nominal"
3
- version = "1.106.0"
3
+ version = "1.107.0"
4
4
  description = "Automate Nominal workflows in Python"
5
5
  authors = [
6
6
  { name = "Alexander Reynolds", email = "alex.reynolds@nominal.io" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes