Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <campbell@blender.org>2022-04-19 05:17:25 +0300
committerCampbell Barton <campbell@blender.org>2022-04-19 05:19:08 +0300
commit7e045094c1c6f7108833afe88f866572d0bd6d93 (patch)
tree91a18bc178327572b9551907734b02a9ae69eed6
parentf4017415448fd38f879a2e4bbf7a9f0d85050f1e (diff)
PyDoc: quiet warnings for duplicate members bpy.context
-rw-r--r--doc/python_api/sphinx_doc_gen.py30
1 files changed, 23 insertions, 7 deletions
diff --git a/doc/python_api/sphinx_doc_gen.py b/doc/python_api/sphinx_doc_gen.py
index c21a796c43a..477d2196666 100644
--- a/doc/python_api/sphinx_doc_gen.py
+++ b/doc/python_api/sphinx_doc_gen.py
@@ -1151,6 +1151,9 @@ def pycontext2sphinx(basepath):
fw("Note that all context values are readonly,\n")
fw("but may be modified through the data API or by running operators\n\n")
+ # Track all unique properties to properly use `noindex`.
+ unique = set()
+
def write_contex_cls():
fw(title_string("Global Context", "-"))
@@ -1168,9 +1171,11 @@ def pycontext2sphinx(basepath):
# First write RNA
for prop in sorted_struct_properties:
- # support blacklisting props
+ # Support blacklisting props.
if prop.identifier in struct_blacklist:
continue
+ # No need to check if there are duplicates yet as it's known there wont be.
+ unique.add(prop.identifier)
type_descr = prop.get_type_description(
class_fmt=":class:`bpy.types.%s`", collection_id=_BPY_PROP_COLLECTION_ID)
@@ -1208,7 +1213,8 @@ def pycontext2sphinx(basepath):
"file_context_dir",
)
- unique = set()
+ # Track unique for `context_strings` to validate `context_type_map`.
+ unique_context_strings = set()
blend_cdll = ctypes.CDLL("")
for ctx_str in context_strings:
subsection = "%s Context" % ctx_str.split("_")[0].title()
@@ -1220,22 +1226,32 @@ def pycontext2sphinx(basepath):
i = 0
while char_array[i] is not None:
member = ctypes.string_at(char_array[i]).decode(encoding="ascii")
- fw(".. data:: %s\n\n" % member)
+ unique_all_len = len(unique)
+ unique.add(member)
+ member_visited = unique_all_len == len(unique)
+
+ unique_context_strings.add(member)
+
+ fw(".. data:: %s\n" % member)
+ # Avoid warnings about the member being included multiple times.
+ if member_visited:
+ fw(" :noindex:\n")
+ fw("\n")
+
try:
member_type, is_seq = context_type_map[member]
except KeyError:
raise SystemExit("Error: context key %r not found in context_type_map; update %s" % (member, __file__)) from None
fw(" :type: %s :class:`bpy.types.%s`\n\n" % ("sequence of " if is_seq else "", member_type))
- unique.add(member)
i += 1
# generate typemap...
- # for member in sorted(unique):
+ # for member in sorted(unique_context_strings):
# print(' "%s": ("", False),' % member)
- if len(context_type_map) > len(unique):
+ if len(context_type_map) > len(unique_context_strings):
warnings.warn(
"Some types are not used: %s" %
- str([member for member in context_type_map if member not in unique]))
+ str([member for member in context_type_map if member not in unique_context_strings]))
else:
pass # will have raised an error above