# Changelog
## Version 27.5.3 (2026-04-30)
### Bug fixes
- Switch from pinned dependencies to ranges for the bare package installation.
- Domain changed from meetiqm.com to iqm.tech.
### Features
- Prepare package for `4.5.2` release. No functional changes.
## Version 27.5.2 (2026-04-23)
### Bug fixes
- Switch from pinned `requests` dependency to range.
## Version 27.5.1 (2026-04-09)
### Bug fixes
- `Setting` s with no value now can have no source either.
- Fixed a bug where `SettingNode` cache was out-of-sync with the actual tree.
- Fixed a bug where `Setting.source` was not always properly set.
### Features
- `Setting.read_only` is now included in the full Setting Protobuf message,
so the information is sent from Station Control to the clients.
- Deprecated `exa.common.helpers.data_helper.add_data_array()`
- Remove unused `~exa.common.helpers.software_version_helper.get_vcs_description`.
- Removed the use of `pkg_resources` in favor of `importlib` for accessing
package data in `exa.common.helpers.software_version_helper` improving
compatibility and performance.
This fixes compatibility issues with `setuptools>=82.0.0`.
## Version 27.4.0 (2025-11-19)
### Features
- Add new error types `PayloadTooLargeError` and `TooManyRequestsError` used by IQMServer in REST API responses.
- Add a shortcut `Setting.sweep(values)` to create a `Sweep`.
### Bug fixes
- When adding a DataArray with the name of an existing DataArray to a dataset using `add_data_array`,
update the attributes of the DataArray itself.
## Version 27.3.0 (2025-10-06)
### Features
- Minor update to `format_deprecated` to accept datetimes only in one format for consistency.
## Version 27.2.0 (2025-10-03)
### Bug fixes
- Skip following mypy imports to iqm-data-definitions until errors are fixed.
## Version 27.1.0 (2025-09-19)
### Features
- Add chip layout to hold the coordinates of the chip design record.
## Version 27.0.0 (2025-09-12)
### Breaking changes
- Remove deprecated sweeps.
## Version 26.33.0 (2025-09-03)
### Features
- Enable ruff rule for missing annotations and mark exemptions.
## Version 26.32.0 (2025-08-27)
### Bug fixes
- Fix empty list of editable software packages.
## Version 26.31.0 (2025-08-13)
### Bug fixes
- Catch deprecation warning for pkg resources.
## Version 26.30.0 (2025-08-11)
### Bug fixes
- Fix SettingNode.merge producing wrong paths/names in certain programmatic usage.
## Version 26.29.0 (2025-07-24)
### Features
- Added log level to `StationControlError`.
## Version 26.28.0 (2025-07-09)
### Features
- Enable mypy type checking in CI and add temporary type ignores to the source code.
## Version 26.27.0 (2025-07-04)
### Features
- Setting now has a private field _source and an associated property which can be used to store e.g. the observation that is the source of the Setting's value.
## Version 26.26.0 (2025-07-02)
### Bug fixes
- Fix type errors raised by mypy.
## Version 26.25.0 (2025-06-17)
### Features
- Add missing jinja2 requirement
## Version 26.24.0 (2025-06-17)
### Bug fixes
- Bump iqm-pulse dependency. No functional changes.
## Version 26.23.0 (2025-06-17)
### Features
- Improve errors in `exa.common.src.exa.common.errors.station_control_errors`.
## Version 26.22.0 (2025-06-13)
### Features
- Rename `server_errors.py` to `station_control_errors.py` for better clarity.
- Add two new `StationControlError` subclasses, `BadGatewayError` and `GatewayTimeoutError`.
## Version 26.21.0 (2025-06-10)
### Features
- Refine error code mapping in `exa.common.errors.server_errors`.
## Version 26.20.0 (2025-05-21)
### Features
- Fix cocos path in ruff isort to run isort for cocos correctly.
## Version 26.19.0 (2025-05-20)
### Features
- Bump NumPy dependency to 1.26.4.
- Bump `iqm-data-definitions`.
## Version 26.18.0 (2025-05-12)
### Features
- Changes in CI and image build logic, no functional changes.
## Version 26.17.1 (2025-05-12)
- Test patch versioning, no functional changes.
## Version 26.17.0 (2025-05-09)
### Features
- Modify `get_connected_probe_lines` such that it also works for qubits without readout.
## Version 26.16.0 (2025-05-06)
### Bug fixes
- Fix copy deprecation warning.
## Version 26.15.0 (2025-04-29)
### Features
- Add method `ChipTopology.get_connected_coupler_map`, which returns a dictionary mapping couplers to components based on the output of `ChipTopology.get_connecting_couplers`.
## Version 26.14.0 (2025-04-22)
### Features
- Trigger new version with improved CI workflow
## Version 26.13.0 (2025-04-11)
### Bug fixes
- Update license
## Version 26.12.0 (2025-04-10)
### Features
- Fix vulnerability issue with YAML loading, use safe_load to avoid potential harmful remote code execution.
## Version 26.11.0 (2025-04-07)
### Features
- Add new error class ConflictError designed for client-server communication via station control client.
## Version 26.10.0 (2025-04-07)
### Features
- Fix package version in published docs footers.
## Version 26.9.0 (2025-04-03)
Feature
- Format code and enable PEP 604 in linting rules.
## Version 26.8.0 (2025-04-02)
### Features
- Update the documentation footer to display the package version.
## Version 26.7.0 (2025-04-01)
### Features
- Use standard process of deprecation. No functional changes.
## Version 26.6.0 (2025-03-21)
### Features
- Rename QPU chip types, based on either "crystal" or "star" architecture and number of qubits. For example,
"crystal_5" or "star_6". For "mini" chips, like "mini_crystal_20", the number is not based on the actual number
of qubits but to the chip it's trying to "minimize" instead, like "crystal_20".
## Version 26.5.0 (2025-03-19)
### Bug fixes
- Fix Parameters with element_indices having those indices duplicated in the name when deserialised
## Version 26.4.0 (2025-03-11)
### Features
- Bump pulla
## Version 26.3.0 (2025-03-05)
### Features
- Add new error classes designed for client-server communication via station control client.
- Remove general RequestError and use new specific error classes instead.
## Version 26.2.0 (2025-03-03)
### Bug fixes
- Fix numpy numeric types serialization in sweeps
## Version 26.1.0 (2025-02-28)
### Bug fixes
- Fix protobuf deserialisation to not align SettingNode names
## Version 26.0.0 (2025-02-27)
### Breaking changes
- Remove Pydantic based `ParameterModel`, `SettingModel`, `SettingNodeModel`, and `SweepModel`,
and inherit `Parameter`, `Setting`, `SettingNode`, and `Sweep` from Pydantic model directly.
As a result, the signature of usage has changed.
- Instead of `copy`, `model_copy` (with an optional `update` parameter) should be used.
- For deserialization, for now, use `SettingNode.deserialize` (Pydantic native approach will be implemented later)
- `FunctionSweep` and `FunctionOptions` has been deleted.
- `.SettingNode` now supports "the path notation" when inserting/getting nodes
- Example: `settings["flux.my.new.path.foo"] = SettingNode(...)` adds the specified node under the specified path.
Any missing subnodes will be added.
- `.SettingNode` and `.Setting` now have an attribute `path` which will be populated by their relative
path within the settings tree when inserting/creating the node. The base class will also automatically align the name
of a node with its path, but there is an attribute `align_name` which can be set to `False` to not align
(used e.g. in the controllers section of the EXA settings tree).
- Remove deprecated `QCMClient.get_chad` and `QCMClient.get_qubit_design_properties`.
### Features
- Settings can now be declared read-only by setting `read_only = True` when
initialising the setting.
- Modified the html representation of settings tree to support read_only settings.
- Methods `.SettingNode.get_gate_node_for_locus`, `.SettingNode.get_gate_properties_for_locus`,
`.SettingNode.get_default_implementation`, and `.SettingNode.get_locus_node_paths_for` added
for accessing EXA-specific gate/characterization nodes in the settings tree.
- Methods `.SettingNode.add_for_path` and `.get_node_for_path` that facilitate dealing with long paths
in setting trees.
in setting trees.
- `Sweep.options` is deprecated, use `Sweep.data` instead. `data` can be still generated using different
sweep options.
- `ExponentialSweep`, `FixedSweep`, and `LinearSweep` are deprecated, use `Sweep` instead.
- Split `DataType.NUMBER` to `DataType.FLOAT` and `DataType.INT`. `DataType.NUMBER` is now handled as a
deprecated alias for `DataType.FLOAT`.
## Version 25.34.0 (2025-02-06)
### Bug fixes
- Bump mechanize test dependency.
## Version 25.33.0 (2025-02-04)
### Features
- Refactor codebase to new lint rules. No functional changes.
## Version 25.32.0 (2025-02-04)
### Features
- Refactor codebase to new lint rules. No functional changes.
## Version 25.31.0 (2025-01-28)
### Features
- Support broader range of `numpy` versions and verify compatibily with ruff, see migration guide `https://numpy.org/doc/stable/numpy_2_0_migration_guide.html`.
## Version 25.30.0 (2025-01-28)
### Bug fixes
- Method `ChipTopology.get_all_common_resonators` can never return a set containing components which are not
computational resonators.
## Version 25.29.0 (2025-01-27)
### Features
- Bump version for an updated repo organization. No functional changes.
## Version 25.28.0 (2025-01-08)
### Features
- Remove gitlab links from public pages.
## Version 25.27.0 (2024-12-19)
### Features
- Bumps xarray
## Version 25.26.0 (2024-12-12)
### Features
- Bump exa-experiments
## Version 25.25.0 (2024-12-11)
### Features
- Fix public PyPI publishing.
## Version 25.24.0 (2024-12-11)
### Features
- Change license info to Apache 2.0.
## Version 25.23.0 (2024-12-09)
### Features
Fix extlinks to MRs and issues in sphinx docs config
## Version 25.22.0 (2024-12-05)
### Features
- Fix intersphinx reference paths in docs
## Version 25.21.0 (2024-12-04)
### Features
- Adds unit test for sorting couplers
## Version 25.20.0 (2024-12-04)
### Features
- Bump version for an updated repo organization. No functional changes.
## Version 25.19.0 (2024-11-29)
### Features
- Include computational resonators as possible locus components for `DEFAULT_2QB_MAPPING`, which is used for slow CZ
gates, required for.
## Version 25.18.0 (2024-11-27)
### Features
- Expand allowed CHEDDAR versions in `qcm_data_client` to include versions 2.x.
## Version 25.17.0 (2024-11-19)
### Features
- Bump version for an updated repo organization. No functional changes.
## Version 25.16.0 (2024-11-15)
### Bug fixes
- Remove iqm-internal web links in customer docs artifacts.
## Version 25.15.0 (2024-11-08)
### Features
- New changelog workflow, no functional changes.
## Version 25.14 (2024-10-30)
- Bump Pydantic to version 2.9.2.
## Version 25.13 (2024-10-28)
- Bump NumPy to version 1.25.2.
## Version 25.12 (2024-10-24)
- Add sweep validation to `convert_sweeps_to_list_of_tuples` function.
## Version 25.11 (2024-10-11)
- Add `get_all_common_resonators`
## Version 25.10 (2024-10-02)
- Bump `iqm-data-definitions` to 2.0.
## Version 25.9 (2024-09-23)
- Bump dependency `requests` to version 2.32.3
## Version 25.8 (2024-09-10)
### Features
- Add `EmptyComponentListError`.
## Version 25.7 (2024-08-23)
### Bug fixes
- Fix `Setting.__eq__` not working between values of type `np.ndarray` and `None`.
## Version 25.6 (2024-08-16)
### Bug fixes
- Fix `QCMDataClient.get_chip_design_record` not working on remote targets.
## Version 25.5 (2024-08-15)
### Features
- Add `QCMDataClient.get_chip_design_record`. Can be used in place of `get_chad`.
- Deprecate `QCMDataClient.get_qubit_design_properties` as the chip design_record (CHEDDAR) contains the same data.
- Add more utility methods to `ChipTopology`.
## Version 25.4 (2024-07-12)
### Features
- Add an optional fallback URL to `QCMDataClient`.
## Version 25.3 (2024-07-05)
### Features
- Add `_repr_html_` method for `SettingNode`. This method overrides the
default `repr` in notebooks.
## Version 25.2 (2024-07-04)
### Features
- Add couplers to data components of `ChipTopology`.
## Version 25.1 (2024-06-27)
### Features
- First changelog for exa-common. No functional changes.