Fix mypy issues

This commit is contained in:
Jared Dillard
2025-08-10 15:05:15 -07:00
parent bb75a8ba77
commit ad987f77f0
5 changed files with 48 additions and 34 deletions
+22 -15
View File
@@ -3,7 +3,7 @@ Document collector module for sphinx-llms-txt.
"""
import fnmatch
from typing import Any, Dict, List, Tuple
from typing import Any, Dict, List, Optional, Tuple
from sphinx.environment import BuildEnvironment
from sphinx.util import logging
@@ -16,8 +16,8 @@ class DocumentCollector:
def __init__(self):
self.page_titles: Dict[str, str] = {}
self.master_doc: str = None
self.env: BuildEnvironment = None
self.master_doc: Optional[str] = None
self.env: Optional[BuildEnvironment] = None
self.config: Dict[str, Any] = {}
self.app = None
@@ -60,7 +60,7 @@ class DocumentCollector:
else:
return [source_suffix] # String format
def _get_docname_suffix(self, docname: str, sources_dir) -> str:
def _get_docname_suffix(self, docname: str, sources_dir) -> Optional[str]:
"""
Determine the source suffix for a given docname by checking which
file exists.
@@ -102,7 +102,7 @@ class DocumentCollector:
return None
def get_page_order(self, sources_dir=None) -> List[Tuple[str, str]]:
def get_page_order(self, sources_dir=None) -> List[Tuple[str, Optional[str]]]:
"""Get the correct page order from the toctree structure.
Args:
@@ -114,7 +114,7 @@ class DocumentCollector:
if not self.env or not self.master_doc:
return []
page_order = []
page_order: List[Tuple[str, Optional[str]]] = []
visited = set()
def collect_from_toctree(docname: str):
@@ -126,7 +126,7 @@ class DocumentCollector:
# Add the current document with its suffix
if docname not in [doc for doc, _ in page_order]:
suffix = None
suffix: Optional[str] = None
if sources_dir:
suffix = self._get_docname_suffix(docname, sources_dir)
page_order.append((docname, suffix))
@@ -135,18 +135,21 @@ class DocumentCollector:
try:
# Look for toctree_includes which contains the direct children
if (
hasattr(self.env, "toctree_includes")
self.env
and hasattr(self.env, "toctree_includes")
and docname in self.env.toctree_includes
):
for child_docname in self.env.toctree_includes[docname]:
collect_from_toctree(child_docname)
collect_from_toctree(str(child_docname))
# Try to use dependencies to find related documents
elif (
hasattr(self.env, "dependencies")
self.env
and hasattr(self.env, "dependencies")
and docname in self.env.dependencies
):
# Extract the dependent documents from the dependencies dict
for child_docname in self.env.dependencies[docname]:
for child_docname_obj in self.env.dependencies[docname]:
child_docname = str(child_docname_obj)
# Only add documents actually in the document set
if (
hasattr(self.env, "all_docs")
@@ -154,7 +157,11 @@ class DocumentCollector:
):
collect_from_toctree(child_docname)
# Fallback to titles or other available references
elif hasattr(self.env, "titles") and hasattr(self.env, "all_docs"):
elif (
self.env
and hasattr(self.env, "titles")
and hasattr(self.env, "all_docs")
):
# Get all document names
all_docnames = list(self.env.all_docs.keys())
@@ -185,7 +192,7 @@ class DocumentCollector:
]
)
for docname in remaining:
suffix = None
suffix: Optional[str] = None
if sources_dir:
suffix = self._get_docname_suffix(docname, sources_dir)
page_order.append((docname, suffix))
@@ -193,8 +200,8 @@ class DocumentCollector:
return page_order
def filter_excluded_pages(
self, page_order: List[Tuple[str, str]]
) -> List[Tuple[str, str]]:
self, page_order: List[Tuple[str, Optional[str]]]
) -> List[Tuple[str, Optional[str]]]:
"""Filter out excluded pages from the page order."""
exclude_patterns = self.config.get("llms_txt_exclude")
if exclude_patterns: