From ddd6313bff5885731b1e62c77affc2d654ea1a47 Mon Sep 17 00:00:00 2001 From: yuu Date: Tue, 12 Apr 2022 02:33:11 -0300 Subject: [PATCH] python3Packages.textx: init at 3.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sandro Jäckel Co-authored-by: Martin Weinelt Co-authored-by: Jonathan Ringer Co-authored-by: Gaute Ravndal --- .../python-modules/textx/default.nix | 178 ++++++++++++++++++ .../python-modules/textx/tests.nix | 53 ++++++ pkgs/top-level/python-packages.nix | 2 + 3 files changed, 233 insertions(+) create mode 100644 pkgs/development/python-modules/textx/default.nix create mode 100644 pkgs/development/python-modules/textx/tests.nix diff --git a/pkgs/development/python-modules/textx/default.nix b/pkgs/development/python-modules/textx/default.nix new file mode 100644 index 000000000000..9243d3a3edb0 --- /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 diff --git a/pkgs/development/python-modules/textx/tests.nix b/pkgs/development/python-modules/textx/tests.nix new file mode 100644 index 000000000000..021224e9f35d --- /dev/null +++ b/pkgs/development/python-modules/textx/tests.nix @@ -0,0 +1,53 @@ +{ lib +, buildPythonPackage +, click +, gprof2dot +, html5lib +, jinja2 +, memory_profiler +, psutil +, pytestCheckHook +, setuptools +, textx +, textx-data-dsl +, textx-example-project +, textx-flow-codegen +, textx-flow-dsl +, textx-types-dsl +}: + +buildPythonPackage { + pname = "textx-tests"; + inherit (textx) version; + + srcs = textx.testout; + + dontBuild = true; + dontInstall = true; + + checkInputs = [ + click + gprof2dot + html5lib + jinja2 + memory_profiler + psutil + pytestCheckHook + setuptools + textx-data-dsl + textx-example-project + textx-flow-codegen + textx-flow-dsl + textx-types-dsl + ]; + + pytestFlagsArray = [ + "tests/functional" + ]; + + meta = with lib; { + inherit (textx.meta) license maintainers; + description = "passthru.tests for textx"; + homepage = textx.homepage + "tree/${version}/" + "tests/"; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 271a57e491e1..171c358e8067 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -10516,6 +10516,8 @@ in { textwrap3 = callPackage ../development/python-modules/textwrap3 { }; + textx = callPackage ../development/python-modules/textx { }; + tflearn = callPackage ../development/python-modules/tflearn { }; tgcrypto = callPackage ../development/python-modules/tgcrypto { };