internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: modin-project/modin

Issue:
CI failed due to new numpy release - 1.20
### System information
- **OS Platform and Distribution (e.g., Linux Ubuntu 16.04)**:
- **Modin version** (`modin.__version__`): 03ea9b2c3728a83cd9247a89b72677409cdc7dfd
- **Python version**: 3.8.6
- **Code we can use to reproduce**: `python -m pytest --simulate-cloud=normal modin/pandas/test/test_io.py::TestCsv`

<!--
You can obtain the Modin version with

python -c "import modin; print(modin.__version__)"
-->

### Describe the problem
<!-- Describe the problem clearly here. -->

We use `assert_frame_equal` from pandas to check equality of dataframes. It seems that pandas doesn't support changes in numpy classes from 1.20 release.

### Source code / logs
<!-- Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached. Try to provide a reproducible test case that is the bare minimum necessary to generate the problem. -->



Discussion:

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -55,7 +55,7 @@ def is_pure(self):
     url="https://github.com/modin-project/modin",
     long_description=long_description,
     long_description_content_type="text/markdown",
-    install_requires=["pandas==1.1.5", "packaging"],
+    install_requires=["pandas==1.1.5", "packaging", "numpy>=1.16.5,<1.20"],
     extras_require={
         # can be installed by pip install modin[dask]
         "dask": dask_deps,


Test patch:
Repository: modin-project/modin

Issue:
Add benchmark for sort_values function
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. What kind of performance improvements would you like to see with this new API?

Benchmark for `sort_values` is necessary to research different approaches of parallel sort implementation.


Discussion:

Resolving patch:
diff --git a/asv_bench/benchmarks/benchmarks.py b/asv_bench/benchmarks/benchmarks.py
--- a/asv_bench/benchmarks/benchmarks.py
+++ b/asv_bench/benchmarks/benchmarks.py
@@ -21,7 +21,14 @@
 import numpy as np
 import pandas
 
-from .utils import generate_dataframe, RAND_LOW, RAND_HIGH, random_string
+from .utils import (
+    generate_dataframe,
+    RAND_LOW,
+    RAND_HIGH,
+    random_string,
+    random_columns,
+    random_booleans,
+)
 from modin.config import NPartitions
 
 try:
@@ -325,3 +332,26 @@ def time_apply(self, data_size, axis):
 
     def time_mean(self, data_size, axis):
         execute(self.df.mean(axis=axis))
+
+
+class TimeSortValues:
+    param_names = ["data_size", "columns_number", "ascending_list"]
+    params = [
+        UNARY_OP_DATA_SIZE,
+        [1, 2, 10, 100],
+        [False, True],
+    ]
+
+    def setup(self, data_size, columns_number, ascending_list):
+        self.df = generate_dataframe(
+            ASV_USE_IMPL, "int", data_size[1], data_size[0], RAND_LOW, RAND_HIGH
+        )
+        self.columns = random_columns(self.df.columns, columns_number)
+        self.ascending = (
+            random_booleans(columns_number)
+            if ascending_list
+            else bool(random_booleans(1)[0])
+        )
+
+    def time_sort_values(self, data_size, columns_number, ascending_list):
+        execute(self.df.sort_values(self.columns, ascending=self.ascending))
diff --git a/asv_bench/benchmarks/utils.py b/asv_bench/benchmarks/utils.py
--- a/asv_bench/benchmarks/utils.py
+++ b/asv_bench/benchmarks/utils.py
@@ -98,3 +98,11 @@ def generate_dataframe(impl, data_type, ncols, nrows, rand_low, rand_high):
 
 def random_string():
     return str(uuid.uuid1())
+
+
+def random_columns(df_columns, columns_number):
+    return list(random_state.choice(df_columns, size=columns_number))
+
+
+def random_booleans(number):
+    return list(random_state.choice([True, False], size=number))


Test patch:
Repository: modin-project/modin

Issue:
Add missed method level documentation for Modin XGBoost
### Describe the problem
<!-- Describe the problem clearly here. -->
Add missed method level documentation for Modin XGBoost

### Source code / logs
<!-- Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached. Try to provide a reproducible test case that is the bare minimum necessary to generate the problem. -->



Discussion:

Resolving patch:
diff --git a/docs/conf.py b/docs/conf.py
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -30,6 +30,7 @@
 # ones.
 extensions = [
     "sphinx.ext.autodoc",
+    "sphinx.ext.napoleon",
     "sphinx.ext.intersphinx",
     'sphinx.ext.todo',
     'sphinx.ext.mathjax',


Test patch:
Repository: modin-project/modin

Issue:
[ASV] add fillna benchmark



Discussion:

Resolving patch:
diff --git a/asv_bench/benchmarks/benchmarks.py b/asv_bench/benchmarks/benchmarks.py
--- a/asv_bench/benchmarks/benchmarks.py
+++ b/asv_bench/benchmarks/benchmarks.py
@@ -49,6 +49,8 @@
     ASV_USE_IMPL = os.environ.get("MODIN_ASV_USE_IMPL", "modin")
     ASV_DATASET_SIZE = os.environ.get("MODIN_TEST_DATASET_SIZE", "Small")
 
+assert ASV_USE_IMPL in ("modin", "pandas")
+
 BINARY_OP_DATA_SIZE = {
     "Big": [
         ((5000, 5000), (5000, 5000)),
@@ -82,6 +84,11 @@
     "Small": 5,
 }
 
+IMPL = {
+    "modin": pd,
+    "pandas": pandas,
+}
+
 
 def execute(df):
     "Make sure the calculations are done."
@@ -217,12 +224,7 @@ def setup(self, shapes, how, axis):
         )
 
     def time_concat(self, shapes, how, axis):
-        if ASV_USE_IMPL == "modin":
-            execute(pd.concat([self.df1, self.df2], axis=axis, join=how))
-        elif ASV_USE_IMPL == "pandas":
-            execute(pandas.concat([self.df1, self.df2], axis=axis, join=how))
-        else:
-            raise NotImplementedError
+        execute(IMPL[ASV_USE_IMPL].concat([self.df1, self.df2], axis=axis, join=how))
 
 
 class TimeBinaryOp:
@@ -359,3 +361,22 @@ def setup(self, shape, columns_number, ascending_list):
 
     def time_sort_values(self, shape, columns_number, ascending_list):
         execute(self.df.sort_values(self.columns, ascending=self.ascending))
+
+
+class TimeFillna:
+    param_names = ["shape", "limit", "inplace"]
+    params = [UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE], [None, 0.8], [False, True]]
+
+    def setup(self, shape, limit, inplace):
+        pd = IMPL[ASV_USE_IMPL]
+        columns = [f"col{x}" for x in range(shape[1])]
+        self.df = pd.DataFrame(np.nan, index=pd.RangeIndex(shape[0]), columns=columns)
+        self.limit = int(limit * shape[0]) if limit else None
+
+    def time_fillna(self, shape, limit, inplace):
+        kw = {"value": 0.0, "limit": self.limit, "inplace": inplace}
+        if inplace:
+            self.df.fillna(**kw)
+            execute(self.df)
+        else:
+            execute(self.df.fillna(**kw))


Test patch:
Repository: modin-project/modin

Issue:
[ASV] add astype benchmark



Discussion:

Resolving patch:
diff --git a/asv_bench/benchmarks/benchmarks.py b/asv_bench/benchmarks/benchmarks.py
--- a/asv_bench/benchmarks/benchmarks.py
+++ b/asv_bench/benchmarks/benchmarks.py
@@ -92,7 +92,7 @@
 
 def execute(df):
     "Make sure the calculations are done."
-    return df.shape
+    return df.shape, df.dtypes
 
 
 class BaseTimeGroupBy:
@@ -487,3 +487,24 @@ def setup(self, shape, bins):
 
     def time_value_counts(self, shape, bins):
         execute(self.df.value_counts(bins=bins))
+
+
+class TimeAstype:
+    param_names = ["shape", "dtype", "astype_ncolumns"]
+    params = [
+        UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],
+        ["float64", "category"],
+        ["one", "all"],
+    ]
+
+    def setup(self, shape, dtype, astype_ncolumns):
+        self.df = generate_dataframe(ASV_USE_IMPL, "int", *shape, RAND_LOW, RAND_HIGH)
+        if astype_ncolumns == "all":
+            self.astype_arg = dtype
+        elif astype_ncolumns == "one":
+            self.astype_arg = {"col1": dtype}
+        else:
+            raise ValueError("astype_ncolumns: {astype_ncolumns} isn't supported")
+
+    def time_astype(self, shape, dtype, astype_ncolumns):
+        execute(self.df.astype(self.astype_arg))


Test patch:
Repository: modin-project/modin

Issue:
[ASV] add drop benchmark



Discussion:

Resolving patch:
diff --git a/asv_bench/benchmarks/benchmarks.py b/asv_bench/benchmarks/benchmarks.py
--- a/asv_bench/benchmarks/benchmarks.py
+++ b/asv_bench/benchmarks/benchmarks.py
@@ -363,6 +363,27 @@ def time_sort_values(self, shape, columns_number, ascending_list):
         execute(self.df.sort_values(self.columns, ascending=self.ascending))
 
 
+class TimeDrop:
+    param_names = ["shape", "axis", "drop_ncols"]
+    params = [
+        UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],
+        [0, 1],
+        [1, 0.8],
+    ]
+
+    def setup(self, shape, axis, drop_ncols):
+        self.df = generate_dataframe(ASV_USE_IMPL, "int", *shape, RAND_LOW, RAND_HIGH)
+        drop_count = (
+            int(len(self.df.axes[axis]) * drop_ncols)
+            if isinstance(drop_ncols, float)
+            else drop_ncols
+        )
+        self.labels = self.df.axes[axis][:drop_count]
+
+    def time_drop(self, shape, axis, drop_ncols):
+        execute(self.df.drop(self.labels, axis))
+
+
 class TimeFillna:
     param_names = ["shape", "limit", "inplace"]
     params = [UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE], [None, 0.8], [False, True]]


Test patch:
Repository: modin-project/modin

Issue:
[ASV] add head benchmark



Discussion:

Resolving patch:
diff --git a/asv_bench/benchmarks/benchmarks.py b/asv_bench/benchmarks/benchmarks.py
--- a/asv_bench/benchmarks/benchmarks.py
+++ b/asv_bench/benchmarks/benchmarks.py
@@ -384,6 +384,25 @@ def time_drop(self, shape, axis, drop_ncols):
         execute(self.df.drop(self.labels, axis))
 
 
+class TimeHead:
+    param_names = ["shape", "head_count"]
+    params = [
+        UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],
+        [5, 0.8],
+    ]
+
+    def setup(self, shape, head_count):
+        self.df = generate_dataframe(ASV_USE_IMPL, "int", *shape, RAND_LOW, RAND_HIGH)
+        self.head_count = (
+            int(head_count * len(self.df.index))
+            if isinstance(head_count, float)
+            else head_count
+        )
+
+    def time_head(self, shape, head_count):
+        execute(self.df.head(self.head_count))
+
+
 class TimeFillna:
     param_names = ["shape", "limit", "inplace"]
     params = [UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE], [None, 0.8], [False, True]]


Test patch:
Repository: modin-project/modin

Issue:
[ASV] add append benchmark



Discussion:

Resolving patch:
diff --git a/asv_bench/benchmarks/benchmarks.py b/asv_bench/benchmarks/benchmarks.py
--- a/asv_bench/benchmarks/benchmarks.py
+++ b/asv_bench/benchmarks/benchmarks.py
@@ -225,6 +225,27 @@ def time_concat(self, shapes, how, axis):
             raise NotImplementedError
 
 
+class TimeAppend:
+    param_names = ["shapes", "sort"]
+    params = [
+        BINARY_OP_DATA_SIZE[ASV_DATASET_SIZE],
+        [False, True],
+    ]
+
+    def setup(self, shapes, sort):
+        self.df1 = generate_dataframe(
+            ASV_USE_IMPL, "int", *shapes[0], RAND_LOW, RAND_HIGH
+        )
+        self.df2 = generate_dataframe(
+            ASV_USE_IMPL, "int", *shapes[1], RAND_LOW, RAND_HIGH
+        )
+        if sort:
+            self.df1.columns = self.df1.columns[::-1]
+
+    def time_append(self, shapes, sort):
+        execute(self.df1.append(self.df2, sort=sort))
+
+
 class TimeBinaryOp:
     param_names = ["shapes", "binary_op", "axis"]
     params = [


Test patch:
Repository: modin-project/modin

Issue:
[ASV] add loc/iloc benchmark



Discussion:

Resolving patch:
diff --git a/asv_bench/benchmarks/benchmarks.py b/asv_bench/benchmarks/benchmarks.py
--- a/asv_bench/benchmarks/benchmarks.py
+++ b/asv_bench/benchmarks/benchmarks.py
@@ -489,6 +489,65 @@ def time_value_counts(self, shape, bins):
         execute(self.df.value_counts(bins=bins))
 
 
+class TimeIndexing:
+    param_names = ["shape", "indexer_type"]
+    params = [
+        UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],
+        [
+            "scalar",
+            "bool",
+            "slice",
+            "list",
+            "function",
+        ],
+    ]
+
+    def setup(self, shape, indexer_type):
+        self.df = generate_dataframe(ASV_USE_IMPL, "int", *shape, RAND_LOW, RAND_HIGH)
+        if indexer_type == "bool":
+            self.indexer = [False, True] * (shape[0] // 2)
+        elif indexer_type == "scalar":
+            self.indexer = shape[0] // 2
+        elif indexer_type == "slice":
+            self.indexer = slice(0, shape[0], 2)
+        elif indexer_type == "list":
+            self.indexer = [x for x in range(shape[0])]
+        elif indexer_type == "function":
+            self.indexer = lambda df: df.index[::-2]
+
+    def time_iloc(self, shape, indexer_type):
+        execute(self.df.iloc[self.indexer])
+
+    def time_loc(self, shape, indexer_type):
+        execute(self.df.loc[self.indexer])
+
+
+class TimeMultiIndexing:
+    param_names = ["shape"]
+    params = [UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE]]
+
+    def setup(self, shape):
+        df = generate_dataframe(ASV_USE_IMPL, "int", *shape, RAND_LOW, RAND_HIGH)
+
+        index = pd.MultiIndex.from_product([df.index[: shape[0] // 2], ["bar", "foo"]])
+        columns = pd.MultiIndex.from_product(
+            [df.columns[: shape[1] // 2], ["buz", "fuz"]]
+        )
+
+        df.index = index
+        df.columns = columns
+
+        self.df = df.sort_index(axis=1)
+
+    def time_multiindex_loc(self, shape):
+        execute(
+            self.df.loc[
+                self.df.index[2] : self.df.index[-2],
+                self.df.columns[2] : self.df.columns[-2],
+            ]
+        )
+
+
 class TimeAstype:
     param_names = ["shape", "dtype", "astype_ncolumns"]
     params = [
diff --git a/modin/pandas/indexing.py b/modin/pandas/indexing.py
--- a/modin/pandas/indexing.py
+++ b/modin/pandas/indexing.py
@@ -545,7 +545,7 @@ def __getitem__(self, key):
                 )
             ):
                 result.index = result.index.droplevel(list(range(len(col_loc))))
-            elif all(
+            elif not isinstance(row_loc, slice) and all(
                 not isinstance(row_loc[i], slice)
                 and row_loc[i] in result.index.levels[i]
                 for i in range(len(row_loc))


Test patch:
Repository: modin-project/modin

Issue:
[ASV] Add 'value_counts' benchmark



Discussion:

Resolving patch:
diff --git a/asv_bench/benchmarks/benchmarks.py b/asv_bench/benchmarks/benchmarks.py
--- a/asv_bench/benchmarks/benchmarks.py
+++ b/asv_bench/benchmarks/benchmarks.py
@@ -422,3 +422,49 @@ def time_fillna(self, shape, limit, inplace):
             execute(self.df)
         else:
             execute(self.df.fillna(**kw))
+
+
+class BaseTimeValueCounts:
+    subset_params = {
+        "all": lambda shape: shape[1],
+        "half": lambda shape: shape[1] // 2,
+    }
+
+    def setup(self, shape, subset="all"):
+        try:
+            subset = self.subset_params[subset]
+        except KeyError:
+            raise KeyError(
+                f"Invalid value for 'subset={subset}'. Allowed: {list(self.subset_params.keys())}"
+            )
+        ncols = subset(shape)
+        self.df, _ = generate_dataframe(
+            ASV_USE_IMPL,
+            "int",
+            *shape,
+            RAND_LOW,
+            RAND_HIGH,
+            groupby_ncols=ncols,
+            count_groups=GROUPBY_NGROUPS[ASV_DATASET_SIZE],
+        )
+        self.subset = self.df.columns[:ncols].tolist()
+
+
+class TimeValueCountsFrame(BaseTimeValueCounts):
+    param_names = ["shape", "subset"]
+    params = [UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE], ["all", "half"]]
+
+    def time_value_counts(self, *args, **kwargs):
+        execute(self.df.value_counts(subset=self.subset))
+
+
+class TimeValueCountsSeries(BaseTimeValueCounts):
+    param_names = ["shape", "bins"]
+    params = [UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE], [None, 3]]
+
+    def setup(self, shape, bins):
+        super().setup(shape=shape)
+        self.df = self.df.iloc[:, 0]
+
+    def time_value_counts(self, shape, bins):
+        execute(self.df.value_counts(bins=bins))


Test patch:
Repository: modin-project/modin

Issue:
[ASV] add describe benchmark



Discussion:

Resolving patch:
diff --git a/asv_bench/benchmarks/benchmarks.py b/asv_bench/benchmarks/benchmarks.py
--- a/asv_bench/benchmarks/benchmarks.py
+++ b/asv_bench/benchmarks/benchmarks.py
@@ -567,3 +567,16 @@ def setup(self, shape, dtype, astype_ncolumns):
 
     def time_astype(self, shape, dtype, astype_ncolumns):
         execute(self.df.astype(self.astype_arg))
+
+
+class TimeDescribe:
+    param_names = ["shape"]
+    params = [
+        UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],
+    ]
+
+    def setup(self, shape):
+        self.df = generate_dataframe(ASV_USE_IMPL, "int", *shape, RAND_LOW, RAND_HIGH)
+
+    def time_describe(self, shape):
+        execute(self.df.describe())


Test patch:
Repository: modin-project/modin

Issue:
[ASV] add index, columns, shape benchmarks



Discussion:

Resolving patch:
diff --git a/asv_bench/benchmarks/benchmarks.py b/asv_bench/benchmarks/benchmarks.py
--- a/asv_bench/benchmarks/benchmarks.py
+++ b/asv_bench/benchmarks/benchmarks.py
@@ -580,3 +580,22 @@ def setup(self, shape):
 
     def time_describe(self, shape):
         execute(self.df.describe())
+
+
+class TimeProperties:
+    param_names = ["shape"]
+    params = [
+        UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],
+    ]
+
+    def setup(self, shape):
+        self.df = generate_dataframe(ASV_USE_IMPL, "int", *shape, RAND_LOW, RAND_HIGH)
+
+    def time_shape(self, shape):
+        return self.df.shape
+
+    def time_columns(self, shape):
+        return self.df.columns
+
+    def time_index(self, shape):
+        return self.df.index


Test patch:
Repository: modin-project/modin

Issue:
[ASV] add reset_index benchmark



Discussion:

Resolving patch:
diff --git a/asv_bench/benchmarks/benchmarks.py b/asv_bench/benchmarks/benchmarks.py
--- a/asv_bench/benchmarks/benchmarks.py
+++ b/asv_bench/benchmarks/benchmarks.py
@@ -506,6 +506,24 @@ def time_multiindex_loc(self, shape):
         )
 
 
+class TimeResetIndex:
+    param_names = ["shape", "drop", "level"]
+    params = [UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE], [False, True], [None, "level_1"]]
+
+    def setup(self, shape, drop, level):
+        self.df = generate_dataframe(ASV_USE_IMPL, "int", *shape, RAND_LOW, RAND_HIGH)
+
+        if level:
+            index = pd.MultiIndex.from_product(
+                [self.df.index[: shape[0] // 2], ["bar", "foo"]],
+                names=["level_1", "level_2"],
+            )
+            self.df.index = index
+
+    def time_reset_index(self, shape, drop, level):
+        execute(self.df.reset_index(drop=drop, level=level))
+
+
 class TimeAstype:
     param_names = ["shape", "dtype", "astype_ncolumns"]
     params = [


Test patch:
Repository: modin-project/modin

Issue:
Pin Ray < 1.2.0
### Describe the problem
<!-- Describe the problem clearly here. -->

Bugs are observed using Ray==1.2.0. Details are in #2761.



Discussion:

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -38,7 +38,7 @@ def is_pure(self):
 
 
 dask_deps = ["dask>=2.12.0,<=2.19.0", "distributed>=2.12.0,<=2.19.0"]
-ray_deps = ["ray>=1.0.0", "pyarrow==1.0"]
+ray_deps = ["ray>=1.0.0,<1.2.0", "pyarrow==1.0"]
 remote_deps = ["rpyc==4.1.5", "cloudpickle==1.4.1", "boto3==1.4.8"]
 
 all_deps = dask_deps + ray_deps + remote_deps


Test patch:
Repository: modin-project/modin

Issue:
[ASV] add read_csv benchmark with dtype/names/parse_dates parameters



Discussion:

Resolving patch:
diff --git a/asv_bench/benchmarks/io/csv.py b/asv_bench/benchmarks/io/csv.py
--- a/asv_bench/benchmarks/io/csv.py
+++ b/asv_bench/benchmarks/io/csv.py
@@ -65,3 +65,70 @@ def time_skiprows(self, test_filenames, shape, skiprows):
                 test_filenames[self.shape_id], skiprows=skiprows
             )
         )
+
+
+class TimeReadCsvNamesDtype:
+    _dtypes_params = ["Int64", "Int64_Timestamp"]
+    _timestamp_columns = ["col1", "col2"]
+
+    param_names = ["shape", "names", "dtype"]
+    params = [
+        UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],
+        ["array-like"],
+        _dtypes_params,
+    ]
+
+    def _get_file_id(self, shape, dtype):
+        return get_shape_id(shape) + dtype
+
+    def _add_timestamp_columns(self, df):
+        df = df.copy()
+        date_column = IMPL["pandas"].date_range(
+            "2000",
+            periods=df.shape[0],
+            freq="ms",
+        )
+        for col in self._timestamp_columns:
+            df[col] = date_column
+        return df
+
+    def setup_cache(self, test_filename="io_test_file_csv_names_dtype"):
+        # filenames with a metadata of saved dataframes
+        cache = {}
+        for shape in UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE]:
+            for dtype in self._dtypes_params:
+                df = generate_dataframe("pandas", "int", *shape, RAND_LOW, RAND_HIGH)
+                if dtype == "Int64_Timestamp":
+                    df = self._add_timestamp_columns(df)
+
+                file_id = self._get_file_id(shape, dtype)
+                cache[file_id] = (
+                    f"{test_filename}_{file_id}.csv",
+                    df.columns.to_list(),
+                    df.dtypes.to_dict(),
+                )
+                df.to_csv(cache[file_id][0], index=False)
+        return cache
+
+    def setup(self, cache, shape, names, dtype):
+        file_id = self._get_file_id(shape, dtype)
+        self.filename, self.names, self.dtype = cache[file_id]
+
+        self.parse_dates = None
+        if dtype == "Int64_Timestamp":
+            # cached version of dtype should not change
+            self.dtype = self.dtype.copy()
+            for col in self._timestamp_columns:
+                del self.dtype[col]
+            self.parse_dates = self._timestamp_columns
+
+    def time_read_csv_names_dtype(self, cache, shape, names, dtype):
+        execute(
+            IMPL[ASV_USE_IMPL].read_csv(
+                self.filename,
+                names=self.names,
+                header=0,
+                dtype=self.dtype,
+                parse_dates=self.parse_dates,
+            )
+        )


Test patch:
Repository: modin-project/modin

Issue:
Update pandas to 1.2.3



Discussion:

Resolving patch:
diff --git a/modin/pandas/__init__.py b/modin/pandas/__init__.py
--- a/modin/pandas/__init__.py
+++ b/modin/pandas/__init__.py
@@ -13,7 +13,7 @@
 
 import pandas
 
-__pandas_version__ = "1.2.2"
+__pandas_version__ = "1.2.3"
 
 if pandas.__version__ != __pandas_version__:
     import warnings
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -55,7 +55,7 @@ def is_pure(self):
     url="https://github.com/modin-project/modin",
     long_description=long_description,
     long_description_content_type="text/markdown",
-    install_requires=["pandas==1.2.2", "packaging", "numpy>=1.16.5,<1.20"],
+    install_requires=["pandas==1.2.3", "packaging", "numpy>=1.16.5,<1.20"],
     extras_require={
         # can be installed by pip install modin[dask]
         "dask": dask_deps,


Test patch: