def binary_op_act_configs(ops: _List[_Any], acts: _List[_Any]) -> _List[_BackendPatternConfig]:
    """
    Returns backend pattern configs for the following sequence of ops:

    input_1 -->
                  operator --> act --> output
    input_2 -->

    where operator is a binary operator such as add or multiply.
    """
    configs = []
    for op in ops:
        configs.extend(
            [
                _BackendPatternConfig(get_fusion_pattern((act, op)))
                .set_dtype_configs(act_quant_dtype_configs)
                .set_observation_type(_ObservationType.OUTPUT_USE_DIFFERENT_OBSERVER_AS_INPUT)
                for act in acts
            ]
        )
    return configs

    Returns backend pattern configs for the following sequence of ops:

    input_1 -->
                  operator --> act --> output
    input_2 -->

    where operator is a binary operator such as add or multiply.
    
coremltools/optimize/torch/quantization/_backend_config_utils.py