{ lib , stdenv , buildPythonPackage , cargo , libiconv , rustPlatform , rustc , sudachi-rs , setuptools-rust , pytestCheckHook , sudachidict-core , tokenizers , sudachipy }: buildPythonPackage rec { pname = "sudachipy"; inherit (sudachi-rs) src version; cargoDeps = rustPlatform.fetchCargoTarball { inherit src; name = "${pname}-${version}"; hash = "sha256-ARwvThfATDdzBTjPFr9yjbE/0eYvp/TCZOEGbUupJmU="; }; nativeBuildInputs = [ cargo rustPlatform.cargoSetupHook rustc setuptools-rust ]; buildInputs = lib.optionals stdenv.isDarwin [ libiconv ]; preBuild = '' cd python ''; # avoid infinite recursion due to sudachidict doCheck = false; nativeCheckInputs = [ pytestCheckHook sudachidict-core tokenizers ]; pythonImportsCheck = [ "sudachipy" ]; passthru = { inherit (sudachi-rs) updateScript; tests = { pytest = sudachipy.overridePythonAttrs ( _: { doCheck = true; # avoid catchConflicts of sudachipy # we don't need to install this package since it is just a test dontInstall = true; } ); }; }; meta = sudachi-rs.meta // { homepage = "https://github.com/WorksApplications/sudachi.rs/tree/develop/python"; mainProgram = "sudachipy"; }; }