archive: simplify PPA source package class

Signed-off-by: Dan Streetman <ddstreet@canonical.com>
This commit is contained in:
Dan Streetman 2020-07-21 13:52:03 -04:00
parent ae3837be1d
commit 04ae04e17b

View File

@ -31,6 +31,7 @@ from urllib.error import (URLError, HTTPError)
from urllib.parse import urlparse from urllib.parse import urlparse
from urllib.request import urlopen from urllib.request import urlopen
import codecs import codecs
import functools
import json import json
import os.path import os.path
import re import re
@ -612,24 +613,22 @@ class PersonalPackageArchiveSourcePackage(UbuntuSourcePackage):
if len(ppa) != 2: if len(ppa) != 2:
raise ValueError('Invalid PPA value "%s",' raise ValueError('Invalid PPA value "%s",'
'must be "<USER>/<PPA>"' % kwargs['ppa']) 'must be "<USER>/<PPA>"' % kwargs['ppa'])
self._set_ppa(ppa[0], ppa[1]) self._teamname = ppa[0]
self._ppaname = ppa[1]
self.masters = [] self.masters = []
def getArchive(self): @functools.cached_property
if not self._ppa: def team(self):
try: try:
self._team = PersonTeam.fetch(self._ppateam) return PersonTeam.fetch(self._teamname)
except KeyError: except KeyError:
raise ValueError('No user/team "%s" found on Launchpad' % self._ppateam) raise ValueError(f"No user/team '{self._teamname}' found on Launchpad")
self._ppa = self._team.getPPAByName(self._ppaname)
Logger.debug('Using PPA %s' % self._ppa.web_link)
return self._ppa
def _set_ppa(self, team, name): @functools.lru_cache
self._ppateam = team def getArchive(self):
self._ppaname = name ppa = self.team.getPPAByName(self._ppaname)
self._team = None Logger.debug(f"Using PPA '{ppa.web_link}'")
self._ppa = None return ppa
class UbuntuCloudArchiveSourcePackage(PersonalPackageArchiveSourcePackage): class UbuntuCloudArchiveSourcePackage(PersonalPackageArchiveSourcePackage):