diff --git a/mindee/parsing/v2/base_field.py b/mindee/parsing/v2/base_field.py index ee75498c..e09e2fdf 100644 --- a/mindee/parsing/v2/base_field.py +++ b/mindee/parsing/v2/base_field.py @@ -34,6 +34,7 @@ class InferenceFields(Dict[str, Union["SimpleField", "ObjectField", "ListField"] def __init__(self, raw_response: StringDict, indent_level: int = 0) -> None: super().__init__() + self._indent_level = indent_level for key, value in raw_response.items(): field_obj = BaseField.create_field(value, indent_level) self[key] = field_obj @@ -45,10 +46,23 @@ def __getattr__(self, item): raise AttributeError(item) from None def __str__(self) -> str: - str_fields = "" + out_str = "" for field_key, field_value in self.items(): - str_fields += f":{field_key}: {field_value}" - return str_fields + if isinstance(field_value, ListField): + value_str = " " * self._indent_level + if len(field_value.items) > 0: + value_str = ( + " " * self._indent_level + str(field_value) + if field_value + else "" + ) + out_str += f"{' ' * self._indent_level}:{field_key}: {value_str}" + elif isinstance(field_value, ObjectField): + out_str += f"{' ' * self._indent_level}:{field_key}: {field_value}" + else: + out_str += f"{' ' * self._indent_level}:{field_key}: {field_value if field_value else ''}" + out_str += "\n" + return out_str.rstrip() class ListField(BaseField): @@ -70,7 +84,7 @@ def __init__(self, raw_response: StringDict, indent_level: int = 0): def __str__(self) -> str: out_str = "" for item in self.items: - out_str += f"* {str(item)[2:] if item else ''}" + out_str += f"*{str(item)[2:] if item else ''}" return "\n" + out_str if out_str else "" @@ -87,20 +101,7 @@ def __init__(self, raw_response: StringDict, indent_level: int = 0): self.fields = InferenceFields(inner_fields, self._indent_level + 1) def __str__(self) -> str: - out_str = "" - for field_key, field_value in self.fields.items(): - if isinstance(field_value, ListField): - value_str = "" - if len(field_value.items) > 0: - value_str = ( - " " * self._indent_level + str(field_value) - if field_value - else "" - ) - out_str += f"{' ' * self._indent_level}:{field_key}: {value_str}" - else: - out_str += f"{' ' * self._indent_level}:{field_key}: {field_value if field_value else ''}" - return out_str + return f"\n{self.fields}" class SimpleField(BaseField): @@ -113,4 +114,4 @@ def __init__(self, raw_response: StringDict, indent_level: int = 0): self.value = raw_response["value"] = raw_response.get("value", None) def __str__(self) -> str: - return f"{self.value}\n" if self.value else "\n" + return f"{self.value}" if self.value else "" diff --git a/mindee/parsing/v2/inference.py b/mindee/parsing/v2/inference.py index 61e63c49..1c960adb 100644 --- a/mindee/parsing/v2/inference.py +++ b/mindee/parsing/v2/inference.py @@ -28,10 +28,9 @@ def __str__(self) -> str: return ( f"Inference\n" f"#########\n" - f":Model: {self.model.id}\n" - f":File:\n" - f" :Name: {self.file.name}\n" - f" :Alias: {self.file.alias}\n\n" + f":model: {self.model.id}\n" + ":file:\n" + f"{self.file.__str__(1)}" f"Result\n" f"======\n" f"{self.result}\n" diff --git a/mindee/parsing/v2/inference_file.py b/mindee/parsing/v2/inference_file.py index a23ad46c..e592d558 100644 --- a/mindee/parsing/v2/inference_file.py +++ b/mindee/parsing/v2/inference_file.py @@ -1,3 +1,5 @@ +from typing import Optional + from mindee.parsing.common.string_dict import StringDict @@ -6,9 +8,15 @@ class InferenceFile: name: str """Name of the file.""" - alais: str + alias: Optional[str] """Alias of the file.""" def __init__(self, raw_response: StringDict) -> None: self.name = raw_response["name"] self.alias = raw_response["alias"] + + def __str__(self, indent: int = 0) -> str: + return ( + f"{' ' * indent}:name: {self.name}\n" + f"{' ' * indent}:alias: {self.alias if self.alias else ''}\n" + )