aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/python-modules/tatsu
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/tatsu')
-rw-r--r--nixpkgs/pkgs/development/python-modules/tatsu/default.nix48
1 files changed, 48 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/tatsu/default.nix b/nixpkgs/pkgs/development/python-modules/tatsu/default.nix
new file mode 100644
index 00000000000..922ca1b9b95
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tatsu/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, pythonOlder
+, colorama, mypy, pyyaml, regex
+, dataclasses, typing
+, pytestrunner, pytest-mypy
+}:
+
+buildPythonPackage rec {
+ pname = "TatSu";
+ version = "5.0.0";
+
+ src = fetchFromGitHub {
+ owner = "neogeny";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1c16fcxf0xjkh5py9bnj6ljb9krhrj57mkwayl1w1dvzwl5lkgj3";
+ };
+
+ # Since version 5.0.0 only >=3.8 is officially supported, but ics is not
+ # compatible with Python 3.8 due to aiohttp:
+ disabled = pythonOlder "3.7";
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "python_requires='>=3.8'," "python_requires='>=3.7',"
+ '';
+
+ 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 ];
+ };
+
+}