@@ -217,6 +217,9 @@ def deploy_new_instance(cls, w3):
217217 pass
218218
219219
220+ BATCH_SIZE = 100
221+
222+
220223class 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