in src/braket/ir/jaqcd/program_v1.py [0:0]
def validate_instructions(cls, value, field):
"""
Pydantic uses the validation subsystem to create objects. This custom validator has
2 purposes:
1. Implement O(1) deserialization
2. Validate that the input instructions are supported
"""
if isinstance(value, BaseModel):
if (
(value.type not in _valid_gates)
and (value.type not in _valid_noise_channels)
and (value.type not in _valid_compiler_directives)
):
raise ValueError(f"Invalid value.type specified: {value} for field: {field}")
return value
if value is not None and "type" in value:
if value["type"] in _valid_gates:
return _valid_gates[value["type"]](**value)
elif value["type"] in _valid_noise_channels:
return _valid_noise_channels[value["type"]](**value)
elif value["type"] in _valid_compiler_directives:
return _valid_compiler_directives[value["type"]](**value)
else:
raise ValueError(f"Invalid instruction specified: {value} for field: {field}")
else:
raise ValueError(f"Invalid type or value specified: {value} for field: {field}")