anchor.diff:      defusedxml croniter flask_migrate pyjwt configobj sqlsoup pillow
       python-gnupg passlib pyopenssl beautifulsoup4 smpplib flask-babel
       ldap3 huey pyyaml qrcode oauth2client requests lxml cbor2 psycopg2
  -    pydash ecdsa google-auth importlib-metadata
  +    pydash ecdsa google-auth importlib-metadata argon2-cffi bcrypt
     ];
   
     passthru.tests = { inherit (nixosTests) privacyidea; };
  
positive.code:           sha256 = "ae2f05671588762dd83a21d8b18c51fe355e86783e24594995ff8d7380dffe38";
          };
        });
        werkzeug = self.callPackage ../../../development/python2-modules/werkzeug { };
        flask = self.callPackage ../../../development/python2-modules/flask { };
        sqlsoup = super.sqlsoup.overrideAttrs ({ meta ? {}, ... }: {
          meta = meta // { broken = false; };
        });
        pyjwt = super.pyjwt.overridePythonAttrs (oldAttrs: rec {
          version = "1.7.1";
          src = python3.pkgs.fetchPypi {
            pname = "PyJWT";
            inherit version;
            sha256 = "sha256-jVmpdvt3Pz5qOchWNjV8Tw4kJwc5TK2t2YFPXLqiDpY=";
          };
          # requires different testing dependencies, and privacyIDEA will test this as well
          doCheck = false;
        });
      };
    };
  in
  python3'.pkgs.buildPythonPackage rec {
    pname = "privacyIDEA";
    version = "3.6.3";
  
    src = fetchFromGitHub {
      owner = pname;
      repo = pname;
      rev = "v${version}";
      sha256 = "sha256-SsOEmbyEAKU3pdzsyqi5SwDgJMGEAzyCywoio9iFQAA=";
      fetchSubmodules = true;
    };
  
  
negative.code:           inherit version;
            hash = "sha256-67t3fL+TEjWbiXv4G6ANrg9ctp+6KhgmXcwYpvXvdRk=";
          };
          doCheck = false;
        });
        # fails with `no tests ran in 1.75s`
        alembic = super.alembic.overridePythonAttrs (lib.const {
          doCheck = false;
        });
        flask_migrate = super.flask_migrate.overridePythonAttrs (oldAttrs: rec {
          version = "2.7.0";
  