Switch metaclass initialization to python 3-compatible syntax (#8326)

This commit is contained in:
Jonathan de Jong 2020-09-16 21:15:55 +02:00 committed by GitHub
parent 44dec6cbc4
commit a3f124b821
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 16 additions and 26 deletions

1
changelog.d/8326.misc Normal file
View File

@ -0,0 +1 @@
Update outdated usages of `metaclass` to python 3 syntax.

View File

@ -51,14 +51,12 @@ if TYPE_CHECKING:
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class RoomMemberHandler: class RoomMemberHandler(metaclass=abc.ABCMeta):
# TODO(paul): This handler currently contains a messy conflation of # TODO(paul): This handler currently contains a messy conflation of
# low-level API that works on UserID objects and so on, and REST-level # low-level API that works on UserID objects and so on, and REST-level
# API that takes ID strings and returns pagination chunks. These concerns # API that takes ID strings and returns pagination chunks. These concerns
# ought to be separated out a lot better. # ought to be separated out a lot better.
__metaclass__ = abc.ABCMeta
def __init__(self, hs: "HomeServer"): def __init__(self, hs: "HomeServer"):
self.hs = hs self.hs = hs
self.store = hs.get_datastore() self.store = hs.get_datastore()

View File

@ -33,7 +33,7 @@ from synapse.util.stringutils import random_string
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class ReplicationEndpoint: class ReplicationEndpoint(metaclass=abc.ABCMeta):
"""Helper base class for defining new replication HTTP endpoints. """Helper base class for defining new replication HTTP endpoints.
This creates an endpoint under `/_synapse/replication/:NAME/:PATH_ARGS..` This creates an endpoint under `/_synapse/replication/:NAME/:PATH_ARGS..`
@ -72,8 +72,6 @@ class ReplicationEndpoint:
is received. is received.
""" """
__metaclass__ = abc.ABCMeta
NAME = abc.abstractproperty() # type: str # type: ignore NAME = abc.abstractproperty() # type: str # type: ignore
PATH_ARGS = abc.abstractproperty() # type: Tuple[str, ...] # type: ignore PATH_ARGS = abc.abstractproperty() # type: Tuple[str, ...] # type: ignore
METHOD = "POST" METHOD = "POST"

View File

@ -29,15 +29,13 @@ from synapse.util.caches.stream_change_cache import StreamChangeCache
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class AccountDataWorkerStore(SQLBaseStore): # The ABCMeta metaclass ensures that it cannot be instantiated without
# the abstract methods being implemented.
class AccountDataWorkerStore(SQLBaseStore, metaclass=abc.ABCMeta):
"""This is an abstract base class where subclasses must implement """This is an abstract base class where subclasses must implement
`get_max_account_data_stream_id` which can be called in the initializer. `get_max_account_data_stream_id` which can be called in the initializer.
""" """
# This ABCMeta metaclass ensures that we cannot be instantiated without
# the abstract methods being implemented.
__metaclass__ = abc.ABCMeta
def __init__(self, database: DatabasePool, db_conn, hs): def __init__(self, database: DatabasePool, db_conn, hs):
account_max = self.get_max_account_data_stream_id() account_max = self.get_max_account_data_stream_id()
self._account_data_stream_cache = StreamChangeCache( self._account_data_stream_cache = StreamChangeCache(

View File

@ -61,6 +61,8 @@ def _load_rules(rawrules, enabled_map, use_new_defaults=False):
return rules return rules
# The ABCMeta metaclass ensures that it cannot be instantiated without
# the abstract methods being implemented.
class PushRulesWorkerStore( class PushRulesWorkerStore(
ApplicationServiceWorkerStore, ApplicationServiceWorkerStore,
ReceiptsWorkerStore, ReceiptsWorkerStore,
@ -68,15 +70,12 @@ class PushRulesWorkerStore(
RoomMemberWorkerStore, RoomMemberWorkerStore,
EventsWorkerStore, EventsWorkerStore,
SQLBaseStore, SQLBaseStore,
metaclass=abc.ABCMeta,
): ):
"""This is an abstract base class where subclasses must implement """This is an abstract base class where subclasses must implement
`get_max_push_rules_stream_id` which can be called in the initializer. `get_max_push_rules_stream_id` which can be called in the initializer.
""" """
# This ABCMeta metaclass ensures that we cannot be instantiated without
# the abstract methods being implemented.
__metaclass__ = abc.ABCMeta
def __init__(self, database: DatabasePool, db_conn, hs): def __init__(self, database: DatabasePool, db_conn, hs):
super(PushRulesWorkerStore, self).__init__(database, db_conn, hs) super(PushRulesWorkerStore, self).__init__(database, db_conn, hs)

View File

@ -31,15 +31,13 @@ from synapse.util.caches.stream_change_cache import StreamChangeCache
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class ReceiptsWorkerStore(SQLBaseStore): # The ABCMeta metaclass ensures that it cannot be instantiated without
# the abstract methods being implemented.
class ReceiptsWorkerStore(SQLBaseStore, metaclass=abc.ABCMeta):
"""This is an abstract base class where subclasses must implement """This is an abstract base class where subclasses must implement
`get_max_receipt_stream_id` which can be called in the initializer. `get_max_receipt_stream_id` which can be called in the initializer.
""" """
# This ABCMeta metaclass ensures that we cannot be instantiated without
# the abstract methods being implemented.
__metaclass__ = abc.ABCMeta
def __init__(self, database: DatabasePool, db_conn, hs): def __init__(self, database: DatabasePool, db_conn, hs):
super(ReceiptsWorkerStore, self).__init__(database, db_conn, hs) super(ReceiptsWorkerStore, self).__init__(database, db_conn, hs)

View File

@ -259,14 +259,12 @@ def filter_to_clause(event_filter: Optional[Filter]) -> Tuple[str, List[str]]:
return " AND ".join(clauses), args return " AND ".join(clauses), args
class StreamWorkerStore(EventsWorkerStore, SQLBaseStore): class StreamWorkerStore(EventsWorkerStore, SQLBaseStore, metaclass=abc.ABCMeta):
"""This is an abstract base class where subclasses must implement """This is an abstract base class where subclasses must implement
`get_room_max_stream_ordering` and `get_room_min_stream_ordering` `get_room_max_stream_ordering` and `get_room_min_stream_ordering`
which can be called in the initializer. which can be called in the initializer.
""" """
__metaclass__ = abc.ABCMeta
def __init__(self, database: DatabasePool, db_conn, hs: "HomeServer"): def __init__(self, database: DatabasePool, db_conn, hs: "HomeServer"):
super(StreamWorkerStore, self).__init__(database, db_conn, hs) super(StreamWorkerStore, self).__init__(database, db_conn, hs)

View File

@ -165,7 +165,9 @@ def get_localpart_from_id(string):
DS = TypeVar("DS", bound="DomainSpecificString") DS = TypeVar("DS", bound="DomainSpecificString")
class DomainSpecificString(namedtuple("DomainSpecificString", ("localpart", "domain"))): class DomainSpecificString(
namedtuple("DomainSpecificString", ("localpart", "domain")), metaclass=abc.ABCMeta
):
"""Common base class among ID/name strings that have a local part and a """Common base class among ID/name strings that have a local part and a
domain name, prefixed with a sigil. domain name, prefixed with a sigil.
@ -175,8 +177,6 @@ class DomainSpecificString(namedtuple("DomainSpecificString", ("localpart", "dom
'domain' : The domain part of the name 'domain' : The domain part of the name
""" """
__metaclass__ = abc.ABCMeta
SIGIL = abc.abstractproperty() # type: str # type: ignore SIGIL = abc.abstractproperty() # type: str # type: ignore
# Deny iteration because it will bite you if you try to create a singleton # Deny iteration because it will bite you if you try to create a singleton