def validate_instructions()

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}")