diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2023-03-18 09:50:56 +0100 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2023-03-18 09:50:56 +0100 |
commit | f9bff8614be32f9c2c1a54da80eaed1365b49be3 (patch) | |
tree | fe60e095d333a3d4616ef18b6e64ec08d85c666e | |
parent | cfccd6fe5ae00d7e81cd755be55d51ff3bf17186 (diff) |
gnu: python-feedparser: Add Python >=3.9 compatibility.
* gnu/packages/patches/python-feedparser-missing-import.patch: New file.
* gnu/local.mk: Add it.
* gnu/packages/web.scm (python-feedparser): Use it.
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/patches/python-feedparser-missing-import.patch | 34 | ||||
-rw-r--r-- | gnu/packages/web.scm | 3 |
3 files changed, 37 insertions, 1 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index d63e288a48..a4954f9b35 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1636,6 +1636,7 @@ dist_patch_DATA = \ %D%/packages/patches/ppsspp-disable-upgrade-and-gold.patch \ %D%/packages/patches/pthreadpool-system-libraries.patch \ %D%/packages/patches/python-chai-drop-python2.patch \ + %D%/packages/patches/python-feedparser-missing-import.patch \ %D%/packages/patches/python-louvain-fix-test.patch \ %D%/packages/patches/python-random2-getrandbits-test.patch \ %D%/packages/patches/python-poppler-qt5-fix-build.patch \ diff --git a/gnu/packages/patches/python-feedparser-missing-import.patch b/gnu/packages/patches/python-feedparser-missing-import.patch new file mode 100644 index 0000000000..6ed504c1d2 --- /dev/null +++ b/gnu/packages/patches/python-feedparser-missing-import.patch @@ -0,0 +1,34 @@ +Since feedparser messes with Python’s internals by assigning +to __code__ it needs to import SGMLParseError too. It also +expects SGMLParseError, which was turned into AssertionError by +https://github.com/python/cpython/commit/e34bbfd61f405eef89e8aa50672b0b25022de320 + +--- feedparser-6.0.10/feedparser/sgml.py.orig 2023-03-18 09:24:50.976316932 +0100 ++++ feedparser-6.0.10/feedparser/sgml.py 2023-03-18 09:26:32.971928811 +0100 +@@ -28,6 +28,7 @@ + import re + + import sgmllib ++from sgmllib import SGMLParseError + + __all__ = [ + 'sgmllib', +@@ -41,6 +42,7 @@ + 'shorttagopen', + 'starttagopen', + 'endbracket', ++ 'SGMLParseError', + ] + + # sgmllib defines a number of module-level regular expressions that are +--- feedparser-6.0.10/feedparser/html.py.orig 2023-03-18 09:32:03.647114745 +0100 ++++ feedparser-6.0.10/feedparser/html.py 2023-03-18 09:46:05.021142671 +0100 +@@ -349,7 +349,7 @@ + + try: + return sgmllib.SGMLParser.parse_declaration(self, i) +- except sgmllib.SGMLParseError: ++ except AssertionError: + # Escape the doctype declaration and continue parsing. + self.handle_data('<') + return i+1 diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 6e79fe99b8..9f45d24716 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -4750,7 +4750,8 @@ their web site.") (method url-fetch) (uri (pypi-uri "feedparser" version ".tar.gz")) (sha256 - (base32 "0lfa1c8s6abnlksbwxdpq78bg4rb6603mcgarmip3kip8rglini7")))) + (base32 "0lfa1c8s6abnlksbwxdpq78bg4rb6603mcgarmip3kip8rglini7")) + (patches (search-patches "python-feedparser-missing-import.patch")))) (build-system python-build-system) (propagated-inputs (list python-sgmllib3k)) |