Handles the quirks of having a singular 'name' parameter for general Index and plural 'names' parameter for MultiIndex.
(
self, name=None, names=None, deep: bool = False
)
| 1815 | |
| 1816 | @final |
| 1817 | def _validate_names( |
| 1818 | self, name=None, names=None, deep: bool = False |
| 1819 | ) -> list[Hashable]: |
| 1820 | """ |
| 1821 | Handles the quirks of having a singular 'name' parameter for general |
| 1822 | Index and plural 'names' parameter for MultiIndex. |
| 1823 | """ |
| 1824 | from copy import deepcopy |
| 1825 | |
| 1826 | if names is not None and name is not None: |
| 1827 | raise TypeError("Can only provide one of `names` and `name`") |
| 1828 | if names is None and name is None: |
| 1829 | new_names = deepcopy(self.names) if deep else self.names |
| 1830 | elif names is not None: |
| 1831 | if not is_list_like(names): |
| 1832 | raise TypeError("Must pass list-like as `names`.") |
| 1833 | new_names = names |
| 1834 | elif not is_list_like(name): |
| 1835 | new_names = [name] |
| 1836 | else: |
| 1837 | new_names = name |
| 1838 | |
| 1839 | if len(new_names) != len(self.names): |
| 1840 | raise ValueError( |
| 1841 | f"Length of new names must be {len(self.names)}, got {len(new_names)}" |
| 1842 | ) |
| 1843 | |
| 1844 | # All items in 'new_names' need to be hashable |
| 1845 | validate_all_hashable(*new_names, error_name=f"{type(self).__name__}.name") |
| 1846 | |
| 1847 | return new_names |
| 1848 | |
| 1849 | def _get_default_index_names( |
| 1850 | self, names: Hashable | Sequence[Hashable] | None = None, default=None |
no test coverage detected