From 33f49e101fc739ce66dc6e21b412e42cf04b18a9 Mon Sep 17 00:00:00 2001 From: Benjamin Thyreau Date: Fri, 10 Jul 2020 15:35:53 +0900 Subject: [PATCH 1/3] raise limit for completion number of columns and warn beyond --- pandas/core/generic.py | 8 ++++++-- pandas/tests/series/test_api.py | 11 ++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 571fcc67f3bb5..dd72a9a3d83c1 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -5175,9 +5175,13 @@ def _dir_additions(self): add the string-like attributes from the info_axis. If info_axis is a MultiIndex, it's first level values are used. """ + unique_entries = self._info_axis.unique(level=0) + if len(unique_entries) > 1000: + unique_entries = unique_entries[:1000] + warnings.warn("Completion only considers the first 1000 entries," + " for performance reasons", UserWarning) additions = { - c - for c in self._info_axis.unique(level=0)[:100] + c for c in unique_entries if isinstance(c, str) and c.isidentifier() } return super()._dir_additions().union(additions) diff --git a/pandas/tests/series/test_api.py b/pandas/tests/series/test_api.py index 042841bb4e019..bcf5adf084df3 100644 --- a/pandas/tests/series/test_api.py +++ b/pandas/tests/series/test_api.py @@ -248,7 +248,7 @@ def get_dir(s): tm.makeIntIndex(10), tm.makeFloatIndex(10), Index([True, False]), - Index([f"a{i}" for i in range(101)]), + Index([f"a{i}" for i in range(1001)]), pd.MultiIndex.from_tuples(zip("ABCD", "EFGH")), pd.MultiIndex.from_tuples(zip([0, 1, 2, 3], "EFGH")), ], @@ -256,9 +256,14 @@ def get_dir(s): def test_index_tab_completion(self, index): # dir contains string-like values of the Index. s = pd.Series(index=index, dtype=object) - dir_s = dir(s) + if len(s) < 1000: + dir_s = dir(s) + else: + with tm.assert_produces_warning(UserWarning): + dir_s = dir(s) + for i, x in enumerate(s.index.unique(level=0)): - if i < 100: + if i < 1000: assert not isinstance(x, str) or not x.isidentifier() or x in dir_s else: assert x not in dir_s From b0c1f7a1a3212f40b8ba821d6f6807041c14c039 Mon Sep 17 00:00:00 2001 From: Benjamin Thyreau Date: Fri, 10 Jul 2020 16:50:14 +0900 Subject: [PATCH 2/3] black --- pandas/core/generic.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index dd72a9a3d83c1..1e38f6476506a 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -5178,11 +5178,13 @@ def _dir_additions(self): unique_entries = self._info_axis.unique(level=0) if len(unique_entries) > 1000: unique_entries = unique_entries[:1000] - warnings.warn("Completion only considers the first 1000 entries," - " for performance reasons", UserWarning) + warnings.warn( + "Completion only considers the first 1000 entries," + " for performance reasons", + UserWarning, + ) additions = { - c for c in unique_entries - if isinstance(c, str) and c.isidentifier() + c for c in unique_entries if isinstance(c, str) and c.isidentifier() } return super()._dir_additions().union(additions) From 1313077ea3a5799c4f5b488547fdf6949308d008 Mon Sep 17 00:00:00 2001 From: Benjamin Thyreau Date: Fri, 10 Jul 2020 19:33:42 +0900 Subject: [PATCH 3/3] Linting --- pandas/core/generic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 1e38f6476506a..69ff4006f34f3 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -5179,8 +5179,8 @@ def _dir_additions(self): if len(unique_entries) > 1000: unique_entries = unique_entries[:1000] warnings.warn( - "Completion only considers the first 1000 entries," - " for performance reasons", + "Completion only considers the first 1000 entries " + "for performance reasons", UserWarning, ) additions = {