diff --git a/src/braket/analog_hamiltonian_simulator/rydberg/validators/device_validators/device_ir_validator.py b/src/braket/analog_hamiltonian_simulator/rydberg/validators/device_ir_validator.py similarity index 100% rename from src/braket/analog_hamiltonian_simulator/rydberg/validators/device_validators/device_ir_validator.py rename to src/braket/analog_hamiltonian_simulator/rydberg/validators/device_ir_validator.py diff --git a/src/braket/analog_hamiltonian_simulator/rydberg/validators/program.py b/src/braket/analog_hamiltonian_simulator/rydberg/validators/program.py index e7afb004..86d7c378 100644 --- a/src/braket/analog_hamiltonian_simulator/rydberg/validators/program.py +++ b/src/braket/analog_hamiltonian_simulator/rydberg/validators/program.py @@ -12,6 +12,7 @@ # language governing permissions and limitations under the License. from copy import deepcopy +from typing import Union from braket.ir.ahs.program_v1 import Program from pydantic.v1 import root_validator @@ -20,13 +21,16 @@ from braket.analog_hamiltonian_simulator.rydberg.validators.capabilities_constants import ( CapabilitiesConstants, ) +from braket.analog_hamiltonian_simulator.rydberg.validators.device_capabilities_constants import ( + DeviceCapabilitiesConstants, +) from braket.analog_hamiltonian_simulator.rydberg.validators.field_validator_util import ( validate_net_detuning_with_warning, ) class ProgramValidator(Program): - capabilities: CapabilitiesConstants + capabilities: Union[CapabilitiesConstants, DeviceCapabilitiesConstants] # The pattern of the shifting field must have the same length as the lattice_sites @root_validator(pre=True, skip_on_failure=True) @@ -61,7 +65,7 @@ def net_detuning_must_not_exceed_max_net_detuning(cls, values): # If no local detuning, we simply return the values # because there are separate validators to validate # the global driving fields in the program - if not len(local_detuning): + if not len(local_detuning) or not capabilities.MAX_NET_DETUNING: return values detuning_times = [ diff --git a/test/unit_tests/braket/analog_hamiltonian_simulator/test_validator/validators/device_validators/test_device_ir_validator.py b/test/unit_tests/braket/analog_hamiltonian_simulator/test_validator/validators/device_validators/test_device_ir_validator.py new file mode 100644 index 00000000..3c4d4e9d --- /dev/null +++ b/test/unit_tests/braket/analog_hamiltonian_simulator/test_validator/validators/device_validators/test_device_ir_validator.py @@ -0,0 +1,13 @@ +import pytest +from pydantic.v1.error_wrappers import ValidationError + +from braket.analog_hamiltonian_simulator.rydberg.validators.device_ir_validator import ( + validate_program, +) + + +def test_validate_program(program_data, capabilities_with_local_rydberg): + try: + validate_program(program=program_data, device_capabilities=capabilities_with_local_rydberg) + except ValidationError as e: + pytest.fail(f"Validate program is failing : {str(e)}")