From ad10965edca8ea26630d92d4035bb6afef0c1e3a Mon Sep 17 00:00:00 2001 From: AbdealiJK Date: Fri, 10 Nov 2017 08:37:18 +0530 Subject: [PATCH 1/2] patquet.py: Add error message for no engine found Give a better error message for engine="auto" case when none of the engines were found installed. --- pandas/io/parquet.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/pandas/io/parquet.py b/pandas/io/parquet.py index 7827c3ae04d4d..4a31b9d1c2c3f 100644 --- a/pandas/io/parquet.py +++ b/pandas/io/parquet.py @@ -25,6 +25,10 @@ def get_engine(engine): except ImportError: pass + raise ImportError("unable to find a usable engine\n" + "tried using: pyarrow, fastparquet\n\n" + + PyArrowImpl.PYARROW_INSTALL_INSTRUCTIONS) + if engine not in ['pyarrow', 'fastparquet']: raise ValueError("engine must be one of 'pyarrow', 'fastparquet'") @@ -35,6 +39,10 @@ def get_engine(engine): class PyArrowImpl(object): + PYARROW_INSTALL_INSTRUCTIONS = ("you can install pyarrow via conda\n" + "conda install pyarrow -c conda-forge\n" + "\nor via pip\n" + "pip install -U pyarrow\n") def __init__(self): # since pandas is a dependency of pyarrow @@ -45,18 +53,11 @@ def __init__(self): import pyarrow.parquet except ImportError: raise ImportError("pyarrow is required for parquet support\n\n" - "you can install via conda\n" - "conda install pyarrow -c conda-forge\n" - "\nor via pip\n" - "pip install -U pyarrow\n") + + PYARROW_INSTALL_INSTRUCTIONS) if LooseVersion(pyarrow.__version__) < LooseVersion('0.4.1'): raise ImportError("pyarrow >= 0.4.1 is required for parquet" - "support\n\n" - "you can install via conda\n" - "conda install pyarrow -c conda-forge\n" - "\nor via pip\n" - "pip install -U pyarrow\n") + "support\n\n" + PYARROW_INSTALL_INSTRUCTIONS) self._pyarrow_lt_050 = (LooseVersion(pyarrow.__version__) < LooseVersion('0.5.0')) From 97b861f18694f8940a0eeb840a6164ac47a9a1cb Mon Sep 17 00:00:00 2001 From: Joris Van den Bossche Date: Sun, 10 Dec 2017 17:47:44 +0100 Subject: [PATCH 2/2] clean-up to prevent merge conflicts with other PR --- pandas/io/parquet.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/pandas/io/parquet.py b/pandas/io/parquet.py index 4a31b9d1c2c3f..3ebdd760aa0a6 100644 --- a/pandas/io/parquet.py +++ b/pandas/io/parquet.py @@ -25,9 +25,10 @@ def get_engine(engine): except ImportError: pass - raise ImportError("unable to find a usable engine\n" - "tried using: pyarrow, fastparquet\n\n" - + PyArrowImpl.PYARROW_INSTALL_INSTRUCTIONS) + raise ImportError("Unable to find a usable engine; " + "tried using: 'pyarrow', 'fastparquet'.\n" + "pyarrow or fastparquet is required for parquet " + "support") if engine not in ['pyarrow', 'fastparquet']: raise ValueError("engine must be one of 'pyarrow', 'fastparquet'") @@ -39,10 +40,6 @@ def get_engine(engine): class PyArrowImpl(object): - PYARROW_INSTALL_INSTRUCTIONS = ("you can install pyarrow via conda\n" - "conda install pyarrow -c conda-forge\n" - "\nor via pip\n" - "pip install -U pyarrow\n") def __init__(self): # since pandas is a dependency of pyarrow @@ -53,11 +50,18 @@ def __init__(self): import pyarrow.parquet except ImportError: raise ImportError("pyarrow is required for parquet support\n\n" - + PYARROW_INSTALL_INSTRUCTIONS) + "you can install via conda\n" + "conda install pyarrow -c conda-forge\n" + "\nor via pip\n" + "pip install -U pyarrow\n") if LooseVersion(pyarrow.__version__) < LooseVersion('0.4.1'): raise ImportError("pyarrow >= 0.4.1 is required for parquet" - "support\n\n" + PYARROW_INSTALL_INSTRUCTIONS) + "support\n\n" + "you can install via conda\n" + "conda install pyarrow -c conda-forge\n" + "\nor via pip\n" + "pip install -U pyarrow\n") self._pyarrow_lt_050 = (LooseVersion(pyarrow.__version__) < LooseVersion('0.5.0'))