support srearch template with extended-length path

some template file contains forward slash in the path, which is not supported by the extended path on windows.

see also:
 - https://github.com/bazelbuild/rules_python/issues/680
 - https://stackoverflow.com/questions/21194530/what-does-mean-when-prepended-to-a-file-path
This commit is contained in:
dhmemi 2022-04-22 15:14:36 +08:00
parent 068f802df9
commit eb488031ba

View File

@ -1,6 +1,7 @@
"""Glue code for the jinja2 templating engine."""
from os import path
import os
from pprint import pformat
from typing import TYPE_CHECKING, Any, Callable, Dict, Iterator, List, Tuple, Union
@ -117,6 +118,9 @@ class SphinxFileSystemLoader(FileSystemLoader):
def get_source(self, environment: Environment, template: str) -> Tuple[str, str, Callable]:
for searchpath in self.searchpath:
filename = path.join(searchpath, template)
# Repalce '/' by os.sep if The searchpath is an extended-length path.
if filename.startswith("\\\\?\\"):
filename = filename.replace('/', os.sep)
f = open_if_exists(filename)
if f is None:
continue