Skip to content

Commit 6b290d8

Browse files
committed
FEAT: dispatch parquet paths to different adapters depending on available modules
give priority to polars because it has more features
1 parent 0a92244 commit 6b290d8

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

larray_editor/arrayadapter.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3180,14 +3180,34 @@ def get_values(self, h_start, v_start, h_stop, v_stop):
31803180
return [[line] for line in self._get_lines(v_start, v_stop)]
31813181

31823182

3183-
@path_adapter_for('.parquet', 'pyarrow.parquet')
3184-
class ParquetPathAdapter(PyArrowParquetFileAdapter):
3183+
class PolarsParquetPathAdapter(PolarsLazyFrameAdapter):
31853184
@classmethod
31863185
def open(cls, fpath):
3187-
pq = sys.modules['pyarrow.parquet']
3186+
import polars as pl
3187+
return pl.scan_parquet(fpath)
3188+
3189+
3190+
class PyArrowParquetPathAdapter(PyArrowParquetFileAdapter):
3191+
@classmethod
3192+
def open(cls, fpath):
3193+
import pyarrow.parquet as pq
31883194
return pq.ParquetFile(fpath)
31893195

31903196

3197+
@path_adapter_for('.parquet')
3198+
def dispatch_parquet_path_adapter(fpath):
3199+
try:
3200+
# try the polars adapter first as it has more features
3201+
import polars as pl
3202+
return PolarsParquetPathAdapter
3203+
except ImportError:
3204+
try:
3205+
import pyarrow.parquet as pq
3206+
return PyArrowParquetFileAdapter
3207+
except ImportError:
3208+
return None
3209+
3210+
31913211
@path_adapter_for('.bat')
31923212
@path_adapter_for('.cfg')
31933213
@path_adapter_for('.md')

0 commit comments

Comments
 (0)