@@ -621,8 +621,12 @@ def get_romhacking_data(possible_metadata, session):
621621 metadata = []
622622 language = None
623623 version_hacks = read_version_file (possible_metadata )
624-
625- for (version , url ) in version_hacks :
624+ #loop that can iterate on the same place with a continue without next
625+ sentinel = object ()
626+ iterobj = iter (version_hacks )
627+ x = next (iterobj , sentinel )
628+ while x is not sentinel :
629+ (version , url ) = x
626630 try :
627631 response = session .get (url , headers = {'User-Agent' : 'Mozilla/5.0' })
628632 page = response .text
@@ -668,12 +672,15 @@ def get_romhacking_data(possible_metadata, session):
668672
669673 if remote_version != version :
670674 warn (f'warn: local \' { version } \' { link (possible_metadata .parent .as_uri (),"(open dir)" )} != remote \' { remote_version } \' { link (url , "(open url)" )} versions' )
675+ #advance loop, most exceptions exit the loop
676+ x = next (iterobj , sentinel )
671677 except (requests .exceptions .RequestException , AttributeError ) as e :
672678 if response .status_code == 403 :
673679 error ("error: blocked by cloudflare (403 Forbidden)" )
674680 elif response .status_code == 429 :
675681 error ("error: rate limited by cloudflare (429 Too Many Requests)" )
676- continue #have rate limiter not worth it to stop everythibg in this case
682+ #doesnt advance the loop, returns to retry later (the session has a limiter already)
683+ continue
677684 raise VersionFileURLError (possible_metadata , url )
678685 return (metadata , language )
679686
0 commit comments