diff options
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/servers/home-assistant')
4 files changed, 64 insertions, 65 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/appdaemon.nix b/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/appdaemon.nix index 2c0854d0a8b4..ef92ff9550ff 100644 --- a/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/appdaemon.nix +++ b/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/appdaemon.nix @@ -4,34 +4,18 @@ let python = python3.override { packageOverrides = self: super: { bcrypt = super.bcrypt.overridePythonAttrs (oldAttrs: rec { - version = "3.1.4"; + version = "3.1.7"; src = oldAttrs.src.override { inherit version; - sha256 = "13cyrnqwkhc70rs6dg65z4yrrr3dc42fhk11804fqmci9hvimvb7"; + sha256 = "CwBpx1LsFBcsX3ggjxhj161nVab65v527CyA0TvkHkI="; }; }); yarl = super.yarl.overridePythonAttrs (oldAttrs: rec { - version = "1.1.0"; + version = "1.4.2"; src = oldAttrs.src.override { inherit version; - sha256 = "6af895b45bd49254cc309ac0fe6e1595636a024953d710e01114257736184698"; - }; - }); - - jinja2 = super.jinja2.overridePythonAttrs (oldAttrs: rec { - version = "2.10.1"; - src = oldAttrs.src.override { - inherit version; - sha256 = "065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013"; - }; - }); - - aiohttp-jinja2 = super.aiohttp-jinja2.overridePythonAttrs (oldAttrs: rec { - version = "0.15.0"; - src = oldAttrs.src.override { - inherit version; - sha256 = "0f390693f46173d8ffb95669acbb0e2a3ec54ecce676703510ad47f1a6d9dc83"; + sha256 = "WM2cRp7O1VjNgao/SEspJOiJcEngaIno/yUQQ1t+90s="; }; }); }; @@ -39,26 +23,43 @@ let in python.pkgs.buildPythonApplication rec { pname = "appdaemon"; - version = "4.0.1"; + version = "4.0.5"; src = fetchFromGitHub { owner = "home-assistant"; repo = "appdaemon"; rev = version; - sha256 = "13qzjv11b0c7s1c66j70qmc222a78805n10lv2svj9yyk1v4xhjv"; + sha256 = "7o6DrTufAC+qK3dDfpkuQMQWuduCZ6Say/knI4Y07QM="; }; propagatedBuildInputs = with python.pkgs; [ daemonize astral requests websocket_client aiohttp yarl jinja2 aiohttp-jinja2 pyyaml voluptuous feedparser iso8601 bcrypt paho-mqtt setuptools - deepdiff dateutil bcrypt python-socketio pid + deepdiff dateutil bcrypt python-socketio pid pytz sockjs pygments + azure-mgmt-compute azure-mgmt-storage azure-mgmt-resource azure-keyvault-secrets azure-storage-blob ]; # no tests implemented doCheck = false; postPatch = '' - substituteInPlace requirements.txt --replace "pyyaml==5.1" "pyyaml" + substituteInPlace requirements.txt \ + --replace "pyyaml==5.3" "pyyaml" \ + --replace "pid==2.2.5" "pid" \ + --replace "Jinja2==2.11.1" "Jinja2" \ + --replace "pytz==2019.3" "pytz" \ + --replace "aiohttp==3.6.2" "aiohttp>=3.6" \ + --replace "iso8601==0.1.12" "iso8601>=0.1" \ + --replace "azure==4.0.0" "azure-mgmt-compute + azure-mgmt-storage + azure-mgmt-resource + azure-keyvault-secrets + azure-storage-blob" \ + --replace "sockjs==0.10.0" "sockjs" \ + --replace "deepdiff==4.3.1" "deepdiff" \ + --replace "voluptuous==0.11.7" "voluptuous" \ + --replace "astral==1.10.1" "astral" \ + --replace "python-socketio==4.4.0" "python-socketio" ''; meta = with lib; { diff --git a/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/component-packages.nix b/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/component-packages.nix index 911f6bed75b9..456b30cb3972 100644 --- a/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/component-packages.nix +++ b/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/component-packages.nix @@ -2,16 +2,17 @@ # Do not edit! { - version = "0.116.4"; + version = "0.118.5"; components = { "abode" = ps: with ps; [ abodepy ]; - "accuweather" = ps: with ps; [ ]; # missing inputs: accuweather + "accuweather" = ps: with ps; [ accuweather ]; "acer_projector" = ps: with ps; [ pyserial ]; "acmeda" = ps: with ps; [ ]; # missing inputs: aiopulse "actiontec" = ps: with ps; [ ]; "adguard" = ps: with ps; [ adguardhome ]; "ads" = ps: with ps; [ pyads ]; - "aftership" = ps: with ps; [ ]; # missing inputs: pyaftership + "advantage_air" = ps: with ps; [ ]; # missing inputs: advantage_air + "aftership" = ps: with ps; [ pyaftership ]; "agent_dvr" = ps: with ps; [ ]; # missing inputs: agent-py "air_quality" = ps: with ps; [ ]; "airly" = ps: with ps; [ ]; # missing inputs: airly @@ -36,7 +37,7 @@ "apcupsd" = ps: with ps; [ ]; # missing inputs: apcaccess "api" = ps: with ps; [ aiohttp-cors ]; "apns" = ps: with ps; [ ]; # missing inputs: apns2 - "apple_tv" = ps: with ps; [ aiohttp-cors netdisco zeroconf ]; # missing inputs: pyatv + "apple_tv" = ps: with ps; [ aiohttp-cors netdisco pyatv zeroconf ]; "apprise" = ps: with ps; [ apprise ]; "aprs" = ps: with ps; [ ]; # missing inputs: aprslib geopy "aqualogic" = ps: with ps; [ ]; # missing inputs: aqualogic @@ -73,7 +74,7 @@ "bbb_gpio" = ps: with ps; [ ]; # missing inputs: Adafruit_BBIO "bbox" = ps: with ps; [ ]; # missing inputs: pybbox "beewi_smartclim" = ps: with ps; [ ]; # missing inputs: beewi_smartclim - "bh1750" = ps: with ps; [ ]; # missing inputs: i2csense smbus-cffi + "bh1750" = ps: with ps; [ smbus-cffi ]; # missing inputs: i2csense "binary_sensor" = ps: with ps; [ ]; "bitcoin" = ps: with ps; [ ]; # missing inputs: blockchain "bizkaibus" = ps: with ps; [ ]; # missing inputs: bizkaibus @@ -84,14 +85,14 @@ "blinkt" = ps: with ps; [ ]; # missing inputs: blinkt "blockchain" = ps: with ps; [ ]; # missing inputs: python-blockchain-api "bloomsky" = ps: with ps; [ ]; + "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 - "bme280" = ps: with ps; [ ]; # missing inputs: i2csense smbus-cffi - "bme680" = ps: with ps; [ ]; # missing inputs: bme680 smbus-cffi + "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 "bmw_connected_drive" = ps: with ps; [ ]; # missing inputs: bimmer_connected - "bom" = ps: with ps; [ ]; # missing inputs: bomradarloop "bond" = ps: with ps; [ ]; # missing inputs: bond-api "braviatv" = ps: with ps; [ bravia-tv ]; "broadlink" = ps: with ps; [ broadlink ]; @@ -107,7 +108,7 @@ "calendar" = ps: with ps; [ aiohttp-cors ]; "camera" = ps: with ps; [ aiohttp-cors ]; "canary" = ps: with ps; [ ha-ffmpeg ]; # missing inputs: py-canary - "cast" = ps: with ps; [ aiohttp-cors hass-nabucasa mutagen PyChromecast zeroconf ]; + "cast" = ps: with ps; [ aiohttp-cors hass-nabucasa mutagen plexapi plexauth plexwebsocket PyChromecast pysonos zeroconf ]; "cert_expiry" = ps: with ps; [ ]; "channels" = ps: with ps; [ ]; # missing inputs: pychannels "circuit" = ps: with ps; [ ]; # missing inputs: circuit-webhook @@ -126,6 +127,7 @@ "co2signal" = ps: with ps; [ ]; # missing inputs: co2signal "coinbase" = ps: with ps; [ ]; # missing inputs: coinbase "coinmarketcap" = ps: with ps; [ coinmarketcap ]; + "color_extractor" = ps: with ps; [ ]; # missing inputs: colorthief "comed_hourly_pricing" = ps: with ps; [ ]; "comfoconnect" = ps: with ps; [ ]; # missing inputs: pycomfoconnect "command_line" = ps: with ps; [ ]; @@ -163,7 +165,7 @@ "device_automation" = ps: with ps; [ ]; "device_sun_light_trigger" = ps: with ps; [ aiohttp-cors pillow ]; "device_tracker" = ps: with ps; [ ]; - "devolo_home_control" = ps: with ps; [ ]; # missing inputs: devolo-home-control-api + "devolo_home_control" = ps: with ps; [ aiohttp-cors zeroconf ]; # missing inputs: devolo-home-control-api "dexcom" = ps: with ps; [ ]; # missing inputs: pydexcom "dht" = ps: with ps; [ ]; # missing inputs: Adafruit-DHT "dialogflow" = ps: with ps; [ aiohttp-cors ]; @@ -222,7 +224,7 @@ "enphase_envoy" = ps: with ps; [ ]; # missing inputs: envoy_reader "entur_public_transport" = ps: with ps; [ ]; # missing inputs: enturclient "environment_canada" = ps: with ps; [ ]; # missing inputs: env_canada - "envirophat" = ps: with ps; [ ]; # missing inputs: envirophat smbus-cffi + "envirophat" = ps: with ps; [ smbus-cffi ]; # missing inputs: envirophat "envisalink" = ps: with ps; [ ]; # missing inputs: pyenvisalink "ephember" = ps: with ps; [ ]; # missing inputs: pyephember "epson" = ps: with ps; [ ]; # missing inputs: epson-projector @@ -301,7 +303,7 @@ "gitlab_ci" = ps: with ps; [ python-gitlab ]; "gitter" = ps: with ps; [ ]; # missing inputs: gitterpy "glances" = ps: with ps; [ ]; # missing inputs: glances_api - "gntp" = ps: with ps; [ ]; # missing inputs: gntp + "gntp" = ps: with ps; [ gntp ]; "goalfeed" = ps: with ps; [ ]; # missing inputs: pysher "goalzero" = ps: with ps; [ ]; # missing inputs: goalzero "gogogate2" = ps: with ps; [ ]; # missing inputs: gogogate2-api @@ -311,13 +313,14 @@ "google_domains" = ps: with ps; [ ]; "google_maps" = ps: with ps; [ ]; # missing inputs: locationsharinglib "google_pubsub" = ps: with ps; [ google_cloud_pubsub ]; - "google_translate" = ps: with ps; [ gtts-token ]; - "google_travel_time" = ps: with ps; [ ]; # missing inputs: googlemaps + "google_translate" = ps: with ps; [ gtts ]; + "google_travel_time" = ps: with ps; [ googlemaps ]; "google_wifi" = ps: with ps; [ ]; "gpmdp" = ps: with ps; [ websocket_client ]; "gpsd" = ps: with ps; [ ]; # missing inputs: gps3 "gpslogger" = ps: with ps; [ aiohttp-cors ]; "graphite" = ps: with ps; [ ]; + "gree" = ps: with ps; [ ]; # missing inputs: greeclimate "greeneye_monitor" = ps: with ps; [ ]; # missing inputs: greeneye_monitor "greenwave" = ps: with ps; [ ]; # missing inputs: greenwavereality "griddy" = ps: with ps; [ ]; # missing inputs: griddypower @@ -357,7 +360,7 @@ "hp_ilo" = ps: with ps; [ ]; # missing inputs: python-hpilo "html5" = ps: with ps; [ aiohttp-cors pywebpush ]; "http" = ps: with ps; [ aiohttp-cors ]; - "htu21d" = ps: with ps; [ ]; # missing inputs: i2csense smbus-cffi + "htu21d" = ps: with ps; [ smbus-cffi ]; # missing inputs: i2csense "huawei_lte" = ps: with ps; [ getmac stringcase ]; # missing inputs: huawei-lte-api url-normalize "huawei_router" = ps: with ps; [ ]; "hue" = ps: with ps; [ aiohue ]; @@ -366,7 +369,6 @@ "hvv_departures" = ps: with ps; [ ]; # missing inputs: pygti "hydrawise" = ps: with ps; [ ]; # missing inputs: hydrawiser "hyperion" = ps: with ps; [ ]; # missing inputs: hyperion-py - "ialarm" = ps: with ps; [ ]; # missing inputs: pyialarm "iammeter" = ps: with ps; [ ]; # missing inputs: iammeter "iaqualink" = ps: with ps; [ ]; # missing inputs: iaqualink "icloud" = ps: with ps; [ pyicloud ]; @@ -470,7 +472,7 @@ "mastodon" = ps: with ps; [ ]; # missing inputs: Mastodon.py "matrix" = ps: with ps; [ matrix-client ]; "maxcube" = ps: with ps; [ ]; # missing inputs: maxcube-api - "mcp23017" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-blinka adafruit-circuitpython-mcp230xx + "mcp23017" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-mcp230xx "media_extractor" = ps: with ps; [ aiohttp-cors youtube-dl-light ]; "media_player" = ps: with ps; [ aiohttp-cors ]; "media_source" = ps: with ps; [ aiohttp-cors ]; @@ -527,7 +529,7 @@ "nederlandse_spoorwegen" = ps: with ps; [ ]; # missing inputs: nsapi "nello" = ps: with ps; [ ]; # missing inputs: pynello "ness_alarm" = ps: with ps; [ ]; # missing inputs: nessclient - "nest" = ps: with ps; [ python-nest ]; + "nest" = ps: with ps; [ aiohttp-cors ha-ffmpeg python-nest ]; # missing inputs: google-nest-sdm "netatmo" = ps: with ps; [ aiohttp-cors hass-nabucasa pyatmo ]; "netdata" = ps: with ps; [ ]; # missing inputs: netdata "netgear" = ps: with ps; [ ]; # missing inputs: pynetgear @@ -568,7 +570,7 @@ "ombi" = ps: with ps; [ ]; # missing inputs: pyombi "omnilogic" = ps: with ps; [ ]; # missing inputs: omnilogic "onboarding" = ps: with ps; [ aiohttp-cors pillow ]; # missing inputs: home-assistant-frontend - "onewire" = ps: with ps; [ ]; # missing inputs: pyownet + "onewire" = ps: with ps; [ ]; # missing inputs: pi1wire pyownet "onkyo" = ps: with ps; [ onkyo-eiscp ]; "onvif" = ps: with ps; [ ha-ffmpeg zeep ]; # missing inputs: WSDiscovery onvif-zeep-async "openalpr_cloud" = ps: with ps; [ ]; @@ -622,6 +624,7 @@ "point" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pypoint "poolsense" = ps: with ps; [ ]; # missing inputs: poolsense "powerwall" = ps: with ps; [ ]; # missing inputs: tesla-powerwall + "profiler" = ps: with ps; [ objgraph pyprof2calltree ]; # missing inputs: guppy3 "progettihwsw" = ps: with ps; [ ]; # missing inputs: progettihwsw "proliphix" = ps: with ps; [ ]; # missing inputs: proliphix "prometheus" = ps: with ps; [ aiohttp-cors prometheus_client ]; @@ -655,9 +658,9 @@ "rainforest_eagle" = ps: with ps; [ ]; # missing inputs: eagle200_reader uEagle "rainmachine" = ps: with ps; [ ]; # missing inputs: regenmaschine "random" = ps: with ps; [ ]; - "raspihats" = ps: with ps; [ ]; # missing inputs: raspihats smbus-cffi + "raspihats" = ps: with ps; [ smbus-cffi ]; # missing inputs: raspihats "raspyrfm" = ps: with ps; [ ]; # missing inputs: raspyrfm-client - "recollect_waste" = ps: with ps; [ ]; # missing inputs: recollect-waste + "recollect_waste" = ps: with ps; [ ]; # missing inputs: aiorecollect "recorder" = ps: with ps; [ sqlalchemy ]; "recswitch" = ps: with ps; [ ]; # missing inputs: pyrecswitch "reddit" = ps: with ps; [ praw ]; @@ -688,6 +691,7 @@ "rpi_rf" = ps: with ps; [ ]; # missing inputs: rpi-rf "rss_feed_template" = ps: with ps; [ aiohttp-cors ]; "rtorrent" = ps: with ps; [ ]; + "ruckus_unleashed" = ps: with ps; [ ]; # missing inputs: pyruckus "russound_rio" = ps: with ps; [ ]; # missing inputs: russound_rio "russound_rnet" = ps: with ps; [ ]; # missing inputs: russound "sabnzbd" = ps: with ps; [ aiohttp-cors netdisco zeroconf ]; # missing inputs: pysabnzbd @@ -809,6 +813,7 @@ "tank_utility" = ps: with ps; [ ]; # missing inputs: tank_utility "tankerkoenig" = ps: with ps; [ ]; # missing inputs: pytankerkoenig "tapsaff" = ps: with ps; [ ]; # missing inputs: tapsaff + "tasmota" = ps: with ps; [ aiohttp-cors paho-mqtt ]; # missing inputs: hatasmota "tautulli" = ps: with ps; [ ]; # missing inputs: pytautulli "tcp" = ps: with ps; [ ]; "ted5000" = ps: with ps; [ xmltodict ]; @@ -932,6 +937,7 @@ "wunderground" = ps: with ps; [ ]; "x10" = ps: with ps; [ ]; "xbee" = ps: with ps; [ ]; # missing inputs: xbee-helper + "xbox" = ps: with ps; [ aiohttp-cors ]; # missing inputs: xbox-webapi "xbox_live" = ps: with ps; [ ]; # missing inputs: xboxapi "xeoma" = ps: with ps; [ ]; # missing inputs: pyxeoma "xfinity" = ps: with ps; [ ]; # missing inputs: xfinity-gateway @@ -950,13 +956,13 @@ "yeelightsunflower" = ps: with ps; [ ]; # missing inputs: yeelightsunflower "yessssms" = ps: with ps; [ ]; # missing inputs: YesssSMS "yi" = ps: with ps; [ aioftp ha-ffmpeg ]; - "zabbix" = ps: with ps; [ ]; # missing inputs: pyzabbix + "zabbix" = ps: with ps; [ ]; # missing inputs: py-zabbix "zamg" = ps: with ps; [ ]; "zengge" = ps: with ps; [ ]; # missing inputs: zengge "zeroconf" = ps: with ps; [ aiohttp-cors zeroconf ]; "zerproc" = ps: with ps; [ ]; # missing inputs: pyzerproc "zestimate" = ps: with ps; [ xmltodict ]; - "zha" = ps: with ps; [ bellows pyserial zha-quirks zigpy-cc zigpy-deconz zigpy-xbee zigpy-zigate zigpy ]; # missing inputs: zigpy-znp + "zha" = ps: with ps; [ bellows pyserial zha-quirks zigpy-cc zigpy-deconz zigpy-xbee zigpy-zigate zigpy-znp zigpy ]; "zhong_hong" = ps: with ps; [ ]; # missing inputs: zhong_hong_hvac "ziggo_mediabox_xl" = ps: with ps; [ ]; # missing inputs: ziggo-mediabox-xl "zodiac" = ps: with ps; [ ]; diff --git a/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/default.nix b/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/default.nix index e2a7df26efee..bc0622e4f554 100644 --- a/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/default.nix @@ -24,11 +24,6 @@ let (mkOverride "astral" "1.10.1" "d2a67243c4503131c856cafb1b1276de52a86e5b8a1d507b7e08bee51cb67bf1") - # Pinned due to an API change in pyowm>=3.0 - # Remove after https://github.com/home-assistant/core/pull/39839 gets merged - (mkOverride "pyowm" "2.10.0" - "1xvcv3sbcn9na8cwz21nnjlixysfk5lymnf65d1nqkbgacc1mm4g") - # Pinned, because v1.5.0 broke the google_translate integration # https://github.com/home-assistant/core/pull/38428 (mkOverride "yarl" "1.4.2" @@ -67,7 +62,7 @@ let extraBuildInputs = extraPackages py.pkgs; # Don't forget to run parse-requirements.py after updating - hassVersion = "0.116.4"; + hassVersion = "0.118.5"; in with py.pkgs; buildPythonApplication rec { pname = "homeassistant"; @@ -83,28 +78,25 @@ in with py.pkgs; buildPythonApplication rec { owner = "home-assistant"; repo = "core"; rev = version; - sha256 = "1wcr2afvq1l6xlws3jgzfyh4kx61i0x9n985fiq3ls29w9lpshk4"; + sha256 = "1711qhcvrzl599cryd9wzamacn1vv37w67vprqgibnbw58kcpilj"; }; - patches = [ - (fetchpatch { - # Fix group tests when run in parallel, remove >= 0.117.0 - url = "https://github.com/home-assistant/core/pull/41446/commits/c79dc478b7136b6df43707bf0ad6b53419c8a909.patch"; - sha256 = "1cl81swq960vd2f733dcqq60c0jjzrkm0l2sibcblhmyw597b4vj"; - }) - ]; + # leave this in, so users don't have to constantly update their downstream patch handling + patches = []; postPatch = '' substituteInPlace setup.py \ + --replace "aiohttp==3.7.1" "aiohttp>=3.6.3" \ --replace "bcrypt==3.1.7" "bcrypt>=3.1.7" \ - --replace "cryptography==2.9.2" "cryptography" \ + --replace "cryptography==3.2" "cryptography" \ + --replace "requests==2.25.0" "requests>=2.24.0" \ --replace "ruamel.yaml==0.15.100" "ruamel.yaml>=0.15.100" substituteInPlace tests/test_config.py --replace '"/usr"' '"/build/media"' ''; propagatedBuildInputs = [ # From setup.py - aiohttp astral async-timeout attrs bcrypt certifi ciso8601 jinja2 + aiohttp astral async-timeout attrs bcrypt certifi ciso8601 httpx jinja2 pyjwt cryptography pip python-slugify pytz pyyaml requests ruamel_yaml setuptools voluptuous voluptuous-serialize yarl # From default_config. frontend, http, image, mobile_app and recorder components as well as diff --git a/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/frontend.nix b/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/frontend.nix index 8dd99d94ee0f..825576e92ad1 100644 --- a/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/frontend.nix +++ b/infra/libkookie/nixpkgs/pkgs/servers/home-assistant/frontend.nix @@ -4,11 +4,11 @@ buildPythonPackage rec { # the frontend version corresponding to a specific home-assistant version can be found here # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json pname = "home-assistant-frontend"; - version = "20201001.2"; + version = "20201111.2"; src = fetchPypi { inherit pname version; - sha256 = "1wyac980d8j8bk4bzh9y3a5c4xqfn3062wj5m45kwsx1f5rfx26j"; + sha256 = "1pk4l78j72zn6gxc0yr3azdlcqwkvf7ki0khm176qpvs34scs1l8"; }; # no Python tests implemented |