diff --git a/zerver/lib/markdown/api_arguments_table_generator.py b/zerver/lib/markdown/api_arguments_table_generator.py
index cb96f26773..bce1303754 100644
--- a/zerver/lib/markdown/api_arguments_table_generator.py
+++ b/zerver/lib/markdown/api_arguments_table_generator.py
@@ -8,7 +8,7 @@ from django.utils.html import escape as escape_html
from markdown.extensions import Extension
from markdown.preprocessors import Preprocessor
-from zerver.openapi.openapi import get_openapi_parameters, likely_deprecated_parameter
+from zerver.openapi.openapi import check_deprecated_consistency, get_openapi_parameters
REGEXP = re.compile(r"\{generate_api_arguments_table\|\s*(.+?)\s*\|\s*(.+)\s*\}")
@@ -139,9 +139,7 @@ class APIArgumentsTablePreprocessor(Preprocessor):
else:
required_block = 'optional'
- # Test to make sure deprecated parameters are marked so.
- if likely_deprecated_parameter(description):
- assert argument["deprecated"]
+ check_deprecated_consistency(argument, description)
if argument.get("deprecated", False):
deprecated_block = 'Deprecated'
else:
diff --git a/zerver/lib/markdown/api_return_values_table_generator.py b/zerver/lib/markdown/api_return_values_table_generator.py
index 5d1d9be037..cba467a6e6 100644
--- a/zerver/lib/markdown/api_return_values_table_generator.py
+++ b/zerver/lib/markdown/api_return_values_table_generator.py
@@ -7,7 +7,7 @@ import markdown
from markdown.extensions import Extension
from markdown.preprocessors import Preprocessor
-from zerver.openapi.openapi import get_openapi_return_values, likely_deprecated_parameter
+from zerver.openapi.openapi import check_deprecated_consistency, get_openapi_return_values
from .api_arguments_table_generator import generate_data_type
@@ -134,9 +134,7 @@ class APIReturnValuesTablePreprocessor(Preprocessor):
continue
description = return_values[return_value]["description"]
data_type = generate_data_type(return_values[return_value])
- # Test to make sure deprecated keys are marked appropriately.
- if likely_deprecated_parameter(description):
- assert return_values[return_value]["deprecated"]
+ check_deprecated_consistency(return_values[return_value], description)
ans.append(self.render_desc(description, spacing, data_type, return_value))
if "properties" in return_values[return_value]:
ans += self.render_table(return_values[return_value]["properties"], spacing + 4)
diff --git a/zerver/openapi/openapi.py b/zerver/openapi/openapi.py
index 729b901f7f..cd70a5accc 100644
--- a/zerver/openapi/openapi.py
+++ b/zerver/openapi/openapi.py
@@ -402,6 +402,14 @@ def likely_deprecated_parameter(parameter_description: str) -> bool:
return "**Deprecated**" in parameter_description
+def check_deprecated_consistency(argument: Dict[str, Any], description: str) -> None:
+ # Test to make sure deprecated parameters are marked so.
+ if likely_deprecated_parameter(description):
+ assert argument["deprecated"]
+ if "deprecated" in argument:
+ assert likely_deprecated_parameter(description)
+
+
# Skip those JSON endpoints whose query parameters are different from
# their `/api/v1` counterpart. This is a legacy code issue that we
# plan to fix by changing the implementation.