Skip to content

Commit dba7c73

Browse files
kclowesnjgheorghita
authored andcommitted
Fix bug in package id and release id fetching strategy
1 parent e2c6fce commit dba7c73

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

web3/pm.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,9 @@ def deploy_new_instance(cls, w3):
217217
pass
218218

219219

220+
BATCH_SIZE = 100
221+
222+
220223
class SimpleRegistry(ERC1319Registry):
221224
"""
222225
This class represents an instance of the `Solidity Reference Registry implementation
@@ -245,11 +248,15 @@ def _get_package_name(self, package_id: bytes) -> str:
245248
@to_tuple
246249
def _get_all_package_ids(self) -> Iterable[Tuple[bytes]]:
247250
num_packages = self._num_package_ids()
251+
pointer = 0
252+
package_ids = []
253+
while pointer < num_packages:
254+
new_ids, pointer = self.registry.functions.getAllPackageIds(
255+
pointer,
256+
(pointer + BATCH_SIZE)
257+
).call()
258+
package_ids.append(new_ids)
248259
# Logic here b/c Solidity Reference Registry implementation returns ids in reverse order
249-
package_ids = [
250-
self.registry.functions.getAllPackageIds(index, (index + 4)).call()[0]
251-
for index in range(0, num_packages, 4)
252-
]
253260
for package_id in concat([x[::-1] for x in package_ids]):
254261
yield package_id
255262

@@ -259,13 +266,16 @@ def _get_release_id(self, package_name: str, version: str) -> bytes:
259266
@to_tuple
260267
def _get_all_release_ids(self, package_name: str) -> Iterable[Tuple[bytes]]:
261268
num_releases = self._num_release_ids(package_name)
269+
pointer = 0
270+
release_ids = []
271+
while pointer < num_releases:
272+
new_ids, pointer = self.registry.functions.getAllReleaseIds(
273+
package_name,
274+
pointer,
275+
(pointer + BATCH_SIZE)
276+
).call()
277+
release_ids.append(new_ids)
262278
# Logic here b/c Solidity Reference Registry implementation returns ids in reverse order
263-
release_ids = [
264-
self.registry.functions.getAllReleaseIds(
265-
package_name, index, (index + 4)
266-
).call()[0]
267-
for index in range(0, num_releases, 4)
268-
]
269279
for release_id in concat([x[::-1] for x in release_ids]):
270280
yield release_id
271281

0 commit comments

Comments
 (0)