summaryrefslogtreecommitdiffstats
path: root/Doc/tools
diff options
context:
space:
mode:
authorHugo van Kemenade <1324225+hugovk@users.noreply.github.com>2024-04-16 15:56:15 (GMT)
committerGitHub <noreply@github.com>2024-04-16 15:56:15 (GMT)
commit3284b84c437e3b0b0a052471e8a6aabc528fc651 (patch)
treeb9759995ef0b673c5cbc970ae1c6bada5e0f0025 /Doc/tools
parentdf0f3a738f8bd414e0a3164ad65f71acfa83c085 (diff)
downloadcpython-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>
Diffstat (limited to 'Doc/tools')
-rw-r--r--Doc/tools/extensions/c_annotations.py20
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)