1{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
2, colorama, regex
3, pytest-runner, pytestCheckHook, pytest-mypy
4}:
5
6buildPythonPackage rec {
7 pname = "tatsu";
8 version = "5.8.3";
9 # upstream only supports 3.10+
10 disabled = pythonOlder "3.10";
11
12 src = fetchFromGitHub {
13 owner = "neogeny";
14 repo = "TatSu";
15 rev = "refs/tags/v${version}";
16 sha256 = "sha256-cKEMRbH/xNtYM0lmNVazv3i0Q1tmVrVPrB6F2s02Sro=";
17 };
18
19 nativeBuildInputs = [ pytest-runner ];
20 propagatedBuildInputs = [ colorama regex ];
21 checkInputs = [ pytestCheckHook pytest-mypy ];
22
23 pythonImportsCheck = [ "tatsu" ];
24
25 meta = with lib; {
26 description = "Generates Python parsers from grammars in a variation of EBNF";
27 longDescription = ''
28 TatSu (the successor to Grako) is a tool that takes grammars in a
29 variation of EBNF as input, and outputs memoizing (Packrat) PEG parsers in
30 Python.
31 '';
32 homepage = "https://tatsu.readthedocs.io/";
33 license = licenses.bsd2;
34 maintainers = with maintainers; [ ];
35 };
36
37}