Skip to content

Commit

Permalink
Refactor options so options config class can now be called by other p…
Browse files Browse the repository at this point in the history
…ython modules
  • Loading branch information
awarde96 authored and jameshawkes committed Aug 19, 2024
1 parent 501d03d commit d39424b
Showing 1 changed file with 57 additions and 45 deletions.
102 changes: 57 additions & 45 deletions polytope/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,54 +6,66 @@
from pydantic import ConfigDict


class TransformationConfig(ConfigModel):
model_config = ConfigDict(extra="forbid")
name: str = ""


class CyclicConfig(TransformationConfig):
name: Literal["cyclic"]
range: List[float] = [0]


class MapperConfig(TransformationConfig):
name: Literal["mapper"]
type: str = ""
resolution: Union[int, List[int]] = 0
axes: List[str] = [""]
local: Optional[List[float]] = None


class ReverseConfig(TransformationConfig):
name: Literal["reverse"]
is_reverse: bool = False


class TypeChangeConfig(TransformationConfig):
name: Literal["type_change"]
type: str = "int"


class MergeConfig(TransformationConfig):
name: Literal["merge"]
other_axis: str = ""
linkers: List[str] = [""]


action_subclasses_union = Union[CyclicConfig, MapperConfig, ReverseConfig, TypeChangeConfig, MergeConfig]


class AxisConfig(ConfigModel):
axis_name: str = ""
transformations: list[action_subclasses_union]


path_subclasses_union = Union[str, int, float]


class GribJumpAxesConfig(ConfigModel):
axis_name: str = ""
values: List[str] = [""]


class Config(ConfigModel):
axis_config: List[AxisConfig] = []
compressed_axes_config: List[str] = [""]
pre_path: Optional[Dict[str, path_subclasses_union]] = {}
alternative_axes: List[GribJumpAxesConfig] = []


class PolytopeOptions(ABC):
@staticmethod
def get_polytope_options(options):
class TransformationConfig(ConfigModel):
model_config = ConfigDict(extra="forbid")
name: str = ""

class CyclicConfig(TransformationConfig):
name: Literal["cyclic"]
range: List[float] = [0]

class MapperConfig(TransformationConfig):
name: Literal["mapper"]
type: str = ""
resolution: Union[int, List[int]] = 0
axes: List[str] = [""]
local: Optional[List[float]] = None

class ReverseConfig(TransformationConfig):
name: Literal["reverse"]
is_reverse: bool = False

class TypeChangeConfig(TransformationConfig):
name: Literal["type_change"]
type: str = "int"

class MergeConfig(TransformationConfig):
name: Literal["merge"]
other_axis: str = ""
linkers: List[str] = [""]

action_subclasses_union = Union[CyclicConfig, MapperConfig, ReverseConfig, TypeChangeConfig, MergeConfig]

class AxisConfig(ConfigModel):
axis_name: str = ""
transformations: list[action_subclasses_union]

path_subclasses_union = Union[str, int, float]

class GribJumpAxesConfig(ConfigModel):
axis_name: str = ""
values: List[str] = [""]

class Config(ConfigModel):
axis_config: List[AxisConfig] = []
compressed_axes_config: List[str] = [""]
pre_path: Optional[Dict[str, path_subclasses_union]] = {}
alternative_axes: List[GribJumpAxesConfig] = []

parser = argparse.ArgumentParser(allow_abbrev=False)
conflator = Conflator(app_name="polytope", model=Config, cli=False, argparser=parser, **options)
Expand Down

0 comments on commit d39424b

Please sign in to comment.