Mercurial > public > mercurial-scm > hg
comparison mercurial/util.py @ 52886:abcfb4ce132e
py-compat: backed out changeset 7ca9c05ec335
This currently fails on 3.8 with the following error::
fatal: fetching library from `hg` failed with 1:
Traceback (most recent call last):
File "/tmp/hgtests.hus0o5qa/install/bin/hg", line 61, in <module>
dispatch.run()
File "/opt/vendor/pyenv/pyenv-2.4.13/versions/3.8.19/lib/python3.8/importlib/util.py", line 245, in __getattribute__
self.__spec__.loader.exec_module(self)
File "<frozen importlib._bootstrap_external>", line 843, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/tmp/hgtests.hus0o5qa/install/lib/python3.8/site-packages/mercurial/dispatch.py", line 758, in <module>
class lazyaliasentry:
File "/tmp/hgtests.hus0o5qa/install/lib/python3.8/site-packages/mercurial/dispatch.py", line 769, in lazyaliasentry
@util.propertycache
File "/opt/vendor/pyenv/pyenv-2.4.13/versions/3.8.19/lib/python3.8/importlib/util.py", line 245, in __getattribute__
self.__spec__.loader.exec_module(self)
File "<frozen importlib._bootstrap_external>", line 843, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/tmp/hgtests.hus0o5qa/install/lib/python3.8/site-packages/mercurial/util.py", line 1360, in <module>
class sortdict(collections.OrderedDict[_KT, _VT]):
TypeError: 'type' object is not subscriptable
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sat, 15 Feb 2025 14:11:43 +0100 |
parents | f4dd447e6efd |
children | acaf6bad6b89 |
comparison
equal
deleted
inserted
replaced
52885:f4dd447e6efd | 52886:abcfb4ce132e |
---|---|
92 from typing_extensions import ( | 92 from typing_extensions import ( |
93 Self, | 93 Self, |
94 ) | 94 ) |
95 | 95 |
96 _Tcow = TypeVar('_Tcow', bound="cow") | 96 _Tcow = TypeVar('_Tcow', bound="cow") |
97 | |
98 _KT = TypeVar("_KT") | |
99 """An unconstrained key type for container classes (see typing.KT).""" | |
100 | |
101 _VT = TypeVar("_VT") | |
102 """An unconstrained value type for container classes (see typing.VT).""" | |
103 | 97 |
104 base85: intmod.Base85 = policy.importmod('base85') | 98 base85: intmod.Base85 = policy.importmod('base85') |
105 osutil = policy.importmod('osutil') | 99 osutil = policy.importmod('osutil') |
106 | 100 |
107 b85decode = base85.b85decode | 101 b85decode = base85.b85decode |
1355 """always do a cheap copy""" | 1349 """always do a cheap copy""" |
1356 self._copied = getattr(self, '_copied', 0) + 1 | 1350 self._copied = getattr(self, '_copied', 0) + 1 |
1357 return self | 1351 return self |
1358 | 1352 |
1359 | 1353 |
1360 class sortdict(collections.OrderedDict[_KT, _VT]): | 1354 class sortdict(collections.OrderedDict): |
1361 """a simple sorted dictionary | 1355 """a simple sorted dictionary |
1362 | 1356 |
1363 >>> d1 = sortdict([(b'a', 0), (b'b', 1)]) | 1357 >>> d1 = sortdict([(b'a', 0), (b'b', 1)]) |
1364 >>> d2 = d1.copy() | 1358 >>> d2 = d1.copy() |
1365 >>> list(d2.items()) | 1359 >>> list(d2.items()) |
1370 >>> d1.insert(1, b'a.5', 0.5) | 1364 >>> d1.insert(1, b'a.5', 0.5) |
1371 >>> list(d1.items()) | 1365 >>> list(d1.items()) |
1372 [('a', 0), ('a.5', 0.5), ('b', 1)] | 1366 [('a', 0), ('a.5', 0.5), ('b', 1)] |
1373 """ | 1367 """ |
1374 | 1368 |
1375 def __setitem__(self, key: _KT, value: _VT) -> None: | 1369 def __setitem__(self, key, value): |
1376 if key in self: | 1370 if key in self: |
1377 del self[key] | 1371 del self[key] |
1378 super().__setitem__(key, value) | 1372 super().__setitem__(key, value) |
1379 | 1373 |
1380 if pycompat.ispypy: | 1374 if pycompat.ispypy: |
1385 for k, v in src: | 1379 for k, v in src: |
1386 self[k] = v | 1380 self[k] = v |
1387 for k in f: | 1381 for k in f: |
1388 self[k] = f[k] | 1382 self[k] = f[k] |
1389 | 1383 |
1390 def insert(self, position: int, key: _KT, value: _VT): | 1384 def insert(self, position, key, value): |
1391 for i, (k, v) in enumerate(list(self.items())): | 1385 for i, (k, v) in enumerate(list(self.items())): |
1392 if i == position: | 1386 if i == position: |
1393 self[key] = value | 1387 self[key] = value |
1394 if i >= position: | 1388 if i >= position: |
1395 del self[k] | 1389 del self[k] |