Source code for ewoksdata.data.utils
from numbers import Number
from typing import List
from typing import Mapping
from typing import Optional
from typing import Tuple
import numpy
[docs]
def is_data(data):
if isinstance(data, (numpy.ndarray, Number)):
return True
if isinstance(data, (str, list)) and data:
return True
return False
[docs]
def data_from_storage(data, remove_numpy=True):
if isinstance(data, numpy.ndarray):
if not remove_numpy:
return data
elif data.ndim == 0:
return data.item()
else:
return data.tolist()
elif isinstance(data, Mapping):
return {
k: data_from_storage(v, remove_numpy=remove_numpy)
for k, v in data.items()
if not k.startswith("@")
}
else:
return data
def _validate_names(names: Optional[List[str]], name_type: str) -> None:
if names is None:
return
for n in names:
if not isinstance(n, str) or not n.strip():
raise ValueError(f"Invalid {name_type} name: {n!r}")
[docs]
def validate_and_init_names(
lima_names: Optional[List[str]],
counter_names: Optional[List[str]],
) -> Tuple[List[str], List[str]]:
_validate_names(lima_names, "LIMA")
_validate_names(counter_names, "Counter")
return (
lima_names if lima_names is not None else [],
counter_names if counter_names is not None else [],
)