nominal 1.104.2__tar.gz → 1.105.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 (112) hide show
  1. {nominal-1.104.2 → nominal-1.105.0}/CHANGELOG.md +14 -0
  2. {nominal-1.104.2 → nominal-1.105.0}/PKG-INFO +1 -1
  3. {nominal-1.104.2 → nominal-1.105.0}/nominal/_utils/deprecation_tools.py +0 -6
  4. nominal-1.105.0/nominal/experimental/migration/migration_resources.py +18 -0
  5. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/migration/migration_utils.py +23 -27
  6. {nominal-1.104.2 → nominal-1.105.0}/pyproject.toml +1 -1
  7. {nominal-1.104.2 → nominal-1.105.0}/.gitignore +0 -0
  8. {nominal-1.104.2 → nominal-1.105.0}/LICENSE +0 -0
  9. {nominal-1.104.2 → nominal-1.105.0}/README.md +0 -0
  10. {nominal-1.104.2 → nominal-1.105.0}/nominal/__init__.py +0 -0
  11. {nominal-1.104.2 → nominal-1.105.0}/nominal/__main__.py +0 -0
  12. {nominal-1.104.2 → nominal-1.105.0}/nominal/_utils/README.md +0 -0
  13. {nominal-1.104.2 → nominal-1.105.0}/nominal/_utils/__init__.py +0 -0
  14. {nominal-1.104.2 → nominal-1.105.0}/nominal/_utils/dataclass_tools.py +0 -0
  15. {nominal-1.104.2 → nominal-1.105.0}/nominal/_utils/iterator_tools.py +0 -0
  16. {nominal-1.104.2 → nominal-1.105.0}/nominal/_utils/streaming_tools.py +0 -0
  17. {nominal-1.104.2 → nominal-1.105.0}/nominal/_utils/timing_tools.py +0 -0
  18. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/__init__.py +0 -0
  19. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/__main__.py +0 -0
  20. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/attachment.py +0 -0
  21. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/auth.py +0 -0
  22. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/config.py +0 -0
  23. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/dataset.py +0 -0
  24. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/download.py +0 -0
  25. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/mis.py +0 -0
  26. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/run.py +0 -0
  27. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/util/__init__.py +0 -0
  28. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/util/click_log_handler.py +0 -0
  29. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/util/global_decorators.py +0 -0
  30. {nominal-1.104.2 → nominal-1.105.0}/nominal/cli/util/verify_connection.py +0 -0
  31. {nominal-1.104.2 → nominal-1.105.0}/nominal/config/__init__.py +0 -0
  32. {nominal-1.104.2 → nominal-1.105.0}/nominal/config/_config.py +0 -0
  33. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/__init__.py +0 -0
  34. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_clientsbunch.py +0 -0
  35. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_constants.py +0 -0
  36. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_event_types.py +0 -0
  37. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_stream/__init__.py +0 -0
  38. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_stream/batch_processor.py +0 -0
  39. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_stream/batch_processor_proto.py +0 -0
  40. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_stream/write_stream.py +0 -0
  41. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_stream/write_stream_base.py +0 -0
  42. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_types.py +0 -0
  43. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_utils/README.md +0 -0
  44. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_utils/__init__.py +0 -0
  45. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_utils/api_tools.py +0 -0
  46. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_utils/multipart.py +0 -0
  47. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_utils/multipart_downloader.py +0 -0
  48. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_utils/networking.py +0 -0
  49. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_utils/pagination_tools.py +0 -0
  50. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_utils/query_tools.py +0 -0
  51. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/_utils/queueing.py +0 -0
  52. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/asset.py +0 -0
  53. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/attachment.py +0 -0
  54. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/bounds.py +0 -0
  55. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/channel.py +0 -0
  56. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/checklist.py +0 -0
  57. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/client.py +0 -0
  58. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/connection.py +0 -0
  59. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/containerized_extractors.py +0 -0
  60. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/data_review.py +0 -0
  61. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/dataset.py +0 -0
  62. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/dataset_file.py +0 -0
  63. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/datasource.py +0 -0
  64. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/event.py +0 -0
  65. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/exceptions.py +0 -0
  66. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/filetype.py +0 -0
  67. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/log.py +0 -0
  68. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/run.py +0 -0
  69. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/secret.py +0 -0
  70. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/unit.py +0 -0
  71. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/user.py +0 -0
  72. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/video.py +0 -0
  73. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/video_file.py +0 -0
  74. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/workbook.py +0 -0
  75. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/workbook_template.py +0 -0
  76. {nominal-1.104.2 → nominal-1.105.0}/nominal/core/workspace.py +0 -0
  77. {nominal-1.104.2 → nominal-1.105.0}/nominal/exceptions/__init__.py +0 -0
  78. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/__init__.py +0 -0
  79. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/compute/README.md +0 -0
  80. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/compute/__init__.py +0 -0
  81. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/compute/_buckets.py +0 -0
  82. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/compute/dsl/__init__.py +0 -0
  83. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/compute/dsl/_enum_expr_impls.py +0 -0
  84. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/compute/dsl/_numeric_expr_impls.py +0 -0
  85. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/compute/dsl/_range_expr_impls.py +0 -0
  86. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/compute/dsl/exprs.py +0 -0
  87. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/compute/dsl/params.py +0 -0
  88. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/logging/__init__.py +0 -0
  89. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/logging/click_log_handler.py +0 -0
  90. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/logging/nominal_log_handler.py +0 -0
  91. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/logging/rich_log_handler.py +0 -0
  92. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/migration/__init__.py +0 -0
  93. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/rust_streaming/__init__.py +0 -0
  94. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/rust_streaming/rust_write_stream.py +0 -0
  95. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/stream_v2/__init__.py +0 -0
  96. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/stream_v2/_serializer.py +0 -0
  97. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/stream_v2/_write_stream.py +0 -0
  98. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/video_processing/__init__.py +0 -0
  99. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/video_processing/resolution.py +0 -0
  100. {nominal-1.104.2 → nominal-1.105.0}/nominal/experimental/video_processing/video_conversion.py +0 -0
  101. {nominal-1.104.2 → nominal-1.105.0}/nominal/nominal.py +0 -0
  102. {nominal-1.104.2 → nominal-1.105.0}/nominal/py.typed +0 -0
  103. {nominal-1.104.2 → nominal-1.105.0}/nominal/thirdparty/__init__.py +0 -0
  104. {nominal-1.104.2 → nominal-1.105.0}/nominal/thirdparty/matlab/__init__.py +0 -0
  105. {nominal-1.104.2 → nominal-1.105.0}/nominal/thirdparty/matlab/_matlab.py +0 -0
  106. {nominal-1.104.2 → nominal-1.105.0}/nominal/thirdparty/pandas/__init__.py +0 -0
  107. {nominal-1.104.2 → nominal-1.105.0}/nominal/thirdparty/pandas/_pandas.py +0 -0
  108. {nominal-1.104.2 → nominal-1.105.0}/nominal/thirdparty/polars/__init__.py +0 -0
  109. {nominal-1.104.2 → nominal-1.105.0}/nominal/thirdparty/polars/polars_export_handler.py +0 -0
  110. {nominal-1.104.2 → nominal-1.105.0}/nominal/thirdparty/tdms/__init__.py +0 -0
  111. {nominal-1.104.2 → nominal-1.105.0}/nominal/thirdparty/tdms/_tdms.py +0 -0
  112. {nominal-1.104.2 → nominal-1.105.0}/nominal/ts/__init__.py +0 -0
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.105.0](https://github.com/nominal-io/nominal-client/compare/v1.104.3...v1.105.0) (2026-01-21)
4
+
5
+
6
+ ### Features
7
+
8
+ * refactor top-level migration config to allow for mapping of templates to assets ([#577](https://github.com/nominal-io/nominal-client/issues/577)) ([9f1f39d](https://github.com/nominal-io/nominal-client/commit/9f1f39d721ea54135441e00b0a31c8fdd78b381c))
9
+
10
+ ## [1.104.3](https://github.com/nominal-io/nominal-client/compare/v1.104.2...v1.104.3) (2026-01-13)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * stop removing deprecated kwargs from method calls ([#574](https://github.com/nominal-io/nominal-client/issues/574)) ([c06fb08](https://github.com/nominal-io/nominal-client/commit/c06fb080475e53b0c86613745ea6e094d4035d65))
16
+
3
17
  ## [1.104.2](https://github.com/nominal-io/nominal-client/compare/v1.104.1...v1.104.2) (2026-01-08)
4
18
 
5
19
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nominal
3
- Version: 1.104.2
3
+ Version: 1.105.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
@@ -33,14 +33,8 @@ def warn_on_deprecated_argument(
33
33
  def wrapper(*args: Param.args, **kwargs: Param.kwargs) -> T:
34
34
  if argument_name in kwargs:
35
35
  warnings.warn(warning_message, UserWarning, stacklevel=2)
36
- filtered_kwargs = kwargs.copy()
37
- filtered_kwargs.pop(argument_name)
38
- return func(*args, **filtered_kwargs) # type: ignore[arg-type]
39
-
40
36
  elif len(args) > len(param_names) - 1:
41
37
  warnings.warn(warning_message, UserWarning, stacklevel=2)
42
- filtered_args = args[: len(param_names) - 1]
43
- return func(*filtered_args, **kwargs) # type: ignore[arg-type]
44
38
 
45
39
  return func(*args, **kwargs)
46
40
 
@@ -0,0 +1,18 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+ from typing import Sequence
5
+
6
+ from nominal.core.asset import Asset
7
+ from nominal.core.workbook_template import WorkbookTemplate
8
+
9
+
10
+ @dataclass(frozen=True)
11
+ class AssetResources:
12
+ asset: Asset
13
+ source_workbook_templates: Sequence[WorkbookTemplate]
14
+
15
+
16
+ @dataclass(frozen=True)
17
+ class MigrationResources:
18
+ source_assets: Sequence[AssetResources]
@@ -26,6 +26,7 @@ from nominal.core._event_types import EventType, SearchEventOriginType
26
26
  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
+ from nominal.experimental.migration.migration_resources import MigrationResources
29
30
  from nominal.ts import (
30
31
  IntegralNanosecondsDuration,
31
32
  IntegralNanosecondsUTC,
@@ -681,17 +682,14 @@ def copy_asset_from(
681
682
 
682
683
  def copy_resources_to_destination_client(
683
684
  destination_client: NominalClient,
684
- source_assets: Sequence[Asset],
685
- source_workbook_templates: Sequence[WorkbookTemplate],
685
+ migration_resources: MigrationResources,
686
686
  ) -> tuple[Sequence[tuple[str, Dataset]], Sequence[Asset], Sequence[WorkbookTemplate], Sequence[Workbook]]:
687
687
  """Based on a list of assets and workbook templates, copy resources to destination client, creating
688
688
  new datasets, datafiles, and workbooks along the way.
689
689
 
690
690
  Args:
691
691
  destination_client (NominalClient): client of the tenant/workspace to copy resources to.
692
- source_assets (Sequence[Asset]): a list of assets to copy (with data)
693
- source_workbook_templates (Sequence[WorkbookTemplate]): a list of workbook templates to clone
694
- and create workbooks from.
692
+ migration_resources (MigrationResources): resources to copy.
695
693
 
696
694
  Returns:
697
695
  All of the created resources.
@@ -700,32 +698,30 @@ def copy_resources_to_destination_client(
700
698
  "destination_client_workspace": destination_client.get_workspace(destination_client._clients.workspace_rid).rid,
701
699
  }
702
700
 
703
- if len(source_assets) != 1:
704
- raise ValueError("Currently, only single asset can be used to create workbook from template")
705
-
706
701
  new_assets = []
702
+ new_templates = []
703
+ new_workbooks = []
704
+
707
705
  new_data_scopes_and_datasets: list[tuple[str, Dataset]] = []
708
- for source_asset in source_assets:
709
- new_asset = clone_asset(source_asset, destination_client)
706
+ for source_asset in migration_resources.source_assets:
707
+ new_asset = clone_asset(source_asset.asset, destination_client)
710
708
  new_assets.append(new_asset)
711
709
  new_data_scopes_and_datasets.extend(new_asset.list_datasets())
712
- new_templates = []
713
- new_workbooks = []
714
710
 
715
- for source_workbook_template in source_workbook_templates:
716
- new_template = clone_workbook_template(source_workbook_template, destination_client)
717
- new_templates.append(new_template)
718
- new_workbook = new_template.create_workbook(
719
- title=new_template.title, description=new_template.description, asset=new_assets[0]
720
- )
721
- logger.debug(
722
- "Created new workbook %s (rid: %s) from template %s (rid: %s)",
723
- new_workbook.title,
724
- new_workbook.rid,
725
- new_template.title,
726
- new_template.rid,
727
- extra=log_extras,
728
- )
729
- new_workbooks.append(new_workbook)
711
+ for source_workbook_template in source_asset.source_workbook_templates:
712
+ new_template = clone_workbook_template(source_workbook_template, destination_client)
713
+ new_templates.append(new_template)
714
+ new_workbook = new_template.create_workbook(
715
+ title=new_template.title, description=new_template.description, asset=new_assets[0]
716
+ )
717
+ logger.debug(
718
+ "Created new workbook %s (rid: %s) from template %s (rid: %s)",
719
+ new_workbook.title,
720
+ new_workbook.rid,
721
+ new_template.title,
722
+ new_template.rid,
723
+ extra=log_extras,
724
+ )
725
+ new_workbooks.append(new_workbook)
730
726
 
731
727
  return (new_data_scopes_and_datasets, new_assets, new_templates, new_workbooks)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nominal"
3
- version = "1.104.2"
3
+ version = "1.105.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