diff --git a/shapeflow/__init__.py b/shapeflow/__init__.py index 83b41701..46773dc6 100644 --- a/shapeflow/__init__.py +++ b/shapeflow/__init__.py @@ -30,7 +30,7 @@ import diskcache -__version__: str = '0.4.3' +__version__: str = '0.4.4' """Library version """ diff --git a/shapeflow/config.py b/shapeflow/config.py index 60df5283..e6730e6f 100644 --- a/shapeflow/config.py +++ b/shapeflow/config.py @@ -479,6 +479,13 @@ def normalizing_to(version): # rename parameters -> feature_parameters if 'parameters' in d: d['feature_parameters'] = d.pop('parameters') + if before_version(d[VERSION], '0.4.4'): + normalizing_to('0.4.4') + # move video_path & design_path to video.path & design.path + if 'video_path' in d: + d['video'] = {'path': d.pop('video_path')} + if 'design_path' in d: + d['design'] = {'path': d.pop('design_path')} else: raise NotImplementedError diff --git a/shapeflow/core/backend.py b/shapeflow/core/backend.py index 2d13cf63..05ab2396 100644 --- a/shapeflow/core/backend.py +++ b/shapeflow/core/backend.py @@ -11,7 +11,7 @@ import numpy as np import pandas as pd -from pydantic import Field +from pydantic import Field, FilePath from shapeflow import settings, get_logger, get_cache from shapeflow.api import api @@ -486,14 +486,20 @@ def __modify_schema__(cls, field_schema): ) +class FileConfig(BaseConfig): + path: Optional[FilePath] = Field(default=None) + hash: Optional[FilePath] = Field(default=None) + + class BaseAnalyzerConfig(BaseConfig): """Abstract analyzer configuration. """ - video_path: Optional[str] = Field(default=None) - design_path: Optional[str] = Field(default=None) name: Optional[str] = Field(default=None) description: Optional[str] = Field(default=None) + video: FileConfig = Field(default_factory=FileConfig) + design: FileConfig = Field(default_factory=FileConfig) + class BaseAnalyzer(Instance, RootInstance): """Abstract analyzer.