summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/python-sphobjinv-defer-ssl-import.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/python-sphobjinv-defer-ssl-import.patch')
-rw-r--r--gnu/packages/patches/python-sphobjinv-defer-ssl-import.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/gnu/packages/patches/python-sphobjinv-defer-ssl-import.patch b/gnu/packages/patches/python-sphobjinv-defer-ssl-import.patch
new file mode 100644
index 0000000000..96c2c89703
--- /dev/null
+++ b/gnu/packages/patches/python-sphobjinv-defer-ssl-import.patch
@@ -0,0 +1,34 @@
+See suggestion in https://github.com/bskinn/sphobjinv/issues/275
+
+This prevents the module from creating an ssl context upon import, when,
+during a build especially, a certificate file may not be present. Otherwise
+module import would fail.
+
+--- a/src/sphobjinv/inventory.py
++++ b/src/sphobjinv/inventory.py
+@@ -30,7 +30,6 @@ Sphinx |objects.inv| files.
+ """
+
+ import re
+-import ssl
+ import urllib.request as urlrq
+ from zlib import error as zlib_error
+
+@@ -218,8 +217,15 @@ class Inventory:
+ #: zlib compression line for v2 |objects.inv| header
+ header_zlib = "# The remainder of this file is compressed using zlib."
+
+- # Private class member for SSL context, since context creation is slow(?)
+- _sslcontext = ssl.create_default_context(cafile=certifi.where())
++ # Private class member for SSL context
++ _sslcontext_ = None
++
++ @property
++ def _sslcontext(self):
++ import ssl
++ if not self._sslcontext_:
++ self._sslcontext_ = ssl.create_default_context(cafile=certifi.where())
++ return self._sslcontext_
+
+ @property
+ def count(self):