From b4e5572aef08aeb8c19a939e046601b4fde8f5c4 Mon Sep 17 00:00:00 2001 From: Terji Petersen Date: Wed, 15 Dec 2021 22:09:07 +0000 Subject: [PATCH 1/6] DEPR: names param in Index.copy --- doc/source/whatsnew/v1.4.0.rst | 1 + pandas/core/indexes/base.py | 12 ++++++++++++ pandas/tests/indexes/test_base.py | 19 +++++++++++++------ 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/doc/source/whatsnew/v1.4.0.rst b/doc/source/whatsnew/v1.4.0.rst index ab3987c8c74a4..b0f883523e9bb 100644 --- a/doc/source/whatsnew/v1.4.0.rst +++ b/doc/source/whatsnew/v1.4.0.rst @@ -537,6 +537,7 @@ Other Deprecations - Deprecated passing arguments as positional for :func:`read_fwf` other than ``filepath_or_buffer`` (:issue:`41485`): - Deprecated passing ``skipna=None`` for :meth:`DataFrame.mad` and :meth:`Series.mad`, pass ``skipna=True`` instead (:issue:`44580`) - Deprecated :meth:`DateOffset.apply`, use ``offset + other`` instead (:issue:`44522`) +- Deprecated parameter ``names`` in :meth:`Index.copy` (:issue:`xxxx`) - A deprecation warning is now shown for :meth:`DataFrame.to_latex` indicating the arguments signature may change and emulate more the arguments to :meth:`.Styler.to_latex` in future versions (:issue:`44411`) - diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index 54a13c124c13a..1bf7ea3a3f398 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -1178,6 +1178,10 @@ def copy( names : list-like, optional Kept for compatibility with MultiIndex. Should not be used. + .. deprecated:: 1.4.0 + use ``name`` instead. + + Returns ------- Index @@ -1188,6 +1192,14 @@ def copy( In most cases, there should be no functional difference from using ``deep``, but if ``deep`` is passed it will attempt to deepcopy. """ + if names is not None: + warnings.warn( + "parameter names is deprecated and will be removed in a future " + "version. Use the name parameter instead.", + FutureWarning, + stacklevel=find_stack_level(), + ) + name = self._validate_names(name=name, names=names, deep=deep)[0] if deep: new_data = self._data.copy() diff --git a/pandas/tests/indexes/test_base.py b/pandas/tests/indexes/test_base.py index 72d654f6cfa28..dc4d69e83a5c5 100644 --- a/pandas/tests/indexes/test_base.py +++ b/pandas/tests/indexes/test_base.py @@ -3,6 +3,7 @@ from io import StringIO import math import re +from warnings import catch_warnings import numpy as np import pytest @@ -1260,12 +1261,18 @@ def test_copy_name2(self): assert index.name == "MyName" assert index2.name == "NewName" - index3 = index.copy(names=["NewName"]) - tm.assert_index_equal(index, index3, check_names=False) - assert index.name == "MyName" - assert index.names == ["MyName"] - assert index3.name == "NewName" - assert index3.names == ["NewName"] + with catch_warnings(record=True): + index3 = index.copy(names=["NewName"]) + tm.assert_index_equal(index, index3, check_names=False) + assert index.name == "MyName" + assert index.names == ["MyName"] + assert index3.name == "NewName" + assert index3.names == ["NewName"] + + def test_copy_names_deprecated(self, simple_index): + # GH#xxxxx + with tm.assert_produces_warning(FutureWarning): + simple_index.copy(names=["a"]) def test_unique_na(self): idx = Index([2, np.nan, 2, 1], name="my_index") From 6b49c6ac15b3a55ffcc39e7b7049bebabe0bb927 Mon Sep 17 00:00:00 2001 From: Terji Petersen Date: Wed, 15 Dec 2021 22:12:08 +0000 Subject: [PATCH 2/6] add GH number --- doc/source/whatsnew/v1.4.0.rst | 2 +- pandas/tests/indexes/test_base.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/source/whatsnew/v1.4.0.rst b/doc/source/whatsnew/v1.4.0.rst index b0f883523e9bb..07243b3c82e48 100644 --- a/doc/source/whatsnew/v1.4.0.rst +++ b/doc/source/whatsnew/v1.4.0.rst @@ -537,7 +537,7 @@ Other Deprecations - Deprecated passing arguments as positional for :func:`read_fwf` other than ``filepath_or_buffer`` (:issue:`41485`): - Deprecated passing ``skipna=None`` for :meth:`DataFrame.mad` and :meth:`Series.mad`, pass ``skipna=True`` instead (:issue:`44580`) - Deprecated :meth:`DateOffset.apply`, use ``offset + other`` instead (:issue:`44522`) -- Deprecated parameter ``names`` in :meth:`Index.copy` (:issue:`xxxx`) +- Deprecated parameter ``names`` in :meth:`Index.copy` (:issue:`44916`) - A deprecation warning is now shown for :meth:`DataFrame.to_latex` indicating the arguments signature may change and emulate more the arguments to :meth:`.Styler.to_latex` in future versions (:issue:`44411`) - diff --git a/pandas/tests/indexes/test_base.py b/pandas/tests/indexes/test_base.py index dc4d69e83a5c5..5e8e0baf362d4 100644 --- a/pandas/tests/indexes/test_base.py +++ b/pandas/tests/indexes/test_base.py @@ -1270,7 +1270,7 @@ def test_copy_name2(self): assert index3.names == ["NewName"] def test_copy_names_deprecated(self, simple_index): - # GH#xxxxx + # GH44916 with tm.assert_produces_warning(FutureWarning): simple_index.copy(names=["a"]) From a790a4b7a417af320c4bdd292740c14b20934824 Mon Sep 17 00:00:00 2001 From: Terji Petersen Date: Wed, 15 Dec 2021 22:14:48 +0000 Subject: [PATCH 3/6] clean-up --- pandas/tests/indexes/test_base.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pandas/tests/indexes/test_base.py b/pandas/tests/indexes/test_base.py index 5e8e0baf362d4..fd2fc2a71d1d0 100644 --- a/pandas/tests/indexes/test_base.py +++ b/pandas/tests/indexes/test_base.py @@ -1263,11 +1263,11 @@ def test_copy_name2(self): with catch_warnings(record=True): index3 = index.copy(names=["NewName"]) - tm.assert_index_equal(index, index3, check_names=False) - assert index.name == "MyName" - assert index.names == ["MyName"] - assert index3.name == "NewName" - assert index3.names == ["NewName"] + tm.assert_index_equal(index, index3, check_names=False) + assert index.name == "MyName" + assert index.names == ["MyName"] + assert index3.name == "NewName" + assert index3.names == ["NewName"] def test_copy_names_deprecated(self, simple_index): # GH44916 From 245abd8786cf37c20b8eb2bd65d0bb94786e6a0d Mon Sep 17 00:00:00 2001 From: Terji Petersen Date: Wed, 15 Dec 2021 22:15:36 +0000 Subject: [PATCH 4/6] clean-up --- pandas/tests/indexes/test_base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/indexes/test_base.py b/pandas/tests/indexes/test_base.py index fd2fc2a71d1d0..a0b6548be94ae 100644 --- a/pandas/tests/indexes/test_base.py +++ b/pandas/tests/indexes/test_base.py @@ -1261,7 +1261,7 @@ def test_copy_name2(self): assert index.name == "MyName" assert index2.name == "NewName" - with catch_warnings(record=True): + with tm.assert_produces_warning(FutureWarning): index3 = index.copy(names=["NewName"]) tm.assert_index_equal(index, index3, check_names=False) assert index.name == "MyName" From 8f65a7407922b79c55d34539769f156e0dba8fcf Mon Sep 17 00:00:00 2001 From: Terji Petersen Date: Thu, 16 Dec 2021 08:07:13 +0000 Subject: [PATCH 5/6] fix unneeded line --- pandas/core/indexes/base.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index 1bf7ea3a3f398..a28d3fe35ed69 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -1181,7 +1181,6 @@ def copy( .. deprecated:: 1.4.0 use ``name`` instead. - Returns ------- Index From 3b5d937d5f57cbbf18f486a69e4630d5c60545c5 Mon Sep 17 00:00:00 2001 From: Terji Petersen Date: Thu, 16 Dec 2021 08:34:45 +0000 Subject: [PATCH 6/6] fix II --- pandas/tests/indexes/test_base.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pandas/tests/indexes/test_base.py b/pandas/tests/indexes/test_base.py index a0b6548be94ae..c74a566cc573d 100644 --- a/pandas/tests/indexes/test_base.py +++ b/pandas/tests/indexes/test_base.py @@ -3,7 +3,6 @@ from io import StringIO import math import re -from warnings import catch_warnings import numpy as np import pytest