Unverified Commit 6197af40 authored by Robert Schütz's avatar Robert Schütz Committed by GitHub
Browse files

ntfy: stop depending on python 3.9 (#376764)

parents 8c9ee722 73631465
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -227,7 +227,7 @@ buildPythonPackage rec {
    # AssertionError: assert ResourceWarning not in [<class 'ResourceWarning'>, <class 'ResourceWarning'>]
    "test_delete_object_with_version"

    # KeyError beucase of ap-southeast-5-apse5-az
    # KeyError because of ap-southeast-5-apse5-az
    "test_zoneId_in_availability_zones"

    # Parameter validation fails
+66 −42
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  python39,
  python3,
  fetchFromGitHub,
  fetchpatch,
  withXmpp ? !stdenv.hostPlatform.isDarwin,
  withXmpp ? false, # sleekxmpp doesn't support python 3.10, see https://github.com/dschep/ntfy/issues/266
  withMatrix ? true,
  withSlack ? true,
  withEmoji ? true,
@@ -13,15 +13,13 @@
}:

let
  python = python39.override {
  python = python3.override {
    self = python;
    packageOverrides = self: super: {
      ntfy-webpush = self.callPackage ./webpush.nix { };

      # databases, on which slack-sdk depends, is incompatible with SQLAlchemy 2.0
      sqlalchemy = super.sqlalchemy_1_4;

      django = super.django_3;
    };
  };
in
@@ -38,40 +36,6 @@ python.pkgs.buildPythonApplication rec {
    sha256 = "09f02cn4i1l2aksb3azwfb70axqhn7d0d0vl2r6640hqr74nc1cv";
  };

  nativeCheckInputs = with python.pkgs; [
    mock
  ];

  propagatedBuildInputs =
    with python.pkgs;
    (
      [
        requests
        ruamel-yaml
        appdirs
        ntfy-webpush
      ]
      ++ (lib.optionals withXmpp [
        sleekxmpp
        dnspython
      ])
      ++ (lib.optionals withMatrix [
        matrix-client
      ])
      ++ (lib.optionals withSlack [
        slack-sdk
      ])
      ++ (lib.optionals withEmoji [
        emoji
      ])
      ++ (lib.optionals withPid [
        psutil
      ])
      ++ (lib.optionals withDbus [
        dbus-python
      ])
    );

  patches = [
    # Fix Slack integration no longer working.
    # From https://github.com/dschep/ntfy/pull/229 - "Swap Slacker for Slack SDK"
@@ -87,6 +51,23 @@ python.pkgs.buildPythonApplication rec {
      url = "https://github.com/dschep/ntfy/commit/4128942bb7a706117e7154a50a73b88f531631fe.patch";
      sha256 = "sha256-V8dIy/K957CPFQQS1trSI3gZOjOcVNQLgdWY7g17bRw=";
    })
    # Change getargspec to getfullargspec for python 3.11 compatibility
    (fetchpatch {
      url = "https://github.com/dschep/ntfy/commit/71be9766ea041d2df6ebbce2781f980eea002852.patch";
      hash = "sha256-6OChaTj4g3gxVDScc/JksBISHuq+5fbNQregchSXYaQ=";
    })
    # Fix compatibility with Python 3.11
    # https://github.com/dschep/ntfy/pull/271
    (fetchpatch {
      url = "https://github.com/dschep/ntfy/pull/271/commits/444b60bec7de474d029cac184e82885011dd1474.patch";
      hash = "sha256-PKTu8cOpws1z6f1T4uIi2iCJAoAwu+X0Pe7XnHYtHuI=";
    })
    # Fix compatibility with Python 3.12
    # https://github.com/dschep/ntfy/pull/271
    (fetchpatch {
      url = "https://github.com/dschep/ntfy/pull/271/commits/d49ab9f9dba4966a44b5f0c6911741edabd35f6b.patch";
      hash = "sha256-qTUWMS8EXWYCK/ZL0Us7iJp62UIKwYT1BqDy59832ig=";
    })
  ];

  postPatch = ''
@@ -95,13 +76,56 @@ python.pkgs.buildPythonApplication rec {
      --replace "':sys_platform == \"darwin\"'" "'darwin'"
  '';

  checkPhase = ''
    HOME=$(mktemp -d) ${python.interpreter} setup.py test
  dependencies =
    with python.pkgs;
    (
      [
        requests
        ruamel-yaml
        appdirs
        ntfy-webpush
      ]
      ++ lib.optionals withXmpp [
        sleekxmpp
        dnspython
      ]
      ++ lib.optionals withMatrix [
        matrix-client
      ]
      ++ lib.optionals withSlack [
        slack-sdk
      ]
      ++ lib.optionals withEmoji [
        emoji
      ]
      ++ lib.optionals withPid [
        psutil
      ]
      ++ lib.optionals withDbus [
        dbus-python
      ]
    );

  nativeCheckInputs = with python.pkgs; [
    mock
    pytestCheckHook
  ];

  disabledTests = [
    "test_xmpp"
  ];

  disabledTestPaths = [
    "tests/test_xmpp.py"
  ];

  preCheck = ''
    export HOME=$(mktemp -d)
  '';

  meta = with lib; {
    description = "Utility for sending notifications, on demand and when commands finish";
    homepage = "http://ntfy.rtfd.org/";
    homepage = "https://ntfy.rtfd.org/";
    license = licenses.gpl3;
    maintainers = with maintainers; [ kamilchm ];
    mainProgram = "ntfy";