Repository: modin-project/modin

Issue:
read_csv(sep=None) cannot find the separator automatically
### System information
- **OS Platform and Distribution:**  Linux Ubuntu 16.04
- **Modin version** : 0.7.3
- **Python version**: 3.6.7
- **Code we can use to reproduce**:
```
# Create a dummy.csv file with the following content
a,b,c
1,2,3
4,5,6

if __name__ == "__main__":
    import modin.pandas as pd

    df=pd.read_csv("dummy.csv", sep=None)
    print(df.columns)
    print(len(df.columns))

    df2=pd.read_csv("dummy.csv")
    print(df2.columns)
    print(len(df2.columns))
```

### Describe the problem
The code above with sep=None cannot parse the columns. The output is
Index(['a,b,c'], dtype='object')
1
Index(['a', 'b', 'c'], dtype='object')
3

From pandas [documentation](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html):
If sep is None, the C engine cannot automatically detect the separator, but the Python parsing engine can, meaning the latter will be used and automatically detect the separator by Python’s builtin sniffer tool, csv.Sniffer. 




Discussion:

Resolving patch:
diff --git a/modin/backends/pandas/parsers.py b/modin/backends/pandas/parsers.py
--- a/modin/backends/pandas/parsers.py
+++ b/modin/backends/pandas/parsers.py
@@ -11,15 +11,17 @@
 # ANY KIND, either express or implied. See the License for the specific language
 # governing permissions and limitations under the License.
 
+from io import BytesIO
 import numpy as np
 import pandas
 from pandas.core.dtypes.cast import find_common_type
 from pandas.core.dtypes.concat import union_categoricals
 from pandas.io.common import infer_compression
+import warnings
+
 from modin.engines.base.io import FileReader
 from modin.data_management.utils import split_result_of_axis_func_pandas
 from modin.error_message import ErrorMessage
-from io import BytesIO
 
 
 def _split_result_for_readers(axis, num_splits, df):  # pragma: no cover
@@ -82,6 +84,7 @@ def single_worker_read(cls, fname, **kwargs):
 class PandasCSVParser(PandasParser):
     @staticmethod
     def parse(fname, **kwargs):
+        warnings.filterwarnings("ignore")
         num_splits = kwargs.pop("num_splits", None)
         start = kwargs.pop("start", None)
         end = kwargs.pop("end", None)
diff --git a/modin/pandas/io.py b/modin/pandas/io.py
--- a/modin/pandas/io.py
+++ b/modin/pandas/io.py
@@ -107,7 +107,7 @@ def parser_func(
         float_precision=None,
     ):
         _, _, _, kwargs = inspect.getargvalues(inspect.currentframe())
-        if not kwargs.get("sep", sep):
+        if kwargs.get("sep", sep) is False:
             kwargs["sep"] = "\t"
         return _read(**kwargs)
 


Test patch:
diff --git a/modin/pandas/test/test_io.py b/modin/pandas/test/test_io.py
--- a/modin/pandas/test/test_io.py
+++ b/modin/pandas/test/test_io.py
@@ -14,6 +14,7 @@
 import pytest
 import numpy as np
 import pandas
+from pandas.errors import ParserWarning
 from collections import OrderedDict
 from modin.pandas.utils import to_pandas
 from pathlib import Path
@@ -661,6 +662,16 @@ def test_from_csv(make_csv_file):
     df_equals(modin_df, pandas_df)
 
 
+def test_from_csv_sep_none(make_csv_file):
+    make_csv_file()
+
+    with pytest.warns(ParserWarning):
+        pandas_df = pandas.read_csv(TEST_CSV_FILENAME, sep=None)
+    with pytest.warns(ParserWarning):
+        modin_df = pd.read_csv(TEST_CSV_FILENAME, sep=None)
+    df_equals(modin_df, pandas_df)
+
+
 def test_from_csv_gzip(make_csv_file):
     make_csv_file(compression="gzip")
     gzip_path = "{}.gz".format(TEST_CSV_FILENAME)