summary refs log tree commit diff
path: root/synapse/config/_util.py
diff options
context:
space:
mode:
authorAndrew Morgan <andrew@amorgan.xyz>2021-04-16 12:33:45 +0100
committerAndrew Morgan <andrew@amorgan.xyz>2021-04-16 12:33:45 +0100
commit93db8f1992887d0e01e31331a1ee2ad030d62b87 (patch)
treea94c08060fb4e07bf37ddc97234152f144db9afb /synapse/config/_util.py
parentPort "Allow providing credentials to HTTPS_PROXY (#9657)" from mainline (#95) (diff)
parentMerge branch 'release-v1.24.0' into develop (diff)
downloadsynapse-93db8f1992887d0e01e31331a1ee2ad030d62b87.tar.xz
Merge commit 'cf7d3c90d' into dinsic
Diffstat (limited to 'synapse/config/_util.py')
-rw-r--r--synapse/config/_util.py35
1 files changed, 24 insertions, 11 deletions
diff --git a/synapse/config/_util.py b/synapse/config/_util.py

index c74969a977..1bbe83c317 100644 --- a/synapse/config/_util.py +++ b/synapse/config/_util.py
@@ -38,14 +38,27 @@ def validate_config( try: jsonschema.validate(config, json_schema) except jsonschema.ValidationError as e: - # copy `config_path` before modifying it. - path = list(config_path) - for p in list(e.path): - if isinstance(p, int): - path.append("<item %i>" % p) - else: - path.append(str(p)) - - raise ConfigError( - "Unable to parse configuration: %s at %s" % (e.message, ".".join(path)) - ) + raise json_error_to_config_error(e, config_path) + + +def json_error_to_config_error( + e: jsonschema.ValidationError, config_path: Iterable[str] +) -> ConfigError: + """Converts a json validation error to a user-readable ConfigError + + Args: + e: the exception to be converted + config_path: the path within the config file. This will be used as a basis + for the error message. + + Returns: + a ConfigError + """ + # copy `config_path` before modifying it. + path = list(config_path) + for p in list(e.path): + if isinstance(p, int): + path.append("<item %i>" % p) + else: + path.append(str(p)) + return ConfigError(e.message, path)