D12627: worker: adapt _blockingreader to work around a python3.8.[0-1] bug (issue6444)
mharbison72 (Matt Harbison)
phabricator at mercurial-scm.org
Tue May 17 19:33:20 UTC 2022
mharbison72 created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
Python 3.8.0 is the latest I can load on Ubuntu 18.04, and I regularly hit the
TypeError because this function is missing. While it can be avoided by
disabling worker usage via config option, that's a bit obscure.
I'm limiting the function definition to the narrow range of affected pythons
because there were other bugs in this area that were worked around, that I don't
fully understand. See the bug report for discussions on why the narrow range,
and related commits working around other bugs.
REPOSITORY
rHG Mercurial
BRANCH
stable
REVISION DETAIL
https://phab.mercurial-scm.org/D12627
AFFECTED FILES
mercurial/worker.py
CHANGE DETAILS
diff --git a/mercurial/worker.py b/mercurial/worker.py
--- a/mercurial/worker.py
+++ b/mercurial/worker.py
@@ -78,6 +78,14 @@
# _wrapped.readinto(), since that is unbuffered. The unpickler is fine
# with just read() and readline(), so we don't need to implement it.
+ if (3, 8, 0) <= sys.version_info[:3] < (3, 8, 2):
+
+ # This is required for python 3.8, prior to 3.8.2. See issue6444.
+ def readinto(self, b):
+ data = self._wrapped.readall()
+ b[:] = data
+ return len(data)
+
def readline(self):
return self._wrapped.readline()
To: mharbison72, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list