From 455910fe3832e0b933a8b4e7e50a5dd240f271dd Mon Sep 17 00:00:00 2001 From: davidchen Date: Sat, 22 Sep 2018 15:51:46 +0800 Subject: [PATCH 1/2] fix #6203, markdown 3.0 change version attribute --- rest_framework/compat.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rest_framework/compat.py b/rest_framework/compat.py index d6559d5f5..4621ab359 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -161,10 +161,16 @@ if 'patch' not in View.http_method_names: try: import markdown - if markdown.version <= '2.2': + if hasattr(markdown, 'version'): + markdown_version = markdown.version + else: + # >= 3.0 + markdown_version = markdown.__version__ + + if markdown_version <= '2.2': HEADERID_EXT_PATH = 'headerid' LEVEL_PARAM = 'level' - elif markdown.version < '2.6': + elif markdown_version < '2.6': HEADERID_EXT_PATH = 'markdown.extensions.headerid' LEVEL_PARAM = 'level' else: From 8c23432060fe8ed54d3f243873bc28c8970fbf5c Mon Sep 17 00:00:00 2001 From: davidchen Date: Sat, 22 Sep 2018 21:00:10 +0800 Subject: [PATCH 2/2] raise ImportError while neither version or __version__ works --- rest_framework/compat.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 4621ab359..192ab1ae8 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -161,11 +161,17 @@ if 'patch' not in View.http_method_names: try: import markdown - if hasattr(markdown, 'version'): + try: + # for Markdown < 3.0 markdown_version = markdown.version - else: - # >= 3.0 - markdown_version = markdown.__version__ + except AttributeError: + # for Markdown >= 3.0 + try: + markdown_version = markdown.__version__ + except AttributeError: + import warnings + warnings.warn("Cannot decide Markdown's version", ImportWarning) + raise ImportError("Cannot decide Markdown's version") if markdown_version <= '2.2': HEADERID_EXT_PATH = 'headerid'