py3: use array.array.{to,from}bytes() on py3
array.array.{to,from}string() still exists on py3, but they're
deprecated and generate warnings.
I've put the compat function in compat.pt for now. We can move into a
dedicated pycompat.py if we end up with a lot of py3 compat stuff.
--- a/hgext3rd/evolve/compat.py Thu Jul 11 14:31:32 2019 -0700
+++ b/hgext3rd/evolve/compat.py Tue Jul 09 10:56:42 2019 -0700
@@ -7,6 +7,7 @@
"""
import inspect
+import array
from mercurial import (
context,
@@ -15,6 +16,7 @@
mdiff,
obsolete,
obsutil,
+ pycompat,
repair,
scmutil,
util,
@@ -22,6 +24,13 @@
)
from mercurial.hgweb import hgweb_mod
+if pycompat.ispy3:
+ arraytobytes = array.array.tobytes
+ arrayfrombytes = array.array.frombytes
+else:
+ arraytobytes = array.array.tostring
+ arrayfrombytes = array.array.fromstring
+
# hg < 4.6 compat (c8e2d6ed1f9e)
try:
from mercurial import logcmdutil
--- a/hgext3rd/evolve/depthcache.py Thu Jul 11 14:31:32 2019 -0700
+++ b/hgext3rd/evolve/depthcache.py Tue Jul 09 10:56:42 2019 -0700
@@ -185,7 +185,7 @@
else:
headerdata = data[:self._cachekeysize]
self._cachekey = self._deserializecachekey(headerdata)
- self._data.fromstring(data[self._cachekeysize:])
+ compat.arrayfrombytes(self._data, data[self._cachekeysize:])
self._ondiskkey = self._cachekey
def save(self, repo):
@@ -201,7 +201,7 @@
cachefile = repo.cachevfs(self._filepath, 'w', atomictemp=True)
headerdata = self._serializecachekey()
cachefile.write(headerdata)
- cachefile.write(self._data.tostring())
+ cachefile.write(compat.arraytobytes(self._data))
cachefile.close()
self._ondiskkey = self._cachekey
except (IOError, OSError) as exc:
--- a/hgext3rd/evolve/firstmergecache.py Thu Jul 11 14:31:32 2019 -0700
+++ b/hgext3rd/evolve/firstmergecache.py Tue Jul 09 10:56:42 2019 -0700
@@ -122,7 +122,7 @@
else:
headerdata = data[:self._cachekeysize]
self._cachekey = self._deserializecachekey(headerdata)
- self._data.fromstring(data[self._cachekeysize:])
+ compat.arrayfrombytes(self._data, data[self._cachekeysize:])
self._ondiskkey = self._cachekey
def save(self, repo):
@@ -138,7 +138,7 @@
cachefile = repo.cachevfs(self._filepath, 'w', atomictemp=True)
headerdata = self._serializecachekey()
cachefile.write(headerdata)
- cachefile.write(self._data.tostring())
+ cachefile.write(compat.arraytobytes(self._data))
cachefile.close()
self._ondiskkey = self._cachekey
except (IOError, OSError) as exc:
--- a/hgext3rd/evolve/stablesort.py Thu Jul 11 14:31:32 2019 -0700
+++ b/hgext3rd/evolve/stablesort.py Tue Jul 09 10:56:42 2019 -0700
@@ -620,9 +620,9 @@
indexsizedata = data[offset:offset + S_INDEXSIZE.size]
indexsize = S_INDEXSIZE.unpack(indexsizedata)[0]
offset += S_INDEXSIZE.size
- self._index.fromstring(data[offset:offset + indexsize])
+ compat.arrayfrombytes(self._index, data[offset:offset + indexsize])
offset += indexsize
- self._data.fromstring(data[offset:])
+ compat.arrayfrombytes(self._data, data[offset:])
self._ondiskkey = self._cachekey
pass
@@ -638,8 +638,8 @@
# data to write
headerdata = self._serializecachekey()
- indexdata = self._index.tostring()
- data = self._data.tostring()
+ indexdata = compat.arraytobytes(self._index)
+ data = compat.arraytobytes(self._data)
indexsize = S_INDEXSIZE.pack(len(indexdata))
# writing