Skip to content

Commit 4358e00

Browse files
authored
fix: render optional toggle fields when exists
fix: render optional toggle fields when exists
1 parent 12480bd commit 4358e00

2 files changed

Lines changed: 39 additions & 11 deletions

File tree

code_annotations/contrib/sphinx/extensions/featuretoggles.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,10 @@ def iter_nodes(self):
7474
toggle_default_value = toggle.get(".. toggle_default:", "Not defined")
7575
toggle_default_node = nodes.literal(text=quote_value(toggle_default_value))
7676
toggle_section = nodes.section("", ids=[f"featuretoggle-{toggle_name}"])
77-
toggle_section += nodes.title(text=toggle_name)
78-
toggle_section += nodes.paragraph("", "Default: ", toggle_default_node)
77+
toggle_section += nodes.title(text=toggle_name, ids=[f"name-{toggle_name}"])
78+
toggle_section += nodes.paragraph(
79+
"", "Default: ", toggle_default_node, ids=[f"default-{toggle_name}"]
80+
)
7981
toggle_section += nodes.paragraph(
8082
"",
8183
"Source: ",
@@ -90,14 +92,28 @@ def iter_nodes(self):
9092
toggle["line_number"],
9193
),
9294
),
95+
ids=[f"source-{toggle_name}"],
9396
)
9497
toggle_section += nodes.paragraph(
95-
text=toggle.get(".. toggle_description:", "")
98+
text=f'Desc: {toggle.get(".. toggle_description:", "NaN")}',
99+
ids=[f"description-{toggle_name}"],
96100
)
97101
if toggle.get(".. toggle_warning:") not in (None, "None", "n/a", "N/A"):
98102
toggle_section += nodes.warning(
99-
"", nodes.paragraph("", toggle[".. toggle_warning:"])
103+
"", nodes.paragraph("", toggle[".. toggle_warning:"]), ids=[f"warning-{toggle_name}"]
100104
)
105+
optional_attrs = [
106+
"creation_date",
107+
"target_removal_date",
108+
"implementation",
109+
"use_cases",
110+
]
111+
for opt in optional_attrs:
112+
if toggle.get(f".. toggle_{opt}:") not in (None, "None", "n/a", "N/A"):
113+
toggle_section += nodes.paragraph(
114+
text=f'{opt.title().replace("_"," ")}: {toggle[f".. toggle_{opt}:"]}',
115+
ids=[f"{opt}-{toggle_name}"],
116+
)
101117
yield toggle_section
102118

103119

code_annotations/contrib/sphinx/extensions/settings.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ def find_settings(source_path):
1919
Return:
2020
settings (dict): Django settings indexed by name.
2121
"""
22-
return find_annotations(source_path, SETTING_ANNOTATIONS_CONFIG_PATH, ".. setting_name:")
22+
return find_annotations(
23+
source_path, SETTING_ANNOTATIONS_CONFIG_PATH, ".. setting_name:"
24+
)
2325

2426

2527
class Settings(SphinxDirective):
@@ -72,7 +74,9 @@ def iter_nodes(self):
7274
source_path = os.path.join(self.env.config.settings_source_path, folder_path)
7375
settings = find_settings(source_path)
7476
# folder_path can point to a file or directory
75-
root_folder = folder_path if os.path.isdir(source_path) else os.path.dirname(folder_path)
77+
root_folder = (
78+
folder_path if os.path.isdir(source_path) else os.path.dirname(folder_path)
79+
)
7680
for setting_name in sorted(settings):
7781
setting = settings[setting_name]
7882
# setting["filename"] is relative to the root_path
@@ -82,8 +86,10 @@ def iter_nodes(self):
8286
text=quote_value(setting_default_value)
8387
)
8488
setting_section = nodes.section("", ids=[f"setting-{setting_name}"])
85-
setting_section += nodes.title(text=setting_name)
86-
setting_section += nodes.paragraph("", "Default: ", setting_default_node)
89+
setting_section += nodes.title(text=setting_name, ids=[f"title-{setting_name}"])
90+
setting_section += nodes.paragraph(
91+
"", "Default: ", setting_default_node, ids=[f"default-{setting_name}"]
92+
)
8793
setting_section += nodes.paragraph(
8894
"",
8995
"Source: ",
@@ -98,13 +104,17 @@ def iter_nodes(self):
98104
setting["line_number"],
99105
),
100106
),
107+
ids=[f"source-{setting_name}"],
101108
)
102109
setting_section += nodes.paragraph(
103-
text=setting.get(".. setting_description:", "")
110+
text=setting.get(".. setting_description:", ""),
111+
ids=[f"description-{setting_name}"],
104112
)
105113
if setting.get(".. setting_warning:") not in (None, "None", "n/a", "N/A"):
106114
setting_section += nodes.warning(
107-
"", nodes.paragraph("", setting[".. setting_warning:"])
115+
"",
116+
nodes.paragraph("", setting[".. setting_warning:"]),
117+
ids=[f"warning-{setting_name}"],
108118
)
109119
yield setting_section
110120

@@ -114,7 +124,9 @@ def setup(app):
114124
Declare the Sphinx extension.
115125
"""
116126
app.add_config_value(
117-
"settings_source_path", os.path.abspath(".."), "env",
127+
"settings_source_path",
128+
os.path.abspath(".."),
129+
"env",
118130
)
119131
app.add_config_value("settings_repo_url", "", "env")
120132
app.add_config_value("settings_repo_version", "master", "env")

0 commit comments

Comments
 (0)