diff options
Diffstat (limited to 'pkgs/development/python-modules/textx/default.nix')
-rw-r--r-- | pkgs/development/python-modules/textx/default.nix | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/textx/default.nix b/pkgs/development/python-modules/textx/default.nix new file mode 100644 index 00000000000..9243d3a3edb --- /dev/null +++ b/pkgs/development/python-modules/textx/default.nix @@ -0,0 +1,178 @@ +{ lib +, buildPythonPackage +, python3 +, fetchFromGitHub +, mkdocs +, twine +, arpeggio +, click +, future +, setuptools +, callPackage +, gprof2dot +, html5lib +, jinja2 +, memory_profiler +, psutil +, pytestCheckHook +}: + +let + textx = buildPythonPackage rec { + pname = "textx"; + version = "3.0.0"; + format = "setuptools"; + + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = version; + sha256 = "sha256-uZlO82dKtWQQR5+Q7dWk3+ZoUzAjDJ8qzC4UMLCtnBk="; + }; + + postPatch = '' + substituteInPlace setup.cfg --replace "click >=7.0, <8.0" "click >=7.0" + ''; + + outputs = [ + "out" + "testout" + ]; + + nativeBuildInputs = [ + mkdocs + twine + ]; + + propagatedBuildInputs = [ + arpeggio + click + future + setuptools + ]; + + postInstall = '' + # FileNotFoundError: [Errno 2] No such file or directory: '$out/lib/python3.10/site-packages/textx/textx.tx + cp "$src/textx/textx.tx" "$out/${python3.sitePackages}/${pname}/" + + # Install tests as the tests output. + mkdir $testout + cp -r tests $testout/tests + ''; + + pythonImportsCheck = [ + "textx" + ]; + + # Circular dependencies, do tests in passthru.tests instead. + doCheck = false; + + passthru.tests = { + textxTests = callPackage ./tests.nix { + inherit + textx-data-dsl + textx-example-project + textx-flow-codegen + textx-flow-dsl + textx-types-dsl; + }; + }; + + meta = with lib; { + description = "Domain-specific languages and parsers in Python"; + homepage = "https://github.com/textx/textx/"; + license = licenses.mit; + maintainers = with maintainers; [ yuu ]; + }; + }; + + textx-data-dsl = buildPythonPackage rec { + pname = "textx-data-dsl"; + version = "1.0.0"; + inherit (textx) src; + # `format` isn't included in the output of `mk-python-derivation`. + # So can't inherit format: `error: attribute 'format' missing`. + format = "setuptools"; + pathToSourceRoot = "tests/functional/registration/projects/data_dsl"; + sourceRoot = "${src.name}/" + pathToSourceRoot; + propagatedBuildInputs = [ + textx + textx-types-dsl + ]; + meta = with lib; { + inherit (textx.meta) license maintainers; + description = "Sample textX language for testing"; + homepage = textx.homepage + "tree/${version}/" + pathToSourceRoot; + }; + }; + + textx-flow-codegen = buildPythonPackage rec { + pname = "textx-flow-codegen"; + version = "1.0.0"; + inherit (textx) src; + format = "setuptools"; + pathToSourceRoot = "tests/functional/registration/projects/flow_codegen"; + sourceRoot = "${src.name}/" + pathToSourceRoot; + propagatedBuildInputs = [ + click + textx + ]; + meta = with lib; { + inherit (textx.meta) license maintainers; + description = "Sample textX language for testing"; + homepage = textx.homepage + "tree/${version}/" + pathToSourceRoot; + }; + }; + + textx-flow-dsl = buildPythonPackage rec { + pname = "textx-flow-dsl"; + version = "1.0.0"; + inherit (textx) src; + format = "setuptools"; + pathToSourceRoot = "tests/functional/registration/projects/flow_dsl"; + sourceRoot = "${src.name}/" + pathToSourceRoot; + propagatedBuildInputs = [ + textx + ]; + meta = with lib; { + inherit (textx.meta) license maintainers; + description = "Sample textX language for testing"; + homepage = textx.homepage + "tree/${version}/" + pathToSourceRoot; + }; + }; + + textx-types-dsl = buildPythonPackage rec { + pname = "textx-types-dsl"; + version = "1.0.0"; + inherit (textx) src; + format = "setuptools"; + pathToSourceRoot = "tests/functional/registration/projects/types_dsl"; + sourceRoot = "${src.name}/" + pathToSourceRoot; + propagatedBuildInputs = [ + textx + ]; + meta = with lib; { + inherit (textx.meta) license maintainers; + description = "Sample textX language for testing"; + homepage = textx.homepage + "tree/${version}/" + pathToSourceRoot; + }; + }; + + textx-example-project = buildPythonPackage rec { + pname = "textx-example-project"; + version = "1.0.0"; + inherit (textx) src; + format = "setuptools"; + pathToSourceRoot = "tests/functional/subcommands/example_project"; + sourceRoot = "${src.name}/" + pathToSourceRoot; + propagatedBuildInputs = [ + textx + ]; + meta = with lib; { + inherit (textx.meta) license maintainers; + description = "Sample textX sub-command for testing"; + homepage = textx.homepage + "tree/${version}/" + pathToSourceRoot; + }; + }; +in + textx |