diff --git a/pkgs/development/python-modules/tatsu/default.nix b/pkgs/development/python-modules/tatsu/default.nix new file mode 100644 index 000000000000..539cbdca3ee1 --- /dev/null +++ b/pkgs/development/python-modules/tatsu/default.nix @@ -0,0 +1,40 @@ +{ stdenv, buildPythonPackage, fetchFromGitHub, pythonOlder +, colorama, mypy, pyyaml, regex +, dataclasses, typing +, pytestrunner, pytest-mypy +}: + +buildPythonPackage rec { + pname = "TatSu"; + version = "4.4.0"; + + src = fetchFromGitHub { + owner = "neogeny"; + repo = pname; + rev = "v${version}"; + sha256 = "1jjd73yr3x56ij2ggxf6s62mf90i9v7wn3i0h67zxys55hlp2yh4"; + }; + + nativeBuildInputs = [ pytestrunner ]; + propagatedBuildInputs = [ colorama mypy pyyaml regex ] + ++ stdenv.lib.optionals (pythonOlder "3.7") [ dataclasses ] + ++ stdenv.lib.optionals (pythonOlder "3.5") [ typing ]; + checkInputs = [ pytest-mypy ]; + + checkPhase = '' + pytest test/ + ''; + + meta = with stdenv.lib; { + description = "Generates Python parsers from grammars in a variation of EBNF"; + longDescription = '' + TatSu (the successor to Grako) is a tool that takes grammars in a + variation of EBNF as input, and outputs memoizing (Packrat) PEG parsers in + Python. + ''; + homepage = "https://tatsu.readthedocs.io/"; + license = licenses.bsd2; + maintainers = with maintainers; [ primeos ]; + }; + +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 82293c8a5714..11387381d02f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5054,6 +5054,8 @@ in { tasklib = callPackage ../development/python-modules/tasklib { }; + tatsu = callPackage ../development/python-modules/tatsu { }; + tempita = callPackage ../development/python-modules/tempita { }; terminado = callPackage ../development/python-modules/terminado { };