Skip to content

Commit 79dde0e

Browse files
committed
Allow to pass multiple list of column coordinates
In case if we pass multiple areas it's a very reasonable use case to be able to pass column separators for each area. Tabula-java supports it natively and it works with submitting repeated column lists as java-native options. Additionally, it matches the order with the order of the areas. It would be nice to have this feature wrapped into tabula-py.
1 parent d7a233b commit 79dde0e

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

tabula/util.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ class TabulaOption:
148148
stream: bool = False
149149
password: Optional[str] = None
150150
silent: Optional[bool] = None
151-
columns: Optional[Sequence[float]] = None
151+
columns: Optional[Union[Sequence[float], Sequence[Sequence[float]]]] = None
152152
relative_columns: bool = False
153153
format: Optional[str] = None
154154
batch: Optional[str] = None
@@ -236,11 +236,22 @@ def build_option_list(self) -> List[str]:
236236
__options += ["--outfile", self.output_path]
237237

238238
if self.columns:
239-
if list(self.columns) != sorted(self.columns):
240-
raise ValueError("columns option should be sorted")
239+
if isinstance(self.columns, (list,tuple)):
240+
if any(type(e) in [list, tuple] for e in self.columns):
241+
for e in self.columns:
242+
if list(e) != sorted(e):
243+
raise ValueError(
244+
"columns option should be sorted for each column"
245+
)
246+
247+
__columns = _format_with_relative(e, self.relative_columns)
248+
__options += ["--columns", __columns]
249+
else:
250+
if list(self.columns) != sorted(self.columns):
251+
raise ValueError("columns option should be sorted")
241252

242-
__columns = _format_with_relative(self.columns, self.relative_columns)
243-
__options += ["--columns", __columns]
253+
__columns = _format_with_relative(self.columns, self.relative_columns)
254+
__options += ["--columns", __columns]
244255

245256
if self.password:
246257
__options += ["--password", self.password]

0 commit comments

Comments
 (0)