Skip to content

Commit ae6d99b

Browse files
committed
Fixed inheritance of Params classes
1 parent c6d5cf1 commit ae6d99b

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

src/omnipy/modules/raw/models.py

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,21 @@ class StrModel(_StrModel):
4949
)
5050

5151

52-
class _SplitToItemsMixin:
52+
class _SplitToItemsParamsMixin:
5353
@params_dataclass
5454
class Params(ParamsBase):
5555
strip: bool = True
5656
strip_chars: str | None = None
5757
delimiter: str = ','
5858

59+
60+
class _SplitToItemsMixin:
5961
@classmethod
6062
def _split_line(cls, data: str) -> list[str]:
61-
strip = cls.Params.strip
62-
strip_chars = cls.Params.strip_chars
63-
delimiter = cls.Params.delimiter
63+
Params = cast(type[_SplitToItemsParamsMixin], cls).Params
64+
strip = Params.strip
65+
strip_chars = Params.strip_chars
66+
delimiter = Params.delimiter
6467

6568
if strip:
6669
data = data.strip(strip_chars)
@@ -69,10 +72,7 @@ def _split_line(cls, data: str) -> list[str]:
6972
return [item.strip(strip_chars) for item in items] if strip else items
7073

7174

72-
class _SplitToItemsModel(
73-
Model[list[str] | str],
74-
_SplitToItemsMixin,
75-
):
75+
class _SplitToItemsModel(Model[list[str] | str], _SplitToItemsMixin):
7676
@classmethod
7777
def _parse_data(cls, data: list[str] | str) -> list[str]:
7878
if isinstance(data, list):
@@ -81,10 +81,10 @@ def _parse_data(cls, data: list[str] | str) -> list[str]:
8181
return cls._split_line(data)
8282

8383

84-
class SplitToItemsModel(_SplitToItemsModel):
84+
class SplitToItemsModel(_SplitToItemsParamsMixin, _SplitToItemsModel):
8585
adjust = bind_adjust_model_func(
8686
_SplitToItemsModel.clone_model_cls,
87-
_SplitToItemsModel.Params,
87+
_SplitToItemsParamsMixin.Params,
8888
)
8989

9090

@@ -115,10 +115,10 @@ def _parse_data(cls, data: list[list[str]] | list[str] | list[StrModel]) -> list
115115
return [cls._split_line(cast(str, line)) for line in data]
116116

117117

118-
class SplitItemsToSubitemsModel(_SplitItemsToSubitemsModel):
118+
class SplitItemsToSubitemsModel(_SplitToItemsParamsMixin, _SplitItemsToSubitemsModel):
119119
adjust = bind_adjust_model_func(
120120
_SplitItemsToSubitemsModel.clone_model_cls,
121-
_SplitItemsToSubitemsModel.Params,
121+
_SplitToItemsParamsMixin.Params,
122122
)
123123

124124

@@ -137,14 +137,16 @@ class SplitLinesToColumnsModel(_SplitLinesToColumnsParamsMixin, _SplitItemsToSub
137137
)
138138

139139

140-
class _JoinItemsMixin:
140+
class _JoinItemsParamMixin:
141141
@params_dataclass
142142
class Params(ParamsBase):
143143
delimiter: str = ','
144144

145+
146+
class _JoinItemsMixin:
145147
@classmethod
146148
def _join_items(cls, data: list[str]) -> str:
147-
return cls.Params.delimiter.join(data)
149+
return cast(_JoinItemsParamMixin, cls).Params.delimiter.join(data)
148150

149151

150152
class _JoinItemsModel(Model[str | list[str]], _JoinItemsMixin):
@@ -158,10 +160,10 @@ def _parse_data(cls, data: str | list[str]) -> str:
158160
...
159161

160162

161-
class JoinItemsModel(_JoinItemsModel):
163+
class JoinItemsModel(_JoinItemsParamMixin, _JoinItemsModel):
162164
adjust = bind_adjust_model_func(
163165
_JoinItemsModel.clone_model_cls,
164-
_JoinItemsModel.Params,
166+
_JoinItemsParamMixin.Params,
165167
)
166168

167169

@@ -190,10 +192,10 @@ def _parse_data(cls, data: list[str] | list[list[str]]) -> list[str]:
190192
return [cls._join_items(cast(list[str], cols)) for cols in data]
191193

192194

193-
class JoinSubitemsToItemsModel(_JoinSubitemsToItemsModel):
195+
class JoinSubitemsToItemsModel(_JoinItemsParamMixin, _JoinSubitemsToItemsModel):
194196
adjust = bind_adjust_model_func(
195197
_JoinSubitemsToItemsModel.clone_model_cls,
196-
_JoinSubitemsToItemsModel.Params,
198+
_JoinItemsParamMixin.Params,
197199
)
198200

199201

0 commit comments

Comments
 (0)