diff options
author | Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> | 2024-04-16 15:56:15 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-16 15:56:15 (GMT) |
commit | 3284b84c437e3b0b0a052471e8a6aabc528fc651 (patch) | |
tree | b9759995ef0b673c5cbc970ae1c6bada5e0f0025 | |
parent | df0f3a738f8bd414e0a3164ad65f71acfa83c085 (diff) | |
download | cpython-3284b84c437e3b0b0a052471e8a6aabc528fc651.zip cpython-3284b84c437e3b0b0a052471e8a6aabc528fc651.tar.gz cpython-3284b84c437e3b0b0a052471e8a6aabc528fc651.tar.bz2 |
Docs: Add classes to C API return value annotations (#117926)
Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
-rw-r--r-- | Doc/tools/extensions/c_annotations.py | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/Doc/tools/extensions/c_annotations.py b/Doc/tools/extensions/c_annotations.py index a8b6d89..abd0a8c 100644 --- a/Doc/tools/extensions/c_annotations.py +++ b/Doc/tools/extensions/c_annotations.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- """ c_annotations.py ~~~~~~~~~~~~~~~~ @@ -34,11 +33,10 @@ from sphinx.domains.c import CObject REST_ROLE_MAP = { 'function': 'func', - 'var': 'data', - 'type': 'type', 'macro': 'macro', - 'type': 'type', 'member': 'member', + 'type': 'type', + 'var': 'data', } @@ -63,7 +61,7 @@ class RCEntry: class Annotations: def __init__(self, refcount_filename, stable_abi_file): self.refcount_data = {} - with open(refcount_filename, 'r') as fp: + with open(refcount_filename, encoding='utf8') as fp: for line in fp: line = line.strip() if line[:1] in ("", "#"): @@ -71,7 +69,7 @@ class Annotations: continue parts = line.split(":", 4) if len(parts) != 5: - raise ValueError("Wrong field count in %r" % line) + raise ValueError(f"Wrong field count in {line!r}") function, type, arg, refcount, comment = parts # Get the entry, creating it if needed: try: @@ -91,9 +89,8 @@ class Annotations: entry.result_refs = refcount self.stable_abi_data = {} - with open(stable_abi_file, 'r') as fp: + with open(stable_abi_file, encoding='utf8') as fp: for record in csv.DictReader(fp): - role = record['role'] name = record['name'] self.stable_abi_data[name] = record @@ -180,13 +177,17 @@ class Annotations: continue elif not entry.result_type.endswith("Object*"): continue + classes = ['refcount'] if entry.result_refs is None: rc = sphinx_gettext('Return value: Always NULL.') + classes.append('return_null') elif entry.result_refs: rc = sphinx_gettext('Return value: New reference.') + classes.append('return_new_ref') else: rc = sphinx_gettext('Return value: Borrowed reference.') - node.insert(0, nodes.emphasis(rc, rc, classes=['refcount'])) + classes.append('return_borrowed_ref') + node.insert(0, nodes.emphasis(rc, rc, classes=classes)) def init_annotations(app): @@ -228,6 +229,7 @@ def setup(app): 'stableabi': directives.flag, } old_handle_signature = CObject.handle_signature + def new_handle_signature(self, sig, signode): signode.parent['stableabi'] = 'stableabi' in self.options return old_handle_signature(self, sig, signode) |