diff options
-rw-r--r-- | sphinx/ext/graphviz.py | 3 | ||||
-rw-r--r-- | sphinx/ext/imgmath.py | 3 | ||||
-rw-r--r-- | sphinx/transforms/post_transforms/images.py | 3 | ||||
-rw-r--r-- | sphinx/util/__init__.py | 14 |
4 files changed, 17 insertions, 6 deletions
diff --git a/sphinx/ext/graphviz.py b/sphinx/ext/graphviz.py index 27b64fbce..c21868a6f 100644 --- a/sphinx/ext/graphviz.py +++ b/sphinx/ext/graphviz.py @@ -12,7 +12,6 @@ import posixpath import re import subprocess -from hashlib import sha1 from os import path from subprocess import CalledProcessError, PIPE from typing import Any, Dict, List, Tuple @@ -25,7 +24,7 @@ import sphinx from sphinx.application import Sphinx from sphinx.errors import SphinxError from sphinx.locale import _, __ -from sphinx.util import logging +from sphinx.util import logging, sha1 from sphinx.util.docutils import SphinxDirective, SphinxTranslator from sphinx.util.fileutil import copy_asset from sphinx.util.i18n import search_image_for_language diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py index 4297ad182..2050e470e 100644 --- a/sphinx/ext/imgmath.py +++ b/sphinx/ext/imgmath.py @@ -14,7 +14,6 @@ import shutil import subprocess import sys import tempfile -from hashlib import sha1 from os import path from subprocess import CalledProcessError, PIPE from typing import Any, Dict, List, Tuple @@ -30,7 +29,7 @@ from sphinx.config import Config from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias from sphinx.errors import SphinxError from sphinx.locale import _, __ -from sphinx.util import logging +from sphinx.util import logging, sha1 from sphinx.util.math import get_node_equation_number, wrap_displaymath from sphinx.util.osutil import ensuredir from sphinx.util.png import read_png_depth, write_png_depth diff --git a/sphinx/transforms/post_transforms/images.py b/sphinx/transforms/post_transforms/images.py index d1b513b27..57b36b4b0 100644 --- a/sphinx/transforms/post_transforms/images.py +++ b/sphinx/transforms/post_transforms/images.py @@ -10,7 +10,6 @@ import os import re -from hashlib import sha1 from math import ceil from typing import Any, Dict, List, Tuple @@ -19,7 +18,7 @@ from docutils import nodes from sphinx.application import Sphinx from sphinx.locale import __ from sphinx.transforms import SphinxTransform -from sphinx.util import epoch_to_rfc1123, rfc1123_to_epoch +from sphinx.util import epoch_to_rfc1123, rfc1123_to_epoch, sha1 from sphinx.util import logging, requests from sphinx.util.images import guess_mimetype, get_image_extension, parse_data_uri from sphinx.util.osutil import ensuredir, movefile diff --git a/sphinx/util/__init__.py b/sphinx/util/__init__.py index eeee1248e..2a08821e1 100644 --- a/sphinx/util/__init__.py +++ b/sphinx/util/__init__.py @@ -186,6 +186,20 @@ def md5(data=b'', **kwargs): return hashlib.md5(data, **kwargs, usedforsecurity=False) # type: ignore +def sha1(data=b'', **kwargs): + """Wrapper around hashlib.sha1 + + Attempt call with 'usedforsecurity=False' if we get a ValueError + + See: https://github.com/sphinx-doc/sphinx/issues/7611 + """ + + try: + return hashlib.sha1(data, **kwargs) # type: ignore + except ValueError: + return hashlib.sha1(data, **kwargs, usedforsecurity=False) # type: ignore + + class DownloadFiles(dict): """A special dictionary for download files. |