{ lib, buildPythonPackage, python, fetchFromGitHub, mkdocs, twine, arpeggio, click, future, setuptools, callPackage, gprof2dot, html5lib, jinja2, psutil, }: let textx = buildPythonPackage rec { pname = "textx"; version = "3.0.0"; format = "setuptools"; src = fetchFromGitHub { owner = pname; repo = pname; rev = version; hash = "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/${python.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"; mainProgram = "textx"; 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