diff options
Diffstat (limited to 'sphinx/deprecation.py')
-rw-r--r-- | sphinx/deprecation.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/sphinx/deprecation.py b/sphinx/deprecation.py index e28e0f916..d4067055a 100644 --- a/sphinx/deprecation.py +++ b/sphinx/deprecation.py @@ -9,6 +9,13 @@ :license: BSD, see LICENSE for details. """ +import warnings + +if False: + # For type annotation + # note: Don't use typing.TYPE_CHECK here (for py27 and py34). + from typing import Any, Dict, Type # NOQA + class RemovedInSphinx18Warning(DeprecationWarning): pass @@ -22,4 +29,47 @@ class RemovedInSphinx20Warning(PendingDeprecationWarning): pass +class RemovedInSphinx30Warning(PendingDeprecationWarning): + pass + + +class RemovedInSphinx40Warning(PendingDeprecationWarning): + pass + + RemovedInNextVersionWarning = RemovedInSphinx18Warning + + +class DeprecatedDict(dict): + """A deprecated dict which warns on each access.""" + + def __init__(self, data, message, warning): + # type: (Dict, str, Type[Warning]) -> None + self.message = message + self.warning = warning + super(DeprecatedDict, self).__init__(data) + + def __setitem__(self, key, value): + # type: (unicode, Any) -> None + warnings.warn(self.message, self.warning) + super(DeprecatedDict, self).__setitem__(key, value) + + def setdefault(self, key, default=None): + # type: (unicode, Any) -> None + warnings.warn(self.message, self.warning) + return super(DeprecatedDict, self).setdefault(key, default) + + def __getitem__(self, key): + # type: (unicode) -> None + warnings.warn(self.message, self.warning) + return super(DeprecatedDict, self).__getitem__(key) + + def get(self, key, default=None): + # type: (unicode, Any) -> None + warnings.warn(self.message, self.warning) + return super(DeprecatedDict, self).get(key, default) + + def update(self, other=None): # type: ignore + # type: (Dict) -> None + warnings.warn(self.message, self.warning) + super(DeprecatedDict, self).update(other) |