1{
2 lib,
3 buildPythonPackage,
4 colorama,
5 fetchFromGitHub,
6 pytestCheckHook,
7 pythonOlder,
8 regex,
9 setuptools,
10}:
11
12buildPythonPackage rec {
13 pname = "tatsu";
14 version = "5.13.1";
15 pyproject = true;
16
17 disabled = pythonOlder "3.10";
18
19 src = fetchFromGitHub {
20 owner = "neogeny";
21 repo = "TatSu";
22 tag = "v${version}";
23 hash = "sha256-iZtYqPvQxXl6SFG2An7dN3KxaxCTvAiAkeeuXUhLuF0=";
24 };
25
26 nativeBuildInputs = [ setuptools ];
27
28 propagatedBuildInputs = [
29 colorama
30 regex
31 ];
32
33 nativeCheckInputs = [ pytestCheckHook ];
34
35 pythonImportsCheck = [ "tatsu" ];
36
37 meta = with lib; {
38 description = "Generates Python parsers from grammars in a variation of EBNF";
39 longDescription = ''
40 TatSu (the successor to Grako) is a tool that takes grammars in a
41 variation of EBNF as input, and outputs memoizing (Packrat) PEG parsers in
42 Python.
43 '';
44 homepage = "https://tatsu.readthedocs.io/";
45 changelog = "https://github.com/neogeny/TatSu/releases/tag/${src.tag}";
46 license = licenses.bsd2;
47 maintainers = [ ];
48 };
49}