diff --git a/pkgs/development/python-modules/jeepney/default.nix b/pkgs/development/python-modules/jeepney/default.nix index 84096c6db4f9..cea428a9ffd0 100644 --- a/pkgs/development/python-modules/jeepney/default.nix +++ b/pkgs/development/python-modules/jeepney/default.nix @@ -2,9 +2,11 @@ , buildPythonPackage , fetchPypi , pythonOlder +, dbus , pytest +, pytest-trio +, pytest-asyncio , testpath -, tornado , trio }: @@ -12,30 +14,44 @@ buildPythonPackage rec { pname = "jeepney"; version = "0.6.0"; - disabled = pythonOlder "3.5"; + disabled = pythonOlder "3.6"; src = fetchPypi { inherit pname version; sha256 = "7d59b6622675ca9e993a6bd38de845051d315f8b0c72cca3aef733a20b648657"; }; - propagatedBuildInputs = [ - tornado - ]; - checkInputs = [ + dbus pytest + pytest-trio + pytest-asyncio testpath trio ]; checkPhase = '' - pytest + runHook preCheck + + dbus-run-session --config-file=${dbus}/share/dbus-1/session.conf -- pytest + + runHook postCheck ''; + pythonImportsCheck = [ + "jeepney" + "jeepney.auth" + "jeepney.io" + "jeepney.io.asyncio" + "jeepney.io.blocking" + "jeepney.io.threading" + "jeepney.io.trio" + ]; + meta = with lib; { homepage = "https://gitlab.com/takluyver/jeepney"; description = "Pure Python DBus interface"; license = licenses.mit; + maintainers = with maintainers; [ dotlambda ]; }; } diff --git a/pkgs/development/python-modules/notify-py/darwin-paths.patch b/pkgs/development/python-modules/notify-py/darwin-paths.patch new file mode 100644 index 000000000000..3088825b9b9b --- /dev/null +++ b/pkgs/development/python-modules/notify-py/darwin-paths.patch @@ -0,0 +1,13 @@ +diff --git a/notifypy/os_notifiers/macos.py b/notifypy/os_notifiers/macos.py +index 68731fb..53fcee3 100644 +--- a/notifypy/os_notifiers/macos.py ++++ b/notifypy/os_notifiers/macos.py +@@ -75,7 +75,7 @@ class MacOSNotifier(BaseNotifier): + def _find_installed_afplay(): + """Function to find the path for afplay""" + try: +- run_which_for_aplay = subprocess.check_output(["which", "afplay"]) ++ run_which_for_aplay = subprocess.check_output(["@which@", "afplay"]) + return run_which_for_aplay.decode("utf-8") + except subprocess.CalledProcessError: + logger.exception("Unable to find aplay.") diff --git a/pkgs/development/python-modules/notify-py/default.nix b/pkgs/development/python-modules/notify-py/default.nix index ba4725c9aaa4..497b20d3df8f 100644 --- a/pkgs/development/python-modules/notify-py/default.nix +++ b/pkgs/development/python-modules/notify-py/default.nix @@ -1,5 +1,17 @@ -{ lib, stdenv, buildPythonPackage, fetchFromGitHub, isPy3k, coreutils, alsa-utils -, libnotify, which, jeepney, loguru, pytestCheckHook }: +{ lib +, stdenv +, buildPythonPackage +, isPy3k +, fetchFromGitHub +, substituteAll +, alsa-utils +, libnotify +, which +, jeepney +, loguru +, pytestCheckHook +, coreutils +}: buildPythonPackage rec { pname = "notify-py"; @@ -14,15 +26,28 @@ buildPythonPackage rec { sha256 = "1n35adwsyhz304n4ifnsz6qzkymwhyqc8sg8d76qv5psv2xsnzlf"; }; - propagatedNativeBuildInputs = [ which ] - ++ lib.optionals stdenv.isLinux [ alsa-utils libnotify ]; + patches = lib.optionals stdenv.isLinux [ + # hardcode paths to aplay and notify-send + (substituteAll { + src = ./linux-paths.patch; + aplay = "${alsa-utils}/bin/aplay"; + notifysend = "${libnotify}/bin/notify-send"; + }) + ] ++ lib.optionals stdenv.isDarwin [ + # hardcode path to which + (substituteAll { + src = ./darwin-paths.patch; + which = "${which}/bin/which"; + }) + ]; + propagatedBuildInputs = [ loguru ] ++ lib.optionals stdenv.isLinux [ jeepney ]; - checkInputs = [ coreutils pytestCheckHook ]; + checkInputs = [ pytestCheckHook ]; # Tests search for "afplay" binary which is built in to MacOS and not available in nixpkgs - preCheck = '' + preCheck = lib.optionalString stdenv.isDarwin '' mkdir $TMP/bin ln -s ${coreutils}/bin/true $TMP/bin/afplay export PATH="$TMP/bin:$PATH" @@ -31,9 +56,9 @@ buildPythonPackage rec { pythonImportsCheck = [ "notifypy" ]; meta = with lib; { - description = "Python Module for sending cross-platform desktop notifications on Windows, macOS, and Linux."; - homepage = "https://github.com/ms7m/notify-py/"; + description = "Cross-platform desktop notification library for Python"; + homepage = "https://github.com/ms7m/notify-py"; license = licenses.mit; - maintainers = with maintainers; [ austinbutler ]; + maintainers = with maintainers; [ austinbutler dotlambda ]; }; } diff --git a/pkgs/development/python-modules/notify-py/linux-paths.patch b/pkgs/development/python-modules/notify-py/linux-paths.patch new file mode 100644 index 000000000000..f043ec14a467 --- /dev/null +++ b/pkgs/development/python-modules/notify-py/linux-paths.patch @@ -0,0 +1,54 @@ +diff --git a/notifypy/os_notifiers/linux.py b/notifypy/os_notifiers/linux.py +index ee89216..5201574 100644 +--- a/notifypy/os_notifiers/linux.py ++++ b/notifypy/os_notifiers/linux.py +@@ -53,30 +53,12 @@ class LinuxNotifierLibNotify(BaseNotifier): + @staticmethod + def _find_installed_aplay(): + """Function to find the path for notify-send""" +- try: +- run_which_for_aplay = subprocess.check_output(["which", "aplay"]) +- return run_which_for_aplay.decode("utf-8") +- except subprocess.CalledProcessError: +- logger.exception("Unable to find aplay.") +- return False +- except Exception: +- logger.exception("Unhandled exception for finding aplay.") +- return False ++ return "@aplay@" + + @staticmethod + def _find_installed_notify_send(): + """Function to find the path for notify-send""" +- try: +- run_which_for_notify_send = subprocess.check_output( +- ["which", "notify-send"] +- ) +- return run_which_for_notify_send.decode("utf-8") +- except subprocess.CalledProcessError: +- logger.exception("Unable to find notify-send.") +- return False +- except Exception: +- logger.exception("Unhandled exception for finding notify-send.") +- return False ++ return "@notifysend@" + + def send_notification( + self, +@@ -159,15 +141,7 @@ class LinuxNotifier(BaseNotifier): + @staticmethod + def _find_installed_aplay(): + """Function to find the path for notify-send""" +- try: +- run_which_for_aplay = subprocess.check_output(["which", "aplay"]) +- return run_which_for_aplay.decode("utf-8") +- except subprocess.CalledProcessError: +- logger.exception("Unable to find aplay.") +- return False +- except Exception: +- logger.exception("Unhandled exception for finding aplay.") +- return False ++ return "@aplay@" + + def send_notification( + self,