We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
ASV: benchmark timed out (timeout 60.0s) for `TimeLevelAlign`, `TimeStack`, `TimeUnstack`
Due to this error, some cases are not displayed on ASV charts.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `asv_bench/benchmarks/utils/data_shapes.py`
Content:
```
1 # Licensed to Modin Development Team under one or more contributor license agreements.
2 # See the NOTICE file distributed with this work for additional information regarding
3 # copyright ownership.  The Modin Development Team licenses this file to you under the
4 # Apache License, Version 2.0 (the "License"); you may not use this file except in
5 # compliance with the License.  You may obtain a copy of the License at
6 #
7 #     http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software distributed under
10 # the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11 # ANY KIND, either express or implied. See the License for the specific language
12 # governing permissions and limitations under the License.
13 
14 """Define data shapes."""
15 
16 import os
17 import json
18 
19 from .compatibility import ASV_USE_STORAGE_FORMAT, ASV_DATASET_SIZE
20 
21 RAND_LOW = 0
22 RAND_HIGH = 1_000_000_000 if ASV_USE_STORAGE_FORMAT == "hdk" else 100
23 
24 BINARY_OP_DATA_SIZE = {
25     "big": [
26         [[5000, 5000], [5000, 5000]],
27         # the case extremely inefficient
28         # [[20, 500_000], [10, 1_000_000]],
29         [[500_000, 20], [1_000_000, 10]],
30     ],
31     "small": [[[250, 250], [250, 250]], [[10_000, 20], [25_000, 10]]],
32 }
33 UNARY_OP_DATA_SIZE = {
34     "big": [
35         [5000, 5000],
36         # the case extremely inefficient
37         # [10, 1_000_000],
38         [1_000_000, 10],
39     ],
40     "small": [[250, 250], [10_000, 10]],
41 }
42 SERIES_DATA_SIZE = {
43     "big": [[100_000, 1]],
44     "small": [[10_000, 1]],
45 }
46 BINARY_OP_SERIES_DATA_SIZE = {
47     "big": [
48         [[500_000, 1], [1_000_000, 1]],
49         [[500_000, 1], [500_000, 1]],
50     ],
51     "small": [[[5_000, 1], [10_000, 1]]],
52 }
53 
54 
55 HDK_BINARY_OP_DATA_SIZE = {
56     "big": [[[500_000, 20], [1_000_000, 10]]],
57     "small": [[[10_000, 20], [25_000, 10]]],
58 }
59 HDK_UNARY_OP_DATA_SIZE = {
60     "big": [[1_000_000, 10]],
61     "small": [[10_000, 10]],
62 }
63 HDK_SERIES_DATA_SIZE = {
64     "big": [[10_000_000, 1]],
65     "small": [[100_000, 1]],
66 }
67 
68 DEFAULT_GROUPBY_NGROUPS = {
69     "big": [100, "huge_amount_groups"],
70     "small": [5],
71 }
72 GROUPBY_NGROUPS = DEFAULT_GROUPBY_NGROUPS[ASV_DATASET_SIZE]
73 
74 _DEFAULT_CONFIG_T = [
75     (
76         UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],
77         [
78             # Pandas storage format benchmarks
79             "TimeGroupByMultiColumn",
80             "TimeGroupByDefaultAggregations",
81             "TimeGroupByDictionaryAggregation",
82             "TimeSetItem",
83             "TimeInsert",
84             "TimeArithmetic",
85             "TimeSortValues",
86             "TimeDrop",
87             "TimeHead",
88             "TimeTail",
89             "TimeExplode",
90             "TimeFillna",
91             "TimeFillnaDataFrame",
92             "TimeValueCountsFrame",
93             "TimeValueCountsSeries",
94             "TimeIndexing",
95             "TimeMultiIndexing",
96             "TimeResetIndex",
97             "TimeAstype",
98             "TimeDescribe",
99             "TimeProperties",
100             "TimeReindex",
101             "TimeReindexMethod",
102             "TimeFillnaMethodDataframe",
103             "TimeDropDuplicatesDataframe",
104             "TimeStack",
105             "TimeUnstack",
106             "TimeRepr",
107             "TimeMaskBool",
108             "TimeIsnull",
109             "TimeDropna",
110             "TimeEquals",
111             # IO benchmarks
112             "TimeReadCsvSkiprows",
113             "TimeReadCsvTrueFalseValues",
114             "TimeReadCsvNamesDtype",
115             "TimeReadParquet",
116             # Scalability benchmarks
117             "TimeFromPandas",
118             "TimeToPandas",
119         ],
120     ),
121     (
122         BINARY_OP_DATA_SIZE[ASV_DATASET_SIZE],
123         [
124             # Pandas storage format benchmarks
125             "TimeJoin",
126             "TimeMerge",
127             "TimeMergeDefault",
128             "TimeConcat",
129             "TimeAppend",
130             "TimeBinaryOp",
131             "TimeLevelAlign",
132         ],
133     ),
134     (
135         SERIES_DATA_SIZE[ASV_DATASET_SIZE],
136         [
137             # Pandas storage format benchmarks
138             "TimeFillnaSeries",
139             "TimeGroups",
140             "TimeIndexingNumericSeries",
141             "TimeFillnaMethodSeries",
142             "TimeDatetimeAccessor",
143             "TimeSetCategories",
144             "TimeRemoveCategories",
145             "TimeDropDuplicatesSeries",
146         ],
147     ),
148     (
149         BINARY_OP_SERIES_DATA_SIZE[ASV_DATASET_SIZE],
150         [
151             # Pandas storage format benchmarks
152             "TimeBinaryOpSeries",
153         ],
154     ),
155 ]
156 
157 _DEFAULT_HDK_CONFIG_T = [
158     (
159         HDK_UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],
160         [
161             "hdk.TimeJoin",
162             "hdk.TimeBinaryOpDataFrame",
163             "hdk.TimeArithmetic",
164             "hdk.TimeSortValues",
165             "hdk.TimeDrop",
166             "hdk.TimeHead",
167             "hdk.TimeFillna",
168             "hdk.TimeIndexing",
169             "hdk.TimeResetIndex",
170             "hdk.TimeAstype",
171             "hdk.TimeDescribe",
172             "hdk.TimeProperties",
173             "hdk.TimeGroupByDefaultAggregations",
174             "hdk.TimeGroupByMultiColumn",
175             "hdk.TimeValueCountsDataFrame",
176             "hdk.TimeReadCsvNames",
177         ],
178     ),
179     (
180         HDK_BINARY_OP_DATA_SIZE[ASV_DATASET_SIZE],
181         ["hdk.TimeMerge", "hdk.TimeAppend"],
182     ),
183     (
184         HDK_SERIES_DATA_SIZE[ASV_DATASET_SIZE],
185         ["hdk.TimeBinaryOpSeries", "hdk.TimeValueCountsSeries"],
186     ),
187 ]
188 DEFAULT_CONFIG = {}
189 DEFAULT_CONFIG["MergeCategoricals"] = (
190     [[10_000, 2]] if ASV_DATASET_SIZE == "big" else [[1_000, 2]]
191 )
192 DEFAULT_CONFIG["TimeJoinStringIndex"] = (
193     [[100_000, 64]] if ASV_DATASET_SIZE == "big" else [[1_000, 4]]
194 )
195 DEFAULT_CONFIG["TimeReplace"] = (
196     [[10_000, 2]] if ASV_DATASET_SIZE == "big" else [[1_000, 2]]
197 )
198 for config in (_DEFAULT_CONFIG_T, _DEFAULT_HDK_CONFIG_T):
199     for _shape, _names in config:
200         DEFAULT_CONFIG.update({_name: _shape for _name in _names})
201 
202 # Correct forms in the case when the operation ended with a timeout error
203 if ASV_DATASET_SIZE == "big":
204     DEFAULT_CONFIG["TimeMergeDefault"] = [
205         [[1000, 1000], [1000, 1000]],
206         [[500_000, 20], [1_000_000, 10]],
207     ]
208 
209 CONFIG_FROM_FILE = None
210 
211 
212 def get_benchmark_shapes(bench_id: str):
213     """
214     Get custom benchmark shapes from a json file stored in MODIN_ASV_DATASIZE_CONFIG.
215 
216     If `bench_id` benchmark is not found in the file, then the default value will
217     be used.
218 
219     Parameters
220     ----------
221     bench_id : str
222         Unique benchmark identifier that is used to get shapes.
223 
224     Returns
225     -------
226     list
227         Benchmark shapes.
228     """
229     global CONFIG_FROM_FILE
230     if not CONFIG_FROM_FILE:
231         try:
232             from modin.config import AsvDataSizeConfig
233 
234             filename = AsvDataSizeConfig.get()
235         except ImportError:
236             filename = os.environ.get("MODIN_ASV_DATASIZE_CONFIG", None)
237         if filename:
238             # should be json
239             with open(filename) as _f:
240                 CONFIG_FROM_FILE = json.load(_f)
241 
242     if CONFIG_FROM_FILE and bench_id in CONFIG_FROM_FILE:
243         # example: "hdk.TimeReadCsvNames": [[5555, 55], [3333, 33]]
244         return CONFIG_FROM_FILE[bench_id]
245     return DEFAULT_CONFIG[bench_id]
246
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/asv_bench/benchmarks/utils/data_shapes.py b/asv_bench/benchmarks/utils/data_shapes.py
--- a/asv_bench/benchmarks/utils/data_shapes.py
+++ b/asv_bench/benchmarks/utils/data_shapes.py
@@ -199,12 +199,21 @@
     for _shape, _names in config:
         DEFAULT_CONFIG.update({_name: _shape for _name in _names})
 
-# Correct forms in the case when the operation ended with a timeout error
+# Correct shapes in the case when the operation ended with a timeout error
 if ASV_DATASET_SIZE == "big":
     DEFAULT_CONFIG["TimeMergeDefault"] = [
         [[1000, 1000], [1000, 1000]],
         [[500_000, 20], [1_000_000, 10]],
     ]
+    DEFAULT_CONFIG["TimeLevelAlign"] = [
+        [[2500, 2500], [2500, 2500]],
+        [[250_000, 20], [500_000, 10]],
+    ]
+    DEFAULT_CONFIG["TimeStack"] = [
+        [1500, 1500],
+        [100_000, 10],
+    ]
+    DEFAULT_CONFIG["TimeUnstack"] = DEFAULT_CONFIG["TimeStack"]
 
 CONFIG_FROM_FILE = None

{"golden_diff": "diff --git a/asv_bench/benchmarks/utils/data_shapes.py b/asv_bench/benchmarks/utils/data_shapes.py\n--- a/asv_bench/benchmarks/utils/data_shapes.py\n+++ b/asv_bench/benchmarks/utils/data_shapes.py\n@@ -199,12 +199,21 @@\n     for _shape, _names in config:\n         DEFAULT_CONFIG.update({_name: _shape for _name in _names})\n \n-# Correct forms in the case when the operation ended with a timeout error\n+# Correct shapes in the case when the operation ended with a timeout error\n if ASV_DATASET_SIZE == \"big\":\n     DEFAULT_CONFIG[\"TimeMergeDefault\"] = [\n         [[1000, 1000], [1000, 1000]],\n         [[500_000, 20], [1_000_000, 10]],\n     ]\n+    DEFAULT_CONFIG[\"TimeLevelAlign\"] = [\n+        [[2500, 2500], [2500, 2500]],\n+        [[250_000, 20], [500_000, 10]],\n+    ]\n+    DEFAULT_CONFIG[\"TimeStack\"] = [\n+        [1500, 1500],\n+        [100_000, 10],\n+    ]\n+    DEFAULT_CONFIG[\"TimeUnstack\"] = DEFAULT_CONFIG[\"TimeStack\"]\n \n CONFIG_FROM_FILE = None\n", "issue": "ASV: benchmark timed out (timeout 60.0s) for `TimeLevelAlign`, `TimeStack`, `TimeUnstack`\nDue to this error, some cases are not displayed on ASV charts.\n", "before_files": [{"content": "# Licensed to Modin Development Team under one or more contributor license agreements.\n# See the NOTICE file distributed with this work for additional information regarding\n# copyright ownership.  The Modin Development Team licenses this file to you under the\n# Apache License, Version 2.0 (the \"License\"); you may not use this file except in\n# compliance with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software distributed under\n# the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n# ANY KIND, either express or implied. See the License for the specific language\n# governing permissions and limitations under the License.\n\n\"\"\"Define data shapes.\"\"\"\n\nimport os\nimport json\n\nfrom .compatibility import ASV_USE_STORAGE_FORMAT, ASV_DATASET_SIZE\n\nRAND_LOW = 0\nRAND_HIGH = 1_000_000_000 if ASV_USE_STORAGE_FORMAT == \"hdk\" else 100\n\nBINARY_OP_DATA_SIZE = {\n    \"big\": [\n        [[5000, 5000], [5000, 5000]],\n        # the case extremely inefficient\n        # [[20, 500_000], [10, 1_000_000]],\n        [[500_000, 20], [1_000_000, 10]],\n    ],\n    \"small\": [[[250, 250], [250, 250]], [[10_000, 20], [25_000, 10]]],\n}\nUNARY_OP_DATA_SIZE = {\n    \"big\": [\n        [5000, 5000],\n        # the case extremely inefficient\n        # [10, 1_000_000],\n        [1_000_000, 10],\n    ],\n    \"small\": [[250, 250], [10_000, 10]],\n}\nSERIES_DATA_SIZE = {\n    \"big\": [[100_000, 1]],\n    \"small\": [[10_000, 1]],\n}\nBINARY_OP_SERIES_DATA_SIZE = {\n    \"big\": [\n        [[500_000, 1], [1_000_000, 1]],\n        [[500_000, 1], [500_000, 1]],\n    ],\n    \"small\": [[[5_000, 1], [10_000, 1]]],\n}\n\n\nHDK_BINARY_OP_DATA_SIZE = {\n    \"big\": [[[500_000, 20], [1_000_000, 10]]],\n    \"small\": [[[10_000, 20], [25_000, 10]]],\n}\nHDK_UNARY_OP_DATA_SIZE = {\n    \"big\": [[1_000_000, 10]],\n    \"small\": [[10_000, 10]],\n}\nHDK_SERIES_DATA_SIZE = {\n    \"big\": [[10_000_000, 1]],\n    \"small\": [[100_000, 1]],\n}\n\nDEFAULT_GROUPBY_NGROUPS = {\n    \"big\": [100, \"huge_amount_groups\"],\n    \"small\": [5],\n}\nGROUPBY_NGROUPS = DEFAULT_GROUPBY_NGROUPS[ASV_DATASET_SIZE]\n\n_DEFAULT_CONFIG_T = [\n    (\n        UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],\n        [\n            # Pandas storage format benchmarks\n            \"TimeGroupByMultiColumn\",\n            \"TimeGroupByDefaultAggregations\",\n            \"TimeGroupByDictionaryAggregation\",\n            \"TimeSetItem\",\n            \"TimeInsert\",\n            \"TimeArithmetic\",\n            \"TimeSortValues\",\n            \"TimeDrop\",\n            \"TimeHead\",\n            \"TimeTail\",\n            \"TimeExplode\",\n            \"TimeFillna\",\n            \"TimeFillnaDataFrame\",\n            \"TimeValueCountsFrame\",\n            \"TimeValueCountsSeries\",\n            \"TimeIndexing\",\n            \"TimeMultiIndexing\",\n            \"TimeResetIndex\",\n            \"TimeAstype\",\n            \"TimeDescribe\",\n            \"TimeProperties\",\n            \"TimeReindex\",\n            \"TimeReindexMethod\",\n            \"TimeFillnaMethodDataframe\",\n            \"TimeDropDuplicatesDataframe\",\n            \"TimeStack\",\n            \"TimeUnstack\",\n            \"TimeRepr\",\n            \"TimeMaskBool\",\n            \"TimeIsnull\",\n            \"TimeDropna\",\n            \"TimeEquals\",\n            # IO benchmarks\n            \"TimeReadCsvSkiprows\",\n            \"TimeReadCsvTrueFalseValues\",\n            \"TimeReadCsvNamesDtype\",\n            \"TimeReadParquet\",\n            # Scalability benchmarks\n            \"TimeFromPandas\",\n            \"TimeToPandas\",\n        ],\n    ),\n    (\n        BINARY_OP_DATA_SIZE[ASV_DATASET_SIZE],\n        [\n            # Pandas storage format benchmarks\n            \"TimeJoin\",\n            \"TimeMerge\",\n            \"TimeMergeDefault\",\n            \"TimeConcat\",\n            \"TimeAppend\",\n            \"TimeBinaryOp\",\n            \"TimeLevelAlign\",\n        ],\n    ),\n    (\n        SERIES_DATA_SIZE[ASV_DATASET_SIZE],\n        [\n            # Pandas storage format benchmarks\n            \"TimeFillnaSeries\",\n            \"TimeGroups\",\n            \"TimeIndexingNumericSeries\",\n            \"TimeFillnaMethodSeries\",\n            \"TimeDatetimeAccessor\",\n            \"TimeSetCategories\",\n            \"TimeRemoveCategories\",\n            \"TimeDropDuplicatesSeries\",\n        ],\n    ),\n    (\n        BINARY_OP_SERIES_DATA_SIZE[ASV_DATASET_SIZE],\n        [\n            # Pandas storage format benchmarks\n            \"TimeBinaryOpSeries\",\n        ],\n    ),\n]\n\n_DEFAULT_HDK_CONFIG_T = [\n    (\n        HDK_UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],\n        [\n            \"hdk.TimeJoin\",\n            \"hdk.TimeBinaryOpDataFrame\",\n            \"hdk.TimeArithmetic\",\n            \"hdk.TimeSortValues\",\n            \"hdk.TimeDrop\",\n            \"hdk.TimeHead\",\n            \"hdk.TimeFillna\",\n            \"hdk.TimeIndexing\",\n            \"hdk.TimeResetIndex\",\n            \"hdk.TimeAstype\",\n            \"hdk.TimeDescribe\",\n            \"hdk.TimeProperties\",\n            \"hdk.TimeGroupByDefaultAggregations\",\n            \"hdk.TimeGroupByMultiColumn\",\n            \"hdk.TimeValueCountsDataFrame\",\n            \"hdk.TimeReadCsvNames\",\n        ],\n    ),\n    (\n        HDK_BINARY_OP_DATA_SIZE[ASV_DATASET_SIZE],\n        [\"hdk.TimeMerge\", \"hdk.TimeAppend\"],\n    ),\n    (\n        HDK_SERIES_DATA_SIZE[ASV_DATASET_SIZE],\n        [\"hdk.TimeBinaryOpSeries\", \"hdk.TimeValueCountsSeries\"],\n    ),\n]\nDEFAULT_CONFIG = {}\nDEFAULT_CONFIG[\"MergeCategoricals\"] = (\n    [[10_000, 2]] if ASV_DATASET_SIZE == \"big\" else [[1_000, 2]]\n)\nDEFAULT_CONFIG[\"TimeJoinStringIndex\"] = (\n    [[100_000, 64]] if ASV_DATASET_SIZE == \"big\" else [[1_000, 4]]\n)\nDEFAULT_CONFIG[\"TimeReplace\"] = (\n    [[10_000, 2]] if ASV_DATASET_SIZE == \"big\" else [[1_000, 2]]\n)\nfor config in (_DEFAULT_CONFIG_T, _DEFAULT_HDK_CONFIG_T):\n    for _shape, _names in config:\n        DEFAULT_CONFIG.update({_name: _shape for _name in _names})\n\n# Correct forms in the case when the operation ended with a timeout error\nif ASV_DATASET_SIZE == \"big\":\n    DEFAULT_CONFIG[\"TimeMergeDefault\"] = [\n        [[1000, 1000], [1000, 1000]],\n        [[500_000, 20], [1_000_000, 10]],\n    ]\n\nCONFIG_FROM_FILE = None\n\n\ndef get_benchmark_shapes(bench_id: str):\n    \"\"\"\n    Get custom benchmark shapes from a json file stored in MODIN_ASV_DATASIZE_CONFIG.\n\n    If `bench_id` benchmark is not found in the file, then the default value will\n    be used.\n\n    Parameters\n    ----------\n    bench_id : str\n        Unique benchmark identifier that is used to get shapes.\n\n    Returns\n    -------\n    list\n        Benchmark shapes.\n    \"\"\"\n    global CONFIG_FROM_FILE\n    if not CONFIG_FROM_FILE:\n        try:\n            from modin.config import AsvDataSizeConfig\n\n            filename = AsvDataSizeConfig.get()\n        except ImportError:\n            filename = os.environ.get(\"MODIN_ASV_DATASIZE_CONFIG\", None)\n        if filename:\n            # should be json\n            with open(filename) as _f:\n                CONFIG_FROM_FILE = json.load(_f)\n\n    if CONFIG_FROM_FILE and bench_id in CONFIG_FROM_FILE:\n        # example: \"hdk.TimeReadCsvNames\": [[5555, 55], [3333, 33]]\n        return CONFIG_FROM_FILE[bench_id]\n    return DEFAULT_CONFIG[bench_id]\n", "path": "asv_bench/benchmarks/utils/data_shapes.py"}], "after_files": [{"content": "# Licensed to Modin Development Team under one or more contributor license agreements.\n# See the NOTICE file distributed with this work for additional information regarding\n# copyright ownership.  The Modin Development Team licenses this file to you under the\n# Apache License, Version 2.0 (the \"License\"); you may not use this file except in\n# compliance with the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software distributed under\n# the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n# ANY KIND, either express or implied. See the License for the specific language\n# governing permissions and limitations under the License.\n\n\"\"\"Define data shapes.\"\"\"\n\nimport os\nimport json\n\nfrom .compatibility import ASV_USE_STORAGE_FORMAT, ASV_DATASET_SIZE\n\nRAND_LOW = 0\nRAND_HIGH = 1_000_000_000 if ASV_USE_STORAGE_FORMAT == \"hdk\" else 100\n\nBINARY_OP_DATA_SIZE = {\n    \"big\": [\n        [[5000, 5000], [5000, 5000]],\n        # the case extremely inefficient\n        # [[20, 500_000], [10, 1_000_000]],\n        [[500_000, 20], [1_000_000, 10]],\n    ],\n    \"small\": [[[250, 250], [250, 250]], [[10_000, 20], [25_000, 10]]],\n}\nUNARY_OP_DATA_SIZE = {\n    \"big\": [\n        [5000, 5000],\n        # the case extremely inefficient\n        # [10, 1_000_000],\n        [1_000_000, 10],\n    ],\n    \"small\": [[250, 250], [10_000, 10]],\n}\nSERIES_DATA_SIZE = {\n    \"big\": [[100_000, 1]],\n    \"small\": [[10_000, 1]],\n}\nBINARY_OP_SERIES_DATA_SIZE = {\n    \"big\": [\n        [[500_000, 1], [1_000_000, 1]],\n        [[500_000, 1], [500_000, 1]],\n    ],\n    \"small\": [[[5_000, 1], [10_000, 1]]],\n}\n\n\nHDK_BINARY_OP_DATA_SIZE = {\n    \"big\": [[[500_000, 20], [1_000_000, 10]]],\n    \"small\": [[[10_000, 20], [25_000, 10]]],\n}\nHDK_UNARY_OP_DATA_SIZE = {\n    \"big\": [[1_000_000, 10]],\n    \"small\": [[10_000, 10]],\n}\nHDK_SERIES_DATA_SIZE = {\n    \"big\": [[10_000_000, 1]],\n    \"small\": [[100_000, 1]],\n}\n\nDEFAULT_GROUPBY_NGROUPS = {\n    \"big\": [100, \"huge_amount_groups\"],\n    \"small\": [5],\n}\nGROUPBY_NGROUPS = DEFAULT_GROUPBY_NGROUPS[ASV_DATASET_SIZE]\n\n_DEFAULT_CONFIG_T = [\n    (\n        UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],\n        [\n            # Pandas storage format benchmarks\n            \"TimeGroupByMultiColumn\",\n            \"TimeGroupByDefaultAggregations\",\n            \"TimeGroupByDictionaryAggregation\",\n            \"TimeSetItem\",\n            \"TimeInsert\",\n            \"TimeArithmetic\",\n            \"TimeSortValues\",\n            \"TimeDrop\",\n            \"TimeHead\",\n            \"TimeTail\",\n            \"TimeExplode\",\n            \"TimeFillna\",\n            \"TimeFillnaDataFrame\",\n            \"TimeValueCountsFrame\",\n            \"TimeValueCountsSeries\",\n            \"TimeIndexing\",\n            \"TimeMultiIndexing\",\n            \"TimeResetIndex\",\n            \"TimeAstype\",\n            \"TimeDescribe\",\n            \"TimeProperties\",\n            \"TimeReindex\",\n            \"TimeReindexMethod\",\n            \"TimeFillnaMethodDataframe\",\n            \"TimeDropDuplicatesDataframe\",\n            \"TimeStack\",\n            \"TimeUnstack\",\n            \"TimeRepr\",\n            \"TimeMaskBool\",\n            \"TimeIsnull\",\n            \"TimeDropna\",\n            \"TimeEquals\",\n            # IO benchmarks\n            \"TimeReadCsvSkiprows\",\n            \"TimeReadCsvTrueFalseValues\",\n            \"TimeReadCsvNamesDtype\",\n            \"TimeReadParquet\",\n            # Scalability benchmarks\n            \"TimeFromPandas\",\n            \"TimeToPandas\",\n        ],\n    ),\n    (\n        BINARY_OP_DATA_SIZE[ASV_DATASET_SIZE],\n        [\n            # Pandas storage format benchmarks\n            \"TimeJoin\",\n            \"TimeMerge\",\n            \"TimeMergeDefault\",\n            \"TimeConcat\",\n            \"TimeAppend\",\n            \"TimeBinaryOp\",\n            \"TimeLevelAlign\",\n        ],\n    ),\n    (\n        SERIES_DATA_SIZE[ASV_DATASET_SIZE],\n        [\n            # Pandas storage format benchmarks\n            \"TimeFillnaSeries\",\n            \"TimeGroups\",\n            \"TimeIndexingNumericSeries\",\n            \"TimeFillnaMethodSeries\",\n            \"TimeDatetimeAccessor\",\n            \"TimeSetCategories\",\n            \"TimeRemoveCategories\",\n            \"TimeDropDuplicatesSeries\",\n        ],\n    ),\n    (\n        BINARY_OP_SERIES_DATA_SIZE[ASV_DATASET_SIZE],\n        [\n            # Pandas storage format benchmarks\n            \"TimeBinaryOpSeries\",\n        ],\n    ),\n]\n\n_DEFAULT_HDK_CONFIG_T = [\n    (\n        HDK_UNARY_OP_DATA_SIZE[ASV_DATASET_SIZE],\n        [\n            \"hdk.TimeJoin\",\n            \"hdk.TimeBinaryOpDataFrame\",\n            \"hdk.TimeArithmetic\",\n            \"hdk.TimeSortValues\",\n            \"hdk.TimeDrop\",\n            \"hdk.TimeHead\",\n            \"hdk.TimeFillna\",\n            \"hdk.TimeIndexing\",\n            \"hdk.TimeResetIndex\",\n            \"hdk.TimeAstype\",\n            \"hdk.TimeDescribe\",\n            \"hdk.TimeProperties\",\n            \"hdk.TimeGroupByDefaultAggregations\",\n            \"hdk.TimeGroupByMultiColumn\",\n            \"hdk.TimeValueCountsDataFrame\",\n            \"hdk.TimeReadCsvNames\",\n        ],\n    ),\n    (\n        HDK_BINARY_OP_DATA_SIZE[ASV_DATASET_SIZE],\n        [\"hdk.TimeMerge\", \"hdk.TimeAppend\"],\n    ),\n    (\n        HDK_SERIES_DATA_SIZE[ASV_DATASET_SIZE],\n        [\"hdk.TimeBinaryOpSeries\", \"hdk.TimeValueCountsSeries\"],\n    ),\n]\nDEFAULT_CONFIG = {}\nDEFAULT_CONFIG[\"MergeCategoricals\"] = (\n    [[10_000, 2]] if ASV_DATASET_SIZE == \"big\" else [[1_000, 2]]\n)\nDEFAULT_CONFIG[\"TimeJoinStringIndex\"] = (\n    [[100_000, 64]] if ASV_DATASET_SIZE == \"big\" else [[1_000, 4]]\n)\nDEFAULT_CONFIG[\"TimeReplace\"] = (\n    [[10_000, 2]] if ASV_DATASET_SIZE == \"big\" else [[1_000, 2]]\n)\nfor config in (_DEFAULT_CONFIG_T, _DEFAULT_HDK_CONFIG_T):\n    for _shape, _names in config:\n        DEFAULT_CONFIG.update({_name: _shape for _name in _names})\n\n# Correct shapes in the case when the operation ended with a timeout error\nif ASV_DATASET_SIZE == \"big\":\n    DEFAULT_CONFIG[\"TimeMergeDefault\"] = [\n        [[1000, 1000], [1000, 1000]],\n        [[500_000, 20], [1_000_000, 10]],\n    ]\n    DEFAULT_CONFIG[\"TimeLevelAlign\"] = [\n        [[2500, 2500], [2500, 2500]],\n        [[250_000, 20], [500_000, 10]],\n    ]\n    DEFAULT_CONFIG[\"TimeStack\"] = [\n        [1500, 1500],\n        [100_000, 10],\n    ]\n    DEFAULT_CONFIG[\"TimeUnstack\"] = DEFAULT_CONFIG[\"TimeStack\"]\n\nCONFIG_FROM_FILE = None\n\n\ndef get_benchmark_shapes(bench_id: str):\n    \"\"\"\n    Get custom benchmark shapes from a json file stored in MODIN_ASV_DATASIZE_CONFIG.\n\n    If `bench_id` benchmark is not found in the file, then the default value will\n    be used.\n\n    Parameters\n    ----------\n    bench_id : str\n        Unique benchmark identifier that is used to get shapes.\n\n    Returns\n    -------\n    list\n        Benchmark shapes.\n    \"\"\"\n    global CONFIG_FROM_FILE\n    if not CONFIG_FROM_FILE:\n        try:\n            from modin.config import AsvDataSizeConfig\n\n            filename = AsvDataSizeConfig.get()\n        except ImportError:\n            filename = os.environ.get(\"MODIN_ASV_DATASIZE_CONFIG\", None)\n        if filename:\n            # should be json\n            with open(filename) as _f:\n                CONFIG_FROM_FILE = json.load(_f)\n\n    if CONFIG_FROM_FILE and bench_id in CONFIG_FROM_FILE:\n        # example: \"hdk.TimeReadCsvNames\": [[5555, 55], [3333, 33]]\n        return CONFIG_FROM_FILE[bench_id]\n    return DEFAULT_CONFIG[bench_id]\n", "path": "asv_bench/benchmarks/utils/data_shapes.py"}]}