diff --git a/lib/obs.py b/lib/obs.py index 3d149ae..6f00e5b 100644 --- a/lib/obs.py +++ b/lib/obs.py @@ -148,12 +148,28 @@ class OBS: ] def _download(self, project, package, name, revision): + # the object might be deleted but we can only pass deleted=1 + # if it is actually deleted + deleted = 0 + while deleted < 2: + url = osc.core.makeurl( + self.url, + ["source", project, package, urllib.parse.quote(name)], + {"rev": revision, "expand": 1, "deleted": deleted if deleted else ()}, + ) + try: + osc.core.http_request("HEAD", url) + break + except Exception: + pass + deleted += 1 + url = osc.core.makeurl( - self.url, - ["source", project, package, urllib.parse.quote(name)], - {"rev": revision, "expand": 1}, - ) - return osc.core.http_GET(url) + self.url, + ["source", project, package, urllib.parse.quote(name)], + {"rev": revision, "expand": 1, "deleted": 1 if deleted else ()}, + ) + return osc.core.http_request("GET", url) def download( self,