Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 50f0e40

Browse files
Vetchubabolivier
andauthored
Allow dependency errors to pass through (#13113)
Signed-off-by: Jacek Kusnierz <[email protected]> Co-authored-by: Brendan Abolivier <[email protected]>
1 parent b036685 commit 50f0e40

File tree

8 files changed

+16
-58
lines changed

8 files changed

+16
-58
lines changed

changelog.d/13113.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Raise a `DependencyError` on missing dependencies instead of a `ConfigError`.

synapse/config/cache.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import attr
2222

2323
from synapse.types import JsonDict
24-
from synapse.util.check_dependencies import DependencyException, check_requirements
24+
from synapse.util.check_dependencies import check_requirements
2525

2626
from ._base import Config, ConfigError
2727

@@ -159,12 +159,7 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None:
159159

160160
self.track_memory_usage = cache_config.get("track_memory_usage", False)
161161
if self.track_memory_usage:
162-
try:
163-
check_requirements("cache_memory")
164-
except DependencyException as e:
165-
raise ConfigError(
166-
e.message # noqa: B306, DependencyException.message is a property
167-
)
162+
check_requirements("cache_memory")
168163

169164
expire_caches = cache_config.get("expire_caches", True)
170165
cache_entry_ttl = cache_config.get("cache_entry_ttl", "30m")

synapse/config/jwt.py

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,9 @@
1515
from typing import Any
1616

1717
from synapse.types import JsonDict
18+
from synapse.util.check_dependencies import check_requirements
1819

19-
from ._base import Config, ConfigError
20-
21-
MISSING_AUTHLIB = """Missing authlib library. This is required for jwt login.
22-
23-
Install by running:
24-
pip install synapse[jwt]
25-
"""
20+
from ._base import Config
2621

2722

2823
class JWTConfig(Config):
@@ -41,13 +36,7 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None:
4136
# that the claims exist on the JWT.
4237
self.jwt_issuer = jwt_config.get("issuer")
4338
self.jwt_audiences = jwt_config.get("audiences")
44-
45-
try:
46-
from authlib.jose import JsonWebToken
47-
48-
JsonWebToken # To stop unused lint.
49-
except ImportError:
50-
raise ConfigError(MISSING_AUTHLIB)
39+
check_requirements("jwt")
5140
else:
5241
self.jwt_enabled = False
5342
self.jwt_secret = None

synapse/config/metrics.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import attr
1919

2020
from synapse.types import JsonDict
21-
from synapse.util.check_dependencies import DependencyException, check_requirements
21+
from synapse.util.check_dependencies import check_requirements
2222

2323
from ._base import Config, ConfigError
2424

@@ -57,12 +57,7 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None:
5757

5858
self.sentry_enabled = "sentry" in config
5959
if self.sentry_enabled:
60-
try:
61-
check_requirements("sentry")
62-
except DependencyException as e:
63-
raise ConfigError(
64-
e.message # noqa: B306, DependencyException.message is a property
65-
)
60+
check_requirements("sentry")
6661

6762
self.sentry_dsn = config["sentry"].get("dsn")
6863
if not self.sentry_dsn:

synapse/config/oidc.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from synapse.util.module_loader import load_module
2525
from synapse.util.stringutils import parse_and_validate_mxc_uri
2626

27-
from ..util.check_dependencies import DependencyException, check_requirements
27+
from ..util.check_dependencies import check_requirements
2828
from ._base import Config, ConfigError, read_file
2929

3030
DEFAULT_USER_MAPPING_PROVIDER = "synapse.handlers.oidc.JinjaOidcMappingProvider"
@@ -41,12 +41,7 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None:
4141
if not self.oidc_providers:
4242
return
4343

44-
try:
45-
check_requirements("oidc")
46-
except DependencyException as e:
47-
raise ConfigError(
48-
e.message # noqa: B306, DependencyException.message is a property
49-
) from e
44+
check_requirements("oidc")
5045

5146
# check we don't have any duplicate idp_ids now. (The SSO handler will also
5247
# check for duplicates when the REST listeners get registered, but that happens
@@ -146,7 +141,6 @@ def oidc_enabled(self) -> bool:
146141
"allOf": [OIDC_PROVIDER_CONFIG_SCHEMA, {"required": ["idp_id", "idp_name"]}]
147142
}
148143

149-
150144
# the `oidc_providers` list can either be None (as it is in the default config), or
151145
# a list of provider configs, each of which requires an explicit ID and name.
152146
OIDC_PROVIDER_LIST_SCHEMA = {

synapse/config/repository.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
from synapse.config.server import generate_ip_set
2323
from synapse.types import JsonDict
24-
from synapse.util.check_dependencies import DependencyException, check_requirements
24+
from synapse.util.check_dependencies import check_requirements
2525
from synapse.util.module_loader import load_module
2626

2727
from ._base import Config, ConfigError
@@ -184,13 +184,7 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None:
184184
)
185185
self.url_preview_enabled = config.get("url_preview_enabled", False)
186186
if self.url_preview_enabled:
187-
try:
188-
check_requirements("url_preview")
189-
190-
except DependencyException as e:
191-
raise ConfigError(
192-
e.message # noqa: B306, DependencyException.message is a property
193-
)
187+
check_requirements("url_preview")
194188

195189
proxy_env = getproxies_environment()
196190
if "url_preview_ip_range_blacklist" not in config:

synapse/config/saml2.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
from synapse.config.sso import SsoAttributeRequirement
2020
from synapse.types import JsonDict
21-
from synapse.util.check_dependencies import DependencyException, check_requirements
21+
from synapse.util.check_dependencies import check_requirements
2222
from synapse.util.module_loader import load_module, load_python_module
2323

2424
from ._base import Config, ConfigError
@@ -76,12 +76,7 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None:
7676
if not saml2_config.get("sp_config") and not saml2_config.get("config_path"):
7777
return
7878

79-
try:
80-
check_requirements("saml2")
81-
except DependencyException as e:
82-
raise ConfigError(
83-
e.message # noqa: B306, DependencyException.message is a property
84-
)
79+
check_requirements("saml2")
8580

8681
self.saml2_enabled = True
8782

synapse/config/tracer.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from typing import Any, List, Set
1616

1717
from synapse.types import JsonDict
18-
from synapse.util.check_dependencies import DependencyException, check_requirements
18+
from synapse.util.check_dependencies import check_requirements
1919

2020
from ._base import Config, ConfigError
2121

@@ -40,12 +40,7 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None:
4040
if not self.opentracer_enabled:
4141
return
4242

43-
try:
44-
check_requirements("opentracing")
45-
except DependencyException as e:
46-
raise ConfigError(
47-
e.message # noqa: B306, DependencyException.message is a property
48-
)
43+
check_requirements("opentracing")
4944

5045
# The tracer is enabled so sanitize the config
5146

0 commit comments

Comments
 (0)