depot/third_party/nixpkgs/pkgs/development/python-modules/tree-sitter-languages/default.nix
Default email bcb2f287e1 Project import generated by Copybara.
GitOrigin-RevId: d603719ec6e294f034936c0d0dc06f689d91b6c3
2024-06-20 20:27:18 +05:30

68 lines
1.9 KiB
Nix

{ lib
, buildPythonPackage
, fetchFromGitHub
, setuptools
, wheel
, cython
, tree-sitter0_21
, pytestCheckHook
, python
}:
buildPythonPackage rec {
pname = "tree-sitter-languages";
version = "1.10.2";
pyproject = true;
src = fetchFromGitHub {
owner = "grantjenks";
repo = "py-tree-sitter-languages";
rev = "v${version}";
hash = "sha256-wKU2c8QRBKFVFqg+DAeH5+cwm5jpDLmPZG3YBUsh/lM=";
# Use git, to also fetch tree-sitter repositories that upstream puts their
# hases in the repository as well, in repos.txt.
forceFetchGit = true;
postFetch = ''
cd $out
substitute build.py get-repos.py \
--replace-fail "from tree_sitter import Language" "" \
--replace-fail 'print(f"{sys.argv[0]}: Building", languages_filename)' "exit(0)"
${python.pythonOnBuildForHost.interpreter} get-repos.py
rm -rf vendor/*/.git
'';
};
build-system = [
setuptools
wheel
cython
];
dependencies = [
# https://github.com/grantjenks/py-tree-sitter-languages/issues/67
tree-sitter0_21
];
# Generate languages.so file (build won't fail without this, but tests will).
preBuild = ''
${python.pythonOnBuildForHost.interpreter} build.py
'';
nativeCheckInputs = [
pytestCheckHook
];
# Without cd $out, tests fail to import the compiled cython extensions.
# Without copying the ./tests/ directory to $out, pytest won't detect the
# tests and run them. See also:
# https://github.com/NixOS/nixpkgs/issues/255262
preCheck = ''
cp -r tests $out/${python.sitePackages}/tree_sitter_languages
cd $out
'';
pythonImportsCheck = [ "tree_sitter_languages" ];
meta = with lib; {
description = "Binary Python wheels for all tree sitter languages";
homepage = "https://github.com/grantjenks/py-tree-sitter-languages";
license = licenses.asl20;
maintainers = with maintainers; [ doronbehar ];
};
}