Added
- Added `AnnealingResultData` class to `qbraid.runtime` module to represent annealing results. ([768](https://github.com/qBraid/qBraid/pull/768))
- Added `NECVectorAnnealerResultData` class to `qbraid.runtime.native` module to represent NEC vector annealer results. ([768](https://github.com/qBraid/qBraid/pull/768))
- Added `AnnealingExperimentMetadata` class to `qbraid.runtime.schemas` module to represent annealing experiment metadata. ([768](https://github.com/qBraid/qBraid/pull/768))
- Added `NECVectorAnnealerExperimentMetadata` class to `qbraid.runtime.schemas` module to represent NEC vector annealer experiment metadata. ([768](https://github.com/qBraid/qBraid/pull/768))
- Added mock data and methods to `test.resources` module to support testing of annealing and NEC vector annealing results. ([768](https://github.com/qBraid/qBraid/pull/768))
- Link to `examples` repo ([778](https://github.com/qBraid/qBraid/pull/778))
Improved / Modified
- Updated the ExperimentType enum to change the value of ANNEALING from "quantum_annealing" to "annealing" to better reflect the general nature of experiments. ([768](https://github.com/qBraid/qBraid/pull/768))
- Updated `QbraidJob.result` method to return `AnnealingResultData` or `NECVectorAnnealerResultData` instances for annealing and NEC vector annealer experiments, respectively. ([768](https://github.com/qBraid/qBraid/pull/768))
- Added a test case for the NEC Vector Annealer workflow in , including job submission and result retrieval. ([768](https://github.com/qBraid/qBraid/pull/768))
- Added unit tests for `AnnealingResultData`, `NECVectorAnnealerResultData`, and `AnnealingExperimentMetadata` classes. ([768](https://github.com/qBraid/qBraid/pull/768))
- PR compliance workflow that checks that `CHANGELOG.md` is updated with each PR, and if not, issues a reminder ([772](https://github.com/qBraid/qBraid/pull/772))
- Workflow to bump semantic version in `_version.py` ([773](https://github.com/qBraid/qBraid/pull/773))
- Changed `qbraid.runtime.NoiseModel` from an `Enum` to a `dataclass` and introduced `qbraid.runtime.NoiseModelSet` to manage multiple `NoiseModel` instances. An `Enum` was too restrictive since its values are fixed, so a more flexible structure was needed for loading noise model data from an API. Using a dataclass allows storing brief descriptions of noise models. `NoiseModelSet` ensures naming consistency and provides easy add, remove, and get operations for provider classes. ([773](https://github.com/qBraid/qBraid/pull/773))
- Make noise models optional in `DeviceData` schema ([784](https://github.com/qBraid/qBraid/pull/784))
python
from qbraid.runtime.noise import NoiseModel, NoiseModelSet
ideal_model = NoiseModel("ideal", "Ideal noise model for simulations")
custom_model = NoiseModel("custom", "Custom noise model with specific parameters")
models = NoiseModelSet()
models.add(ideal_model)
models.add(custom_model)
retrieved_model = models.get("ideal")
print(f"Retrieved model: {retrieved_model.name} - {retrieved_model.description}")
models.add("ideal", "Updated ideal model", overwrite=True)
for name, model in models.items():
print(f"{name}: {model.description}")
models.remove("custom")
- Moved `ExperimentType` enum into `qbraid.programs` ([777](https://github.com/qBraid/qBraid/pull/777))
- Renamed `qbraid.programs.circuits` to `qbraid.programs.gate_model` to match enum value ([777](https://github.com/qBraid/qBraid/pull/777))
Fixed
- Fixed spelling error of `test_quera_simulator_workflow` in `test.test_device` module. ([768](https://github.com/qBraid/qBraid/pull/768))