Skip to content

Commit

Permalink
Explicitly list files to render in conf.py (#2415)
Browse files Browse the repository at this point in the history
  • Loading branch information
AA-Turner authored Mar 14, 2022
1 parent ce2ef04 commit 0bd5131
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 17 deletions.
35 changes: 18 additions & 17 deletions conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@

sys.path.append(str(Path("pep_sphinx_extensions").absolute()))

# Add 'include_patterns' as a config variable
from sphinx.config import Config
Config.config_values['include_patterns'] = [], 'env', []
del Config

# -- Project information -----------------------------------------------------

project = "PEPs"
Expand All @@ -25,24 +30,20 @@
}

# List of patterns (relative to source dir) to ignore when looking for source files.
include_patterns = [
# Required for Sphinx
"contents.rst",
# PEP files
"pep-????.rst",
"pep-????.txt",
# PEP ancillary files
"pep-????/*.rst",
# Documentation
"docs/*.rst",
]
exclude_patterns = [
# Windows:
"Thumbs.db",
".DS_Store",
# Python:
".venv",
"venv",
"requirements.txt",
# Sphinx:
"build",
"output.txt", # Link-check output
# PEPs:
"pep-0012",
"README.rst",
"CONTRIBUTING.rst",
"pep_sphinx_extensions/LICENCE.rst",
# Miscellaneous
".codespell",
# PEP Template
"pep-0012/pep-NNNN.rst",
]

# -- Options for HTML output -------------------------------------------------
Expand Down
32 changes: 32 additions & 0 deletions pep_sphinx_extensions/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

from docutils.writers.html5_polyglot import HTMLTranslator
from sphinx import environment
from sphinx import project

from pep_sphinx_extensions.pep_processor.html import pep_html_builder
from pep_sphinx_extensions.pep_processor.html import pep_html_translator
Expand All @@ -16,6 +17,37 @@

if TYPE_CHECKING:
from sphinx.application import Sphinx
from sphinx.config import Config


def find_files(self: environment.BuildEnvironment, config: Config, _b) -> None:
"""Find all pep source files."""
import fnmatch
from pathlib import Path

root = Path(self.project.srcdir).absolute()
self.project.docnames = set()
for pattern in config.include_patterns:
for path in root.glob(pattern):
filename = str(path.relative_to(root))
if any(fnmatch.fnmatch(filename, pattern) for pattern in config.exclude_patterns):
continue

doc_name = self.project.path2doc(filename)
if not doc_name:
continue

if doc_name not in self.project.docnames:
self.project.docnames.add(doc_name)
continue

other_files = [str(f.relative_to(root)) for f in root.glob(f"{doc_name}.*")]
project.logger.warning(
f'multiple files found for the document "{doc_name}": {other_files!r}\n'
f'Use {self.doc2path(doc_name)!r} for the build.', once=True)


environment.BuildEnvironment.find_files = find_files


def _depart_maths():
Expand Down

0 comments on commit 0bd5131

Please sign in to comment.