From f129df86a11183683bcd29b4f7fd421f11355cdf Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Fri, 23 Apr 2021 02:00:52 +0200 Subject: [PATCH] home-assistant: find unstable versions in parse-requirements.py Previously unstable versions would not have been found, because the regular expression was looking for a numeric version after the attribute name. When the version is however an unstable one, it would start with > unstable-2021-04-23 and therefore not match the pattern. --- pkgs/servers/home-assistant/component-packages.nix | 2 +- pkgs/servers/home-assistant/parse-requirements.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index e46a97b6fa9c..fe36bb524c7f 100644 --- a/pkgs/servers/home-assistant/component-packages.nix +++ b/pkgs/servers/home-assistant/component-packages.nix @@ -90,7 +90,7 @@ "blueprint" = ps: with ps; [ ]; "bluesound" = ps: with ps; [ xmltodict ]; "bluetooth_le_tracker" = ps: with ps; [ ]; # missing inputs: pygatt[GATTTOOL] - "bluetooth_tracker" = ps: with ps; [ bt_proximity ]; # missing inputs: pybluez + "bluetooth_tracker" = ps: with ps; [ bt_proximity pybluez ]; "bme280" = ps: with ps; [ smbus-cffi ]; # missing inputs: i2csense "bme680" = ps: with ps; [ bme680 smbus-cffi ]; "bmp280" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-bmp280 diff --git a/pkgs/servers/home-assistant/parse-requirements.py b/pkgs/servers/home-assistant/parse-requirements.py index eeb117a984e4..b6ff5662f9e5 100755 --- a/pkgs/servers/home-assistant/parse-requirements.py +++ b/pkgs/servers/home-assistant/parse-requirements.py @@ -124,7 +124,10 @@ def name_to_attr_path(req: str, packages: Dict[str, Dict[str, str]]) -> Optional for name in names: # treat "-" and "_" equally name = re.sub("[-_]", "[-_]", name) - pattern = re.compile("^python\\d\\.\\d-{}-\\d".format(name), re.I) + # python(minor).(major)-(pname)-(version or unstable-date) + # we need the version qualifier, or we'll have multiple matches + # (e.g. pyserial and pyserial-asyncio when looking for pyserial) + pattern = re.compile("^python\\d\\.\\d-{}-(?:\\d|unstable-.*)".format(name), re.I) for attr_path, package in packages.items(): if pattern.match(package["name"]): attr_paths.add(attr_path)