summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2019-07-15 13:15:34 +0100
committerErik Johnston <erik@matrix.org>2019-07-15 14:09:33 +0100
commit823e13ddf49b28eb0dab5d7be3921acc92fd0e44 (patch)
tree0b3797ff105409b57ed524ac8e73886c06dbe2a6 /synapse
parentNewsfile (diff)
downloadsynapse-823e13ddf49b28eb0dab5d7be3921acc92fd0e44.tar.xz
Change add_arguments to be a static method
Diffstat (limited to 'synapse')
-rw-r--r--synapse/config/_base.py32
-rw-r--r--synapse/config/database.py3
-rw-r--r--synapse/config/logger.py3
-rw-r--r--synapse/config/registration.py3
-rw-r--r--synapse/config/server.py3
5 files changed, 39 insertions, 5 deletions
diff --git a/synapse/config/_base.py b/synapse/config/_base.py

index 14d3f7c1fe..e588f82981 100644 --- a/synapse/config/_base.py +++ b/synapse/config/_base.py
@@ -137,12 +137,42 @@ class Config(object): return file_stream.read() def invoke_all(self, name, *args, **kargs): + """Invoke all instance methods with the given name and arguments in the + class's MRO. + + Args: + name (str): Name of function to invoke + *args + **kwargs + + Returns: + list: The list of the return values from each method called + """ results = [] for cls in type(self).mro(): if name in cls.__dict__: results.append(getattr(cls, name)(self, *args, **kargs)) return results + @classmethod + def invoke_all_static(cls, name, *args, **kargs): + """Invoke all static methods with the given name and arguments in the + class's MRO. + + Args: + name (str): Name of function to invoke + *args + **kwargs + + Returns: + list: The list of the return values from each method called + """ + results = [] + for c in cls.mro(): + if name in c.__dict__: + results.append(getattr(c, name)(*args, **kargs)) + return results + def generate_config( self, config_dir_path, @@ -241,7 +271,7 @@ class Config(object): # We can only invoke `add_arguments` on an actual object, but # `add_arguments` should be side effect free so this is probably fine. - cls().invoke_all("add_arguments", config_parser) + cls.invoke_all_static("add_arguments", config_parser) return config_parser diff --git a/synapse/config/database.py b/synapse/config/database.py
index bcb2089dd7..746a6cd1f4 100644 --- a/synapse/config/database.py +++ b/synapse/config/database.py
@@ -69,7 +69,8 @@ class DatabaseConfig(Config): if database_path is not None: self.database_config["args"]["database"] = database_path - def add_arguments(self, parser): + @staticmethod + def add_arguments(parser): db_group = parser.add_argument_group("database") db_group.add_argument( "-d", diff --git a/synapse/config/logger.py b/synapse/config/logger.py
index 931aec41c0..52cf691227 100644 --- a/synapse/config/logger.py +++ b/synapse/config/logger.py
@@ -103,7 +103,8 @@ class LoggingConfig(Config): if args.log_file is not None: self.log_file = args.log_file - def add_arguments(cls, parser): + @staticmethod + def add_arguments(parser): logging_group = parser.add_argument_group("logging") logging_group.add_argument( "-v", diff --git a/synapse/config/registration.py b/synapse/config/registration.py
index 4a59e6ec90..ee58852515 100644 --- a/synapse/config/registration.py +++ b/synapse/config/registration.py
@@ -222,7 +222,8 @@ class RegistrationConfig(Config): % locals() ) - def add_arguments(self, parser): + @staticmethod + def add_arguments(parser): reg_group = parser.add_argument_group("registration") reg_group.add_argument( "--enable-registration", diff --git a/synapse/config/server.py b/synapse/config/server.py
index 2a74dea2ea..080d0630bd 100644 --- a/synapse/config/server.py +++ b/synapse/config/server.py
@@ -639,7 +639,8 @@ class ServerConfig(Config): if args.print_pidfile is not None: self.print_pidfile = args.print_pidfile - def add_arguments(self, parser): + @staticmethod + def add_arguments(parser): server_group = parser.add_argument_group("server") server_group.add_argument( "-D",