Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #7418: std domain: duplication warning for glossary terms is case insensitive #7440

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGES
Expand Up @@ -7,6 +7,8 @@ Dependencies
Incompatible changes
--------------------

* #7418: std domain: :rst:dir:`term` role becomes case sensitive

Deprecated
----------

Expand All @@ -17,6 +19,7 @@ Bugs fixed
----------

* #7428: py domain: a reference to class ``None`` emits a nitpicky warning
* #7418: std domain: duplication warning for glossary terms is case insensitive
* #7438: C++, fix merging overloaded functions in parallel builds.
* #7422: autodoc: fails with ValueError when using autodoc_mock_imports

Expand Down
2 changes: 1 addition & 1 deletion doc/extdev/index.rst
Expand Up @@ -27,7 +27,7 @@ Discovery of builders by entry point

.. versionadded:: 1.6

:term:`Builder` extensions can be discovered by means of `entry points`_ so
:term:`builder` extensions can be discovered by means of `entry points`_ so
that they do not have to be listed in the :confval:`extensions` configuration
value.

Expand Down
4 changes: 2 additions & 2 deletions sphinx/domains/std.py
Expand Up @@ -305,7 +305,7 @@ def make_glossary_term(env: "BuildEnvironment", textnodes: Iterable[Node], index
term['ids'].append(node_id)

std = cast(StandardDomain, env.get_domain('std'))
std.note_object('term', termtext.lower(), node_id, location=term)
std.note_object('term', termtext, node_id, location=term)

# add an index entry too
indexnode = addnodes.index()
Expand Down Expand Up @@ -565,7 +565,7 @@ class StandardDomain(Domain):
# links to tokens in grammar productions
'token': TokenXRefRole(),
# links to terms in glossary
'term': XRefRole(lowercase=True, innernodeclass=nodes.inline,
'term': XRefRole(innernodeclass=nodes.inline,
warn_dangling=True),
# links to headings or arbitrary labels
'ref': XRefRole(lowercase=True, innernodeclass=nodes.inline,
Expand Down
8 changes: 4 additions & 4 deletions tests/test_domain_std.py
Expand Up @@ -99,7 +99,7 @@ def test_glossary(app):
text = (".. glossary::\n"
"\n"
" term1\n"
" term2\n"
" TERM2\n"
" description\n"
"\n"
" term3 : classifier\n"
Expand All @@ -114,7 +114,7 @@ def test_glossary(app):
assert_node(doctree, (
[glossary, definition_list, ([definition_list_item, ([term, ("term1",
index)],
[term, ("term2",
[term, ("TERM2",
index)],
definition)],
[definition_list_item, ([term, ("term3",
Expand All @@ -127,7 +127,7 @@ def test_glossary(app):
assert_node(doctree[0][0][0][0][1],
entries=[("single", "term1", "term-term1", "main", None)])
assert_node(doctree[0][0][0][1][1],
entries=[("single", "term2", "term-term2", "main", None)])
entries=[("single", "TERM2", "term-TERM2", "main", None)])
assert_node(doctree[0][0][0][2],
[definition, nodes.paragraph, "description"])
assert_node(doctree[0][0][1][0][1],
Expand All @@ -143,7 +143,7 @@ def test_glossary(app):
# index
objects = list(app.env.get_domain("std").get_objects())
assert ("term1", "term1", "term", "index", "term-term1", -1) in objects
assert ("term2", "term2", "term", "index", "term-term2", -1) in objects
assert ("TERM2", "TERM2", "term", "index", "term-TERM2", -1) in objects
assert ("term3", "term3", "term", "index", "term-term3", -1) in objects
assert ("term4", "term4", "term", "index", "term-term4", -1) in objects

Expand Down