[3.12] GH-101986: Support translation for Limited/Unstable API & Stable ABI (GH-107680) (#112940)

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
This commit is contained in:
Miss Islington (bot) 2023-12-10 20:23:14 +01:00 committed by GitHub
parent 68657e2b73
commit 78a5010a4e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 10 deletions

View file

@ -126,7 +126,7 @@ class Annotations:
f"Object type mismatch in limited API annotation " f"Object type mismatch in limited API annotation "
f"for {name}: {record['role']!r} != {objtype!r}") f"for {name}: {record['role']!r} != {objtype!r}")
stable_added = record['added'] stable_added = record['added']
message = ' Part of the ' message = sphinx_gettext(' Part of the ')
emph_node = nodes.emphasis(message, message, emph_node = nodes.emphasis(message, message,
classes=['stableabi']) classes=['stableabi'])
ref_node = addnodes.pending_xref( ref_node = addnodes.pending_xref(
@ -134,40 +134,40 @@ class Annotations:
reftype='ref', refexplicit="False") reftype='ref', refexplicit="False")
struct_abi_kind = record['struct_abi_kind'] struct_abi_kind = record['struct_abi_kind']
if struct_abi_kind in {'opaque', 'members'}: if struct_abi_kind in {'opaque', 'members'}:
ref_node += nodes.Text('Limited API') ref_node += nodes.Text(sphinx_gettext('Limited API'))
else: else:
ref_node += nodes.Text('Stable ABI') ref_node += nodes.Text(sphinx_gettext('Stable ABI'))
emph_node += ref_node emph_node += ref_node
if struct_abi_kind == 'opaque': if struct_abi_kind == 'opaque':
emph_node += nodes.Text(' (as an opaque struct)') emph_node += nodes.Text(sphinx_gettext(' (as an opaque struct)'))
elif struct_abi_kind == 'full-abi': elif struct_abi_kind == 'full-abi':
emph_node += nodes.Text(' (including all members)') emph_node += nodes.Text(sphinx_gettext(' (including all members)'))
if record['ifdef_note']: if record['ifdef_note']:
emph_node += nodes.Text(' ' + record['ifdef_note']) emph_node += nodes.Text(' ' + record['ifdef_note'])
if stable_added == '3.2': if stable_added == '3.2':
# Stable ABI was introduced in 3.2. # Stable ABI was introduced in 3.2.
pass pass
else: else:
emph_node += nodes.Text(f' since version {stable_added}') emph_node += nodes.Text(sphinx_gettext(' since version %s') % stable_added)
emph_node += nodes.Text('.') emph_node += nodes.Text('.')
if struct_abi_kind == 'members': if struct_abi_kind == 'members':
emph_node += nodes.Text( emph_node += nodes.Text(
' (Only some members are part of the stable ABI.)') sphinx_gettext(' (Only some members are part of the stable ABI.)'))
node.insert(0, emph_node) node.insert(0, emph_node)
# Unstable API annotation. # Unstable API annotation.
if name.startswith('PyUnstable'): if name.startswith('PyUnstable'):
warn_node = nodes.admonition( warn_node = nodes.admonition(
classes=['unstable-c-api', 'warning']) classes=['unstable-c-api', 'warning'])
message = 'This is ' message = sphinx_gettext('This is ')
emph_node = nodes.emphasis(message, message) emph_node = nodes.emphasis(message, message)
ref_node = addnodes.pending_xref( ref_node = addnodes.pending_xref(
'Unstable API', refdomain="std", 'Unstable API', refdomain="std",
reftarget='unstable-c-api', reftarget='unstable-c-api',
reftype='ref', refexplicit="False") reftype='ref', refexplicit="False")
ref_node += nodes.Text('Unstable API') ref_node += nodes.Text(sphinx_gettext('Unstable API'))
emph_node += ref_node emph_node += ref_node
emph_node += nodes.Text('. It may change without warning in minor releases.') emph_node += nodes.Text(sphinx_gettext('. It may change without warning in minor releases.'))
warn_node += emph_node warn_node += emph_node
node.insert(0, warn_node) node.insert(0, warn_node)

View file

@ -9,6 +9,16 @@ In extensions/pyspecific.py:
In extensions/c_annotations.py: In extensions/c_annotations.py:
{% trans %} Part of the {% endtrans %}
{% trans %}Limited API{% endtrans %}
{% trans %}Stable ABI{% endtrans %}
{% trans %} (as an opaque struct){% endtrans %}
{% trans %} (including all members){% endtrans %}
{% trans %} since version %s{% endtrans %}
{% trans %} (Only some members are part of the stable ABI.){% endtrans %}
{% trans %}This is {% endtrans %}
{% trans %}Unstable API{% endtrans %}
{% trans %}. It may change without warning in minor releases.{% endtrans %}
{% trans %}Return value: Always NULL.{% endtrans %} {% trans %}Return value: Always NULL.{% endtrans %}
{% trans %}Return value: New reference.{% endtrans %} {% trans %}Return value: New reference.{% endtrans %}
{% trans %}Return value: Borrowed reference.{% endtrans %} {% trans %}Return value: Borrowed reference.{% endtrans %}