From bca9e48348706bb67ef40ec920ec554238ca0d87 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Tue, 31 May 2022 18:24:17 +0100 Subject: [PATCH 1/3] Ensure positions always sort --- sphinx/builders/gettext.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/builders/gettext.py b/sphinx/builders/gettext.py index 0d7d0ac11d8..0f38ea7f5ed 100644 --- a/sphinx/builders/gettext.py +++ b/sphinx/builders/gettext.py @@ -57,7 +57,7 @@ def add(self, msg: str, origin: Union[Element, "MsgOrigin"]) -> None: def __iter__(self) -> Generator[Message, None, None]: for message in self.messages: - positions = sorted(set((source, line) for source, line, uuid + positions = sorted(set((source, line or -1) for source, line, uuid in self.metadata[message])) uuids = [uuid for source, line, uuid in self.metadata[message]] yield Message(message, positions, uuids) From 34a82968597ea581b3f251aa9147a8e6e438fda3 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Tue, 31 May 2022 18:37:28 +0100 Subject: [PATCH 2/3] Add a warning --- sphinx/builders/gettext.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sphinx/builders/gettext.py b/sphinx/builders/gettext.py index 0f38ea7f5ed..4aa3cf5d433 100644 --- a/sphinx/builders/gettext.py +++ b/sphinx/builders/gettext.py @@ -53,11 +53,15 @@ def add(self, msg: str, origin: Union[Element, "MsgOrigin"]) -> None: if msg not in self.metadata: # faster lookup in hash self.messages.append(msg) self.metadata[msg] = [] - self.metadata[msg].append((origin.source, origin.line, origin.uid)) # type: ignore + line = origin.line + if line is None: + logger.warning(f"Node {origin!r} has no line number, using '-1'.") + line = -1 + self.metadata[msg].append((origin.source, line, origin.uid)) # type: ignore def __iter__(self) -> Generator[Message, None, None]: for message in self.messages: - positions = sorted(set((source, line or -1) for source, line, uuid + positions = sorted(set((source, line) for source, line, uuid in self.metadata[message])) uuids = [uuid for source, line, uuid in self.metadata[message]] yield Message(message, positions, uuids) From a1ecf99b9fb75bfb74d891716958666d497bd153 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Wed, 1 Jun 2022 18:45:48 +0100 Subject: [PATCH 3/3] Remove warning --- sphinx/builders/gettext.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sphinx/builders/gettext.py b/sphinx/builders/gettext.py index 4aa3cf5d433..92edcc9f2dd 100644 --- a/sphinx/builders/gettext.py +++ b/sphinx/builders/gettext.py @@ -55,7 +55,6 @@ def add(self, msg: str, origin: Union[Element, "MsgOrigin"]) -> None: self.metadata[msg] = [] line = origin.line if line is None: - logger.warning(f"Node {origin!r} has no line number, using '-1'.") line = -1 self.metadata[msg].append((origin.source, line, origin.uid)) # type: ignore