summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Bavier <bavier@posteo.net>2024-11-19 23:34:15 -0600
committerEric Bavier <bavier@posteo.net>2024-11-20 00:03:01 -0600
commitc5c7def1da89a5fc518dd96d2430fe1749041d29 (patch)
tree9b9af47782c5f3361d2bd79e4b9d2f7431a90a61
parent188fee428f7725751eadd8bcfa822c59990bdc3d (diff)
gnu: python-sphobjinv: Update to 2.3.1.1.
* gnu/packages/patches/python-sphobjinv-defer-ssl-import.patch: New patch. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/sphinx.scm (python-sphobjinv): Update to 2.3.1.1. [source]: Use patch. [arguments]: Replace check phase. [native-inputs]: New field. [propagated-inputs]: Remove python-fuzzywuzzy and python-levenshtein. Change-Id: Id60f45b222f286c8db55e9ce11378cf5ba82c603
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/patches/python-sphobjinv-defer-ssl-import.patch34
-rw-r--r--gnu/packages/sphinx.scm20
3 files changed, 51 insertions, 4 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 7b09b61d8c6..265e70101c2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1934,6 +1934,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-pypdf-annotate-tests-appropriately.patch \
%D%/packages/patches/python-sip-include-dirs.patch \
%D%/packages/patches/python-sgmllib3k-assertions.patch \
+ %D%/packages/patches/python-sphobjinv-defer-ssl-import.patch \
%D%/packages/patches/python-sphinx-prompt-docutils-0.19.patch \
%D%/packages/patches/python-typeguard-python3.10.patch \
%D%/packages/patches/python-uqbar-python3.10.patch \
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 00000000000..96c2c897034
--- /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):
diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index 31f53cf377d..191ebd268b0 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -1092,18 +1092,30 @@ executed during the Sphinx build process.")
(define-public python-sphobjinv
(package
(name "python-sphobjinv")
- (version "2.0.1")
+ (version "2.3.1.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "sphobjinv" version))
(sha256
(base32
- "126lgm54c94ay3fci512ap4l607gak90pbz0fk98syxvj5izrrzx"))))
+ "10x4g92agj6aai0lj0xpcx58zlm1zamzws1w9dczsl1izpz07ij7"))
+ (patches (search-patches
+ "python-sphobjinv-defer-ssl-import.patch"))))
(build-system python-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "pytest")))))))
+ (native-inputs
+ (list python-dictdiffer python-pytest python-pytest-check
+ python-sphinx python-stdio-mgr))
(propagated-inputs
- (list python-attrs python-certifi python-fuzzywuzzy
- python-jsonschema python-levenshtein))
+ (list python-attrs python-certifi python-jsonschema))
(home-page "https://github.com/bskinn/sphobjinv")
(synopsis "Sphinx cross-reference tool")
(description "Sphinx objects.inv inspection/manipulation tool.")