be more specific for error message (#1409)

### What problem does this PR solve?

#918 

### Type of change

- [x] Refactoring
This commit is contained in:
KevinHuSh
2024-07-08 09:32:44 +08:00
committed by GitHub
parent dcb3fb2073
commit b3ebc66b13
9 changed files with 126 additions and 61 deletions

View File

@ -19,7 +19,7 @@ import json
import os
from copy import deepcopy
from functools import partial
from typing import List, Dict
from typing import List, Dict, Tuple, Union
import pandas as pd
@ -246,7 +246,7 @@ class ComponentParamBase(ABC):
def check_empty(param, descr):
if not param:
raise ValueError(
descr + " {} not supported empty value."
descr + " does not support empty value."
)
@staticmethod
@ -411,12 +411,23 @@ class ComponentBase(ABC):
def _run(self, history, **kwargs):
raise NotImplementedError()
def output(self) -> pd.DataFrame:
def output(self, allow_partial=True) -> Tuple[str, Union[pd.DataFrame, partial]]:
o = getattr(self._param, self._param.output_var_name)
if not isinstance(o, partial) and not isinstance(o, pd.DataFrame):
if not isinstance(o, list): o = [o]
o = pd.DataFrame(o)
return self._param.output_var_name, o
if allow_partial or not isinstance(o, partial):
if not isinstance(o, partial) and not isinstance(o, pd.DataFrame):
return pd.DataFrame(o if isinstance(o, list) else [o])
return self._param.output_var_name, o
outs = None
for oo in o():
if not isinstance(oo, pd.DataFrame):
outs = pd.DataFrame(oo if isinstance(oo, list) else [oo])
else: outs = oo
return self._param.output_var_name, outs
def reset(self):
setattr(self._param, self._param.output_var_name, None)
@ -446,7 +457,7 @@ class ComponentBase(ABC):
if self.component_name.lower().find("answer") >= 0:
if self.get_component_name(u) in ["relevant"]: continue
upstream_outs.append(self._canvas.get_component(u)["obj"].output()[1])
else: upstream_outs.append(self._canvas.get_component(u)["obj"].output(allow_partial=False)[1])
break
return pd.concat(upstream_outs, ignore_index=False)