archive: make SourcePackage ABC abstract class to enforce subclasses provide distribution

This commit is contained in:
Dan Streetman 2021-01-28 14:30:08 -05:00
parent 9792f5b95c
commit ee9b8756d9

View File

@ -38,6 +38,8 @@ import re
import subprocess import subprocess
import sys import sys
from abc import (ABC, abstractmethod)
from debian.changelog import Changelog from debian.changelog import Changelog
import debian.deb822 import debian.deb822
@ -111,13 +113,20 @@ class Dsc(debian.deb822.Dsc):
return True return True
class SourcePackage(object): class SourcePackage(ABC):
"""Base class for source package downloading. """Base class for source package downloading.
Use DebianSourcePackage or UbuntuSourcePackage instead of using this Use DebianSourcePackage or UbuntuSourcePackage instead of using this
directly. directly.
""" """
distribution = None
spph_class = SourcePackagePublishingHistory @property
@abstractmethod
def distribution(self):
return None
@property
def spph_class(self):
return SourcePackagePublishingHistory
def __init__(self, package=None, version=None, component=None, def __init__(self, package=None, version=None, component=None,
*args, **kwargs): *args, **kwargs):
@ -165,14 +174,13 @@ class SourcePackage(object):
# Mirrors # Mirrors
self.mirrors = list(mirrors) self.mirrors = list(mirrors)
if self.distribution: masters = []
masters = [] for suffix in ["MIRROR", "PORTS_MIRROR", "INTERNAL_MIRROR"]:
for suffix in ["MIRROR", "PORTS_MIRROR", "INTERNAL_MIRROR"]: masters.append(
masters.append( UDTConfig.defaults.get('%s_%s' %
UDTConfig.defaults.get('%s_%s' % (self.distribution.upper(),
(self.distribution.upper(), suffix)))
suffix))) self.masters = list(filter(None, masters))
self.masters = list(filter(None, masters))
# If provided a dscfile, process it now to set our source and version # If provided a dscfile, process it now to set our source and version
if self._dsc_source: if self._dsc_source:
@ -513,8 +521,14 @@ class DebianSPPH(SourcePackagePublishingHistory):
class DebianSourcePackage(SourcePackage): class DebianSourcePackage(SourcePackage):
"Download / unpack a Debian source package" "Download / unpack a Debian source package"
distribution = 'debian'
spph_class = DebianSPPH @property
def distribution(self):
return 'debian'
@property
def spph_class(self):
return DebianSPPH
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(DebianSourcePackage, self).__init__(*args, **kwargs) super(DebianSourcePackage, self).__init__(*args, **kwargs)
@ -602,7 +616,10 @@ class DebianSourcePackage(SourcePackage):
class UbuntuSourcePackage(SourcePackage): class UbuntuSourcePackage(SourcePackage):
"Download / unpack an Ubuntu source package" "Download / unpack an Ubuntu source package"
distribution = 'ubuntu'
@property
def distribution(self):
return 'ubuntu'
class PersonalPackageArchiveSourcePackage(UbuntuSourcePackage): class PersonalPackageArchiveSourcePackage(UbuntuSourcePackage):