@@ -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
150152class _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