diff options
author | David Robertson <davidr@element.io> | 2022-09-29 21:16:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-29 20:16:08 +0000 |
commit | 6f0c3e669da458e838e7b4b165a13e8a5312d6d0 (patch) | |
tree | 32302c0d8b68862443ee25947eb64bf429b63a90 /synapse/util/check_dependencies.py | |
parent | Update UPSERT comment now that native upserts are the default (#13924) (diff) | |
download | synapse-6f0c3e669da458e838e7b4b165a13e8a5312d6d0.tar.xz |
Don't require `setuptools_rust` at runtime (#13952)
Diffstat (limited to 'synapse/util/check_dependencies.py')
-rw-r--r-- | synapse/util/check_dependencies.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/synapse/util/check_dependencies.py b/synapse/util/check_dependencies.py index 66f1da7502..3b1e205700 100644 --- a/synapse/util/check_dependencies.py +++ b/synapse/util/check_dependencies.py @@ -66,6 +66,21 @@ def _is_dev_dependency(req: Requirement) -> bool: ) +def _should_ignore_runtime_requirement(req: Requirement) -> bool: + # This is a build-time dependency. Irritatingly, `poetry build` ignores the + # requirements listed in the [build-system] section of pyproject.toml, so in order + # to support `poetry install --no-dev` we have to mark it as a runtime dependency. + # See discussion on https://github.com/python-poetry/poetry/issues/6154 (it sounds + # like the poetry authors don't consider this a bug?) + # + # In any case, workaround this by ignoring setuptools_rust here. (It might be + # slightly cleaner to put `setuptools_rust` in a `build` extra or similar, but for + # now let's do something quick and dirty. + if req.name == "setuptools_rust": + return True + return False + + class Dependency(NamedTuple): requirement: Requirement must_be_installed: bool @@ -77,7 +92,7 @@ def _generic_dependencies() -> Iterable[Dependency]: assert requirements is not None for raw_requirement in requirements: req = Requirement(raw_requirement) - if _is_dev_dependency(req): + if _is_dev_dependency(req) or _should_ignore_runtime_requirement(req): continue # https://packaging.pypa.io/en/latest/markers.html#usage notes that |