diff --git a/pkgs/development/python-modules/pyperscan/default.nix b/pkgs/development/python-modules/pyperscan/default.nix new file mode 100644 index 00000000000..954da379d7e --- /dev/null +++ b/pkgs/development/python-modules/pyperscan/default.nix @@ -0,0 +1,51 @@ +{ lib +, stdenv +, fetchFromGitHub +, buildPythonPackage +, rustPlatform +, pytestCheckHook +, libiconv +, vectorscan +}: + +buildPythonPackage rec { + pname = "pyperscan"; + version = "0.2.2"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "vlaci"; + repo = "pyperscan"; + rev = "v${version}"; + hash = "sha256-ioNGEmWy+lEzazF1RzMFS06jYLNYll3QSlWAF0AoU7Y="; + }; + + cargoDeps = rustPlatform.fetchCargoTarball { + inherit src; + name = "${pname}-${version}"; + hash = "sha256-2zppyxJ+XaI/JCkp7s27/jgtSbwxnI4Yil5KT8WgrVI="; + }; + + nativeBuildInputs = with rustPlatform; [ + bindgenHook + cargoSetupHook + maturinBuildHook + ]; + + checkInputs = [ pytestCheckHook ]; + + buildInputs = [ vectorscan ] ++ lib.optional stdenv.isDarwin libiconv; + + # Disable default features to use the system vectorscan library instead of a vendored one. + maturinBuildFlags = [ "--no-default-features" ]; + + pythonImportsCheck = [ "pyperscan" ]; + + meta = with lib; { + description = "a hyperscan binding for Python, which supports vectorscan"; + homepage = "https://github.com/vlaci/pyperscan"; + platforms = platforms.unix; + license = with licenses; [ asl20 /* or */ mit ]; + maintainers = with maintainers; [ tnias vlaci ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 54e54745870..c06077e3c34 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8971,6 +8971,8 @@ self: super: with self; { pyperclip = callPackage ../development/python-modules/pyperclip { }; + pyperscan = callPackage ../development/python-modules/pyperscan { }; + pyperf = callPackage ../development/python-modules/pyperf { }; pyphen = callPackage ../development/python-modules/pyphen { };