diff options
author | Campbell Barton <campbell@blender.org> | 2022-04-19 05:17:25 +0300 |
---|---|---|
committer | Campbell Barton <campbell@blender.org> | 2022-04-19 05:19:08 +0300 |
commit | 7e045094c1c6f7108833afe88f866572d0bd6d93 (patch) | |
tree | 91a18bc178327572b9551907734b02a9ae69eed6 /doc | |
parent | f4017415448fd38f879a2e4bbf7a9f0d85050f1e (diff) |
PyDoc: quiet warnings for duplicate members bpy.context
Diffstat (limited to 'doc')
-rw-r--r-- | doc/python_api/sphinx_doc_gen.py | 30 |
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 |