Source code for koapy.backend.kiwoom_open_api_plus.utils.list_conversion
import collections
from functools import wraps
from inspect import signature
[docs]def string_to_list(s, sep=";"):
if s is None:
return s
if not isinstance(s, str) and isinstance(s, collections.abc.Iterable):
return s
return s.rstrip(sep).split(sep) if s else []
[docs]def list_to_string(l, sep=";"):
if l is None:
return l
if isinstance(l, str):
return l
if not isinstance(l, collections.abc.Iterable):
return l
return sep.join(l) if l else ""
[docs]def convert_list_arguments(*indices):
def decorator(f):
sig = signature(f)
names = tuple(sig.parameters.keys())
@wraps(f)
def wrapper(*args, **kwargs):
ba = sig.bind(*args, **kwargs)
ba.apply_defaults()
for i in indices:
if isinstance(i, int):
i = names[i]
if isinstance(i, str):
ba.arguments[i] = list_to_string(ba.arguments[i])
args = ba.args
kwargs = ba.kwargs
return f(*args, **kwargs)
return wrapper
return decorator