mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge branch '1.7' into 4754_remove_unused_code
This commit is contained in:
commit
c9fcaa3c14
2
CHANGES
2
CHANGES
@ -29,6 +29,8 @@ Bugs fixed
|
|||||||
* #4574: vertical space before equation in latex
|
* #4574: vertical space before equation in latex
|
||||||
* #4720: message when an image is mismatched for builder is not clear
|
* #4720: message when an image is mismatched for builder is not clear
|
||||||
* #4655, #4684: Incomplete localization strings in Polish and Chinese
|
* #4655, #4684: Incomplete localization strings in Polish and Chinese
|
||||||
|
* #2286: Sphinx crashes when error is happens in rendering HTML pages
|
||||||
|
* #4688: Error to download remote images having long URL
|
||||||
* #4754: sphinx/pycode/__init__.py raises AttributeError
|
* #4754: sphinx/pycode/__init__.py raises AttributeError
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
|
@ -96,7 +96,7 @@ switch on line numbers for the individual block::
|
|||||||
Some more Ruby code.
|
Some more Ruby code.
|
||||||
|
|
||||||
The first line number can be selected with the ``lineno-start`` option. If
|
The first line number can be selected with the ``lineno-start`` option. If
|
||||||
present, ``linenos`` is automatically activated as well::
|
present, ``linenos`` flag is automatically activated::
|
||||||
|
|
||||||
.. code-block:: ruby
|
.. code-block:: ruby
|
||||||
:lineno-start: 10
|
:lineno-start: 10
|
||||||
|
@ -35,8 +35,9 @@ from sphinx.deprecation import RemovedInSphinx20Warning
|
|||||||
from sphinx.environment.adapters.asset import ImageAdapter
|
from sphinx.environment.adapters.asset import ImageAdapter
|
||||||
from sphinx.environment.adapters.indexentries import IndexEntries
|
from sphinx.environment.adapters.indexentries import IndexEntries
|
||||||
from sphinx.environment.adapters.toctree import TocTree
|
from sphinx.environment.adapters.toctree import TocTree
|
||||||
|
from sphinx.errors import ThemeError
|
||||||
from sphinx.highlighting import PygmentsBridge
|
from sphinx.highlighting import PygmentsBridge
|
||||||
from sphinx.locale import _, l_
|
from sphinx.locale import _, __, l_
|
||||||
from sphinx.search import js_index
|
from sphinx.search import js_index
|
||||||
from sphinx.theming import HTMLThemeFactory
|
from sphinx.theming import HTMLThemeFactory
|
||||||
from sphinx.util import jsonimpl, logging, status_iterator
|
from sphinx.util import jsonimpl, logging, status_iterator
|
||||||
@ -1016,6 +1017,9 @@ class StandaloneHTMLBuilder(Builder):
|
|||||||
"Please make sure all config values that contain "
|
"Please make sure all config values that contain "
|
||||||
"non-ASCII content are Unicode strings.", pagename)
|
"non-ASCII content are Unicode strings.", pagename)
|
||||||
return
|
return
|
||||||
|
except Exception as exc:
|
||||||
|
raise ThemeError(__("An error happened in rendering the page %s.\nReason: %r") %
|
||||||
|
(pagename, exc))
|
||||||
|
|
||||||
if not outfilename:
|
if not outfilename:
|
||||||
outfilename = self.get_outfilename(pagename)
|
outfilename = self.get_outfilename(pagename)
|
||||||
|
@ -30,6 +30,8 @@ if False:
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
MAX_FILENAME_LEN = 32
|
||||||
|
|
||||||
|
|
||||||
class BaseImageConverter(SphinxTransform):
|
class BaseImageConverter(SphinxTransform):
|
||||||
def apply(self):
|
def apply(self):
|
||||||
@ -66,16 +68,21 @@ class ImageDownloader(BaseImageConverter):
|
|||||||
|
|
||||||
def handle(self, node):
|
def handle(self, node):
|
||||||
# type: (nodes.Node) -> None
|
# type: (nodes.Node) -> None
|
||||||
basename = os.path.basename(node['uri'])
|
|
||||||
if '?' in basename:
|
|
||||||
basename = basename.split('?')[0]
|
|
||||||
if basename == '':
|
|
||||||
basename = sha1(node['uri'].encode("utf-8")).hexdigest()
|
|
||||||
dirname = node['uri'].replace('://', '/').translate({ord("?"): u"/",
|
|
||||||
ord("&"): u"/"})
|
|
||||||
ensuredir(os.path.join(self.imagedir, dirname))
|
|
||||||
path = os.path.join(self.imagedir, dirname, basename)
|
|
||||||
try:
|
try:
|
||||||
|
basename = os.path.basename(node['uri'])
|
||||||
|
if '?' in basename:
|
||||||
|
basename = basename.split('?')[0]
|
||||||
|
if basename == '' or len(basename) > MAX_FILENAME_LEN:
|
||||||
|
filename, ext = os.path.splitext(node['uri'])
|
||||||
|
basename = sha1(filename.encode("utf-8")).hexdigest() + ext
|
||||||
|
|
||||||
|
dirname = node['uri'].replace('://', '/').translate({ord("?"): u"/",
|
||||||
|
ord("&"): u"/"})
|
||||||
|
if len(dirname) > MAX_FILENAME_LEN:
|
||||||
|
dirname = sha1(dirname.encode('utf-8')).hexdigest()
|
||||||
|
ensuredir(os.path.join(self.imagedir, dirname))
|
||||||
|
path = os.path.join(self.imagedir, dirname, basename)
|
||||||
|
|
||||||
headers = {}
|
headers = {}
|
||||||
if os.path.exists(path):
|
if os.path.exists(path):
|
||||||
timestamp = ceil(os.stat(path).st_mtime)
|
timestamp = ceil(os.stat(path).st_mtime)
|
||||||
|
Loading…
Reference in New Issue
Block a user