summaryrefslogtreecommitdiff
path: root/markdown/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'markdown/__init__.py')
-rw-r--r--markdown/__init__.py41
1 files changed, 20 insertions, 21 deletions
diff --git a/markdown/__init__.py b/markdown/__init__.py
index ea2bbf4..67b76f1 100644
--- a/markdown/__init__.py
+++ b/markdown/__init__.py
@@ -23,8 +23,10 @@ License: BSD (see LICENSE.md for details).
from __future__ import absolute_import
from __future__ import unicode_literals
from .core import Markdown, markdown, markdownFromFile
-from .util import ModuleWrap, deprecated
+from .util import PY37
+from .pep562 import Pep562
from pkg_resources.extern import packaging
+import warnings
# For backward compatibility as some extensions expect it...
from .extensions import Extension # noqa
@@ -64,28 +66,25 @@ def _get_version(): # pragma: no cover
__version__ = _get_version()
+__deprecated__ = {
+ "version": ("__version__", __version__),
+ "version_info": ("__version_info__", __version_info__)
+}
-class _ModuleWrap(ModuleWrap):
- """
- Wrap module so that we can control `__getattribute__` and `__dir__` logic.
- Treat `version` and `version_info` as deprecated properties.
- Provides backward-compatabillity with <3.0 versions.
- """
+def __getattr__(name):
+ """Get attribute."""
- @property
- @deprecated("Use '__version__' instead.", stacklevel=3)
- def version(self):
- """Get deprecated version."""
+ deprecated = __deprecated__.get(name)
+ if deprecated:
+ warnings.warn(
+ "'{}' is deprecated. Use '{}' instead.".format(name, deprecated[0]),
+ category=DeprecationWarning,
+ stacklevel=(3 if PY37 else 4)
+ )
+ return deprecated[1]
+ raise AttributeError("module '{}' has no attribute '{}'".format(__name__, name))
- return __version__
- @property
- @deprecated("Use '__version_info__' instead.", stacklevel=3)
- def version_info(self):
- """Get deprecated version info."""
-
- return __version_info__
-
-
-_ModuleWrap(__name__)
+if not PY37:
+ Pep562(__name__)