PyDoc: suppress duplicate object description warning
RenderEngine.render is both a method and an attribute, while this should be avoided it's not causing a problem in practice so quiet the warning when generating docs. Sphinx now builds docs without any warnings.
This commit is contained in:
parent
d46647040d
commit
57b87feda1
|
@ -372,6 +372,23 @@ RNA_BLACKLIST = {
|
|||
"PreferencesSystem": {"language", }
|
||||
}
|
||||
|
||||
# Support suppressing errors when attributes collide with methods,
|
||||
# use `noindex` on the attributes / data declarations.
|
||||
#
|
||||
# NOTE: in general this should be avoided but changing it would break the API,
|
||||
# so explicitly suppress warnings instead.
|
||||
#
|
||||
# NOTE: Currently some API generation doesn't support this is it is not used yet,
|
||||
# see references to `RST_NOINDEX_ATTR` in code comments.
|
||||
#
|
||||
# A set of tuple identifiers: `(module, type, attr)`.
|
||||
RST_NOINDEX_ATTR = {
|
||||
# Render is both a method and an attribute, from looking into this
|
||||
# having both doesn't cause problems in practice since the `render` method
|
||||
# is registered and called from C code where the attribute is accessed from the instance.
|
||||
("bpy.types", "RenderEngine", "render"),
|
||||
}
|
||||
|
||||
MODULE_GROUPING = {
|
||||
"bmesh.types": (
|
||||
("Base Mesh Type", "-"),
|
||||
|
@ -747,10 +764,12 @@ def py_descr2sphinx(ident, fw, descr, module_name, type_name, identifier):
|
|||
|
||||
if type(descr) == GetSetDescriptorType:
|
||||
fw(ident + ".. attribute:: %s\n\n" % identifier)
|
||||
# NOTE: `RST_NOINDEX_ATTR` currently not supported (as it's not used).
|
||||
write_indented_lines(ident + " ", fw, doc, False)
|
||||
fw("\n")
|
||||
elif type(descr) == MemberDescriptorType: # same as above but use "data"
|
||||
fw(ident + ".. data:: %s\n\n" % identifier)
|
||||
# NOTE: `RST_NOINDEX_ATTR` currently not supported (as it's not used).
|
||||
write_indented_lines(ident + " ", fw, doc, False)
|
||||
fw("\n")
|
||||
elif type(descr) in {MethodDescriptorType, ClassMethodDescriptorType}:
|
||||
|
@ -793,6 +812,8 @@ def pyprop2sphinx(ident, fw, identifier, py_prop):
|
|||
fw(ident + ".. data:: %s\n\n" % identifier)
|
||||
else:
|
||||
fw(ident + ".. attribute:: %s\n\n" % identifier)
|
||||
|
||||
# NOTE: `RST_NOINDEX_ATTR` currently not supported (as it's not used).
|
||||
write_indented_lines(ident + " ", fw, py_prop.__doc__)
|
||||
fw("\n")
|
||||
if py_prop.fset is None:
|
||||
|
@ -1445,17 +1466,23 @@ def pyrna2sphinx(basepath):
|
|||
struct_blacklist = RNA_BLACKLIST.get(struct_id, ())
|
||||
|
||||
for prop in sorted_struct_properties:
|
||||
identifier = prop.identifier
|
||||
|
||||
# Support blacklisting props.
|
||||
if prop.identifier in struct_blacklist:
|
||||
if identifier in struct_blacklist:
|
||||
continue
|
||||
|
||||
type_descr = prop.get_type_description(class_fmt=":class:`%s`", collection_id=_BPY_PROP_COLLECTION_ID)
|
||||
# Read-only properties use "data" directive, variables properties use "attribute" directive.
|
||||
if "readonly" in type_descr:
|
||||
fw(" .. data:: %s\n\n" % prop.identifier)
|
||||
fw(" .. data:: %s\n" % identifier)
|
||||
else:
|
||||
fw(" .. attribute:: %s\n\n" % prop.identifier)
|
||||
fw(" .. attribute:: %s\n" % identifier)
|
||||
# Also write `noindex` on requerst.
|
||||
if ("bpy.types", struct_id, identifier) in RST_NOINDEX_ATTR:
|
||||
fw(" :noindex:\n")
|
||||
fw("\n")
|
||||
|
||||
if prop.description:
|
||||
write_indented_lines(" ", fw, prop.description, False)
|
||||
fw("\n")
|
||||
|
|
Loading…
Reference in New Issue