summaryrefslogtreecommitdiff
path: root/sphinx/deprecation.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/deprecation.py')
-rw-r--r--sphinx/deprecation.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/sphinx/deprecation.py b/sphinx/deprecation.py
index e28e0f916..1b0e862f0 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,43 @@ class RemovedInSphinx20Warning(PendingDeprecationWarning):
pass
+class RemovedInSphinx30Warning(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)