diff options
Diffstat (limited to 'markdown/__init__.py')
-rw-r--r-- | markdown/__init__.py | 41 |
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__) |