| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- # Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- # For details: https://github.com/pylint-dev/pylint/blob/main/LICENSE
- # Copyright (c) https://github.com/pylint-dev/pylint/blob/main/CONTRIBUTORS.txt
- # pylint: disable=too-many-arguments, redefined-builtin
- """Deprecated option actions."""
- from __future__ import annotations
- import argparse
- import warnings
- from collections.abc import Sequence
- from typing import Any
- class _OldNamesAction(argparse._StoreAction):
- """Store action that also sets the value to old names."""
- def __init__(
- self,
- option_strings: Sequence[str],
- dest: str,
- nargs: None = None,
- const: None = None,
- default: None = None,
- type: None = None,
- choices: None = None,
- required: bool = False,
- help: str = "",
- metavar: str = "",
- old_names: list[str] | None = None,
- ) -> None:
- assert old_names
- self.old_names = old_names
- super().__init__(
- option_strings,
- dest,
- 1,
- const,
- default,
- type,
- choices,
- required,
- help,
- metavar,
- )
- def __call__(
- self,
- parser: argparse.ArgumentParser,
- namespace: argparse.Namespace,
- values: str | Sequence[Any] | None,
- option_string: str | None = None,
- ) -> None:
- assert isinstance(values, list)
- setattr(namespace, self.dest, values[0])
- for old_name in self.old_names:
- setattr(namespace, old_name, values[0])
- class _NewNamesAction(argparse._StoreAction):
- """Store action that also emits a deprecation warning about a new name."""
- def __init__(
- self,
- option_strings: Sequence[str],
- dest: str,
- nargs: None = None,
- const: None = None,
- default: None = None,
- type: None = None,
- choices: None = None,
- required: bool = False,
- help: str = "",
- metavar: str = "",
- new_names: list[str] | None = None,
- ) -> None:
- assert new_names
- self.new_names = new_names
- super().__init__(
- option_strings,
- dest,
- 1,
- const,
- default,
- type,
- choices,
- required,
- help,
- metavar,
- )
- def __call__(
- self,
- parser: argparse.ArgumentParser,
- namespace: argparse.Namespace,
- values: str | Sequence[Any] | None,
- option_string: str | None = None,
- ) -> None:
- assert isinstance(values, list)
- setattr(namespace, self.dest, values[0])
- warnings.warn(
- f"{self.option_strings[0]} has been deprecated. Please look into "
- f"using any of the following options: {', '.join(self.new_names)}.",
- DeprecationWarning,
- )
|