def talib_adapter(function_mixin: str, function_name: str, **kwargs): output_strings = Function(function_mixin).output_names column_strings = Function(function_mixin).input_names column_strings = list( column_strings.items())[0][1] # Get required columns from OrderedDict def func(df: pd.DataFrame) -> pd.DataFrame: try: output_index = output_strings.index(function_name) except ValueError: raise ValueError("Not existing function_name was supplied") input_arrays = { column_name: df[column_name] for column_name in column_strings } indicator = Function(function_mixin) result = indicator(input_arrays, **kwargs) df["signal"] = result[output_index] return df return func