iqm-exa-common 26.28.0__tar.gz → 26.30.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 (82) hide show
  1. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/CHANGELOG.rst +16 -0
  2. {iqm_exa_common-26.28.0/src/iqm_exa_common.egg-info → iqm_exa_common-26.30.0}/PKG-INFO +1 -1
  3. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/data/setting_node.py +2 -1
  4. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/errors/station_control_errors.py +13 -1
  5. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0/src/iqm_exa_common.egg-info}/PKG-INFO +1 -1
  6. iqm_exa_common-26.30.0/version.txt +1 -0
  7. iqm_exa_common-26.28.0/version.txt +0 -1
  8. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/LICENSE.txt +0 -0
  9. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/MANIFEST.in +0 -0
  10. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/README.rst +0 -0
  11. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/docs/API.rst +0 -0
  12. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/docs/Makefile +0 -0
  13. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/docs/_static/.gitignore +0 -0
  14. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/docs/_static/css/custom.css +0 -0
  15. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/docs/_static/images/favicon.ico +0 -0
  16. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/docs/_static/images/logo.png +0 -0
  17. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/docs/_templates/autosummary-class-template.rst +0 -0
  18. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/docs/_templates/autosummary-module-template.rst +0 -0
  19. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/docs/changelog.rst +0 -0
  20. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/docs/conf.py +0 -0
  21. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/docs/index.rst +0 -0
  22. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/docs/license.rst +0 -0
  23. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/pyproject.toml +0 -0
  24. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/requirements/base.in +0 -0
  25. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/requirements/base.txt +0 -0
  26. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/setup.cfg +0 -0
  27. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/setup.py +0 -0
  28. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/__init__.py +0 -0
  29. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/api/__init__.py +0 -0
  30. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/api/proto_serialization/__init__.py +0 -0
  31. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/api/proto_serialization/_parameter.py +0 -0
  32. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/api/proto_serialization/array.py +0 -0
  33. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/api/proto_serialization/datum.py +0 -0
  34. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/api/proto_serialization/nd_sweep.py +0 -0
  35. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/api/proto_serialization/sequence.py +0 -0
  36. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/api/proto_serialization/setting_node.py +0 -0
  37. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/__init__.py +0 -0
  38. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/__init__.py +0 -0
  39. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/exponential_sweep.py +0 -0
  40. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/fixed_sweep.py +0 -0
  41. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/linear_sweep.py +0 -0
  42. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/option/__init__.py +0 -0
  43. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/option/center_span_base_options.py +0 -0
  44. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/option/center_span_options.py +0 -0
  45. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/option/constants.py +0 -0
  46. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/option/fixed_options.py +0 -0
  47. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/option/option_converter.py +0 -0
  48. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/option/start_stop_base_options.py +0 -0
  49. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/option/start_stop_options.py +0 -0
  50. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/option/sweep_options.py +0 -0
  51. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/sweep.py +0 -0
  52. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/control/sweep/sweep_values.py +0 -0
  53. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/data/__init__.py +0 -0
  54. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/data/base_model.py +0 -0
  55. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/data/parameter.py +0 -0
  56. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/data/settingnode_v2.html.jinja2 +0 -0
  57. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/data/value.py +0 -0
  58. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/errors/__init__.py +0 -0
  59. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/errors/exa_error.py +0 -0
  60. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/helpers/__init__.py +0 -0
  61. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/helpers/data_helper.py +0 -0
  62. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/helpers/deprecation.py +0 -0
  63. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/helpers/json_helper.py +0 -0
  64. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/helpers/numpy_helper.py +0 -0
  65. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/helpers/software_version_helper.py +0 -0
  66. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/helpers/yaml_helper.py +0 -0
  67. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/logger/__init__.py +0 -0
  68. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/logger/logger.py +0 -0
  69. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/py.typed +0 -0
  70. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/qcm_data/__init__.py +0 -0
  71. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/qcm_data/chad_model.py +0 -0
  72. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/qcm_data/chip_topology.py +0 -0
  73. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/qcm_data/file_adapter.py +0 -0
  74. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/qcm_data/immutable_base_model.py +0 -0
  75. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/qcm_data/qcm_data_client.py +0 -0
  76. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/sweep/__init__.py +0 -0
  77. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/sweep/database_serialization.py +0 -0
  78. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/exa/common/sweep/util.py +0 -0
  79. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/iqm_exa_common.egg-info/SOURCES.txt +0 -0
  80. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/iqm_exa_common.egg-info/dependency_links.txt +0 -0
  81. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/iqm_exa_common.egg-info/requires.txt +0 -0
  82. {iqm_exa_common-26.28.0 → iqm_exa_common-26.30.0}/src/iqm_exa_common.egg-info/top_level.txt +0 -0
@@ -2,6 +2,22 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ Version 26.30.0 (2025-08-11)
6
+ ============================
7
+
8
+ Bug fixes
9
+ ---------
10
+
11
+ - Fix SettingNode.merge producing wrong paths/names in certain programmatic usage.
12
+
13
+ Version 26.29.0 (2025-07-24)
14
+ ============================
15
+
16
+ Features
17
+ --------
18
+
19
+ - Added log level to :class:`StationControlError`.
20
+
5
21
  Version 26.28.0 (2025-07-09)
6
22
  ============================
7
23
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-exa-common
3
- Version: 26.28.0
3
+ Version: 26.30.0
4
4
  Summary: Framework for control and measurement of superconducting qubits: common library
5
5
  Author-email: IQM Finland Oy <info@meetiqm.com>
6
6
  License: Apache License
@@ -580,7 +580,8 @@ class SettingNode(BaseModel):
580
580
  else:
581
581
  new.settings[key] = item.model_copy()
582
582
  for key, item in first.subtrees.items():
583
- item_copy = item.model_copy(update={"name": item.name.replace(f"{first.name}.", "")}, deep=deep_copy)
583
+ update = {"name": item.name.replace(f"{first.name}.", "")} if align_name else {}
584
+ item_copy = item.model_copy(update=update, deep=deep_copy)
584
585
  subs = new if align_name else new.subtrees
585
586
  if key in new.subtrees:
586
587
  subs[key] = SettingNode.merge(item_copy, new[key])
@@ -14,17 +14,29 @@
14
14
  """Errors used in the station control client-server communication."""
15
15
 
16
16
  from http import HTTPStatus
17
+ import logging
17
18
 
18
19
  from exa.common.errors.exa_error import ExaError
19
20
 
20
21
 
21
22
  class StationControlError(ExaError):
22
- """Base class for station control errors."""
23
+ """Base class for station control errors.
24
+
25
+ Args:
26
+ message: Normal error message.
27
+ log_level: The effective log level of this error.
28
+ By default, the ERROR level is used. Can be lowered to hide this error from the logs.
29
+
30
+ """
23
31
 
24
32
  # TODO: StationControlError shouldn't need to inherit ExaError
25
33
  # Some clients might still expect ExaErrors, thus inheriting here to avoid issues because of that.
26
34
  # Ideally, we would keep server errors (raised by station control) and any client side errors separate.
27
35
 
36
+ def __init__(self, message: str, log_level: int = logging.ERROR):
37
+ self.log_level = log_level
38
+ super().__init__(message)
39
+
28
40
 
29
41
  class BadRequestError(StationControlError):
30
42
  """Error raised when the request syntax is invalid or the method is unsupported in general."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-exa-common
3
- Version: 26.28.0
3
+ Version: 26.30.0
4
4
  Summary: Framework for control and measurement of superconducting qubits: common library
5
5
  Author-email: IQM Finland Oy <info@meetiqm.com>
6
6
  License: Apache License
@@ -0,0 +1 @@
1
+ 26.30.0
@@ -1 +0,0 @@
1
- 26.28.0