Merge pull request #163964 from yuuyins/strictdoc

strictdoc: init at 0.0.26

Sandro e59f65ca b2398812

Changed files
+451
pkgs
applications
science
engineering
development
python-modules
top-level
+15
pkgs/applications/science/engineering/strictdoc/conftest.py.patch
···
+
diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py
+
index 932747c..9b3d6ac 100644
+
--- a/tests/unit/conftest.py
+
+++ b/tests/unit/conftest.py
+
@@ -1,9 +1,7 @@
+
import os
+
import sys
+
+
-STRICTDOC_ROOT_PATH = os.path.abspath(
+
- os.path.join(__file__, "../../../../strictdoc")
+
-)
+
+STRICTDOC_ROOT_PATH = "@strictdoc_root_path@"
+
assert os.path.exists(STRICTDOC_ROOT_PATH), "does not exist: {}".format(
+
STRICTDOC_ROOT_PATH
+
)
+100
pkgs/applications/science/engineering/strictdoc/default.nix
···
+
{ lib
+
, stdenv
+
, buildPythonApplication
+
, fetchFromGitHub
+
, python3
+
, pythonOlder
+
, html5lib
+
, invoke
+
, openpyxl
+
, poetry-core
+
, tidylib
+
, beautifulsoup4
+
, dataclasses
+
, datauri
+
, docutils
+
, jinja2
+
, lxml
+
, markupsafe
+
, pygments
+
, reqif
+
, setuptools
+
, textx
+
, xlrd
+
, XlsxWriter
+
, pytestCheckHook
+
}:
+
+
buildPythonApplication rec {
+
pname = "strictdoc";
+
version = "0.0.26";
+
format = "pyproject";
+
+
src = fetchFromGitHub {
+
owner = "strictdoc-project";
+
repo = pname;
+
rev = version;
+
sha256 = "sha256-SMAwji75AjW8CzXRKBDF+fR/a5++GhgIvkcuD+a/vp4=";
+
};
+
+
patches = [
+
./conftest.py.patch
+
];
+
+
postPatch = ''
+
substituteInPlace ./tests/unit/conftest.py \
+
--replace @strictdoc_root_path@ "${placeholder "out"}/${python3.sitePackages}/strictdoc"
+
+
substituteInPlace requirements.txt \
+
--replace "jinja2 >= 2.11.2, <3.0" "jinja2 >= 2.11.2" \
+
--replace "reqif >= 0.0.18, == 0.*" "reqif>=0.0.8" \
+
--replace "==" ">=" \
+
--replace "~=" ">="
+
'';
+
+
nativeBuildInputs = [
+
html5lib
+
invoke
+
openpyxl
+
poetry-core
+
tidylib
+
];
+
+
propagatedBuildInputs = [
+
beautifulsoup4
+
datauri
+
docutils
+
jinja2
+
lxml
+
markupsafe
+
pygments
+
reqif
+
setuptools
+
textx
+
xlrd
+
XlsxWriter
+
] ++ lib.optionals (pythonOlder "3.7") [
+
dataclasses
+
];
+
+
checkInputs = [
+
pytestCheckHook
+
];
+
+
pythonImportsCheck = [
+
"strictdoc"
+
];
+
+
disabledTests = [
+
# fixture 'fs' not found
+
"test_001_load_from_files"
+
];
+
+
meta = with lib; {
+
description = "Software requirements specification tool";
+
homepage = "https://github.com/strictdoc-project/strictdoc";
+
changelog = "https://github.com/strictdoc-project/strictdoc/releases";
+
license = licenses.asl20;
+
maintainers = with maintainers; [ yuu ];
+
};
+
}
+37
pkgs/development/python-modules/datauri/default.nix
···
+
{ lib
+
, buildPythonPackage
+
, fetchFromGitHub
+
, pytestCheckHook
+
}:
+
+
buildPythonPackage rec {
+
pname = "datauri";
+
version = "1.1.0";
+
+
src = fetchFromGitHub {
+
owner = "fcurella";
+
repo = "python-datauri";
+
rev = "v${version}";
+
sha256 = "sha256-Eevd/xxKgxvvsAfI/L/KShH+PfxffBGyVwKewLgyEu0=";
+
};
+
+
pythonImportsCheck = [
+
"datauri"
+
];
+
+
checkInputs = [
+
pytestCheckHook
+
];
+
+
disabledTestPaths = [
+
# UnicodeDecodeError: 'utf-8' codec can't decode
+
"tests/test_file_ebcdic.txt"
+
];
+
+
meta = with lib; {
+
description = "Data URI manipulation made easy.";
+
homepage = "https://github.com/fcurella/python-datauri";
+
license = licenses.unlicense;
+
maintainers = with maintainers; [ yuu ];
+
};
+
}
+60
pkgs/development/python-modules/reqif/default.nix
···
+
{ lib
+
, buildPythonPackage
+
, python3
+
, pythonOlder
+
, fetchFromGitHub
+
, poetry-core
+
, beautifulsoup4
+
, lxml
+
, jinja2
+
, dataclasses
+
, pytestCheckHook
+
}:
+
+
buildPythonPackage rec {
+
pname = "reqif";
+
version = "0.0.8";
+
format = "pyproject";
+
+
src = fetchFromGitHub {
+
owner = "strictdoc-project";
+
repo = pname;
+
rev = version;
+
sha256 = "sha256-PtzRJUvv+Oee08+sdakFviKIhwfLngyal1WSWDtMELg=";
+
};
+
+
postPatch = ''
+
substituteInPlace ./tests/unit/conftest.py --replace \
+
"os.path.abspath(os.path.join(__file__, \"../../../../reqif\"))" \
+
"\"${placeholder "out"}/${python3.sitePackages}/reqif\""
+
substituteInPlace pyproject.toml --replace "^" ">="
+
substituteInPlace requirements.txt --replace "==" ">="
+
'';
+
+
nativeBuildInputs = [
+
poetry-core
+
];
+
+
propagatedBuildInputs = [
+
beautifulsoup4
+
lxml
+
jinja2
+
] ++ lib.optionals (pythonOlder "3.7") [
+
dataclasses
+
];
+
+
pythonImportsCheck = [
+
"reqif"
+
];
+
+
checkInputs = [
+
pytestCheckHook
+
];
+
+
meta = with lib; {
+
description = "Python library for ReqIF format";
+
homepage = "https://github.com/strictdoc-project/reqif";
+
license = licenses.asl20;
+
maintainers = with maintainers; [ yuu ];
+
};
+
}
+178
pkgs/development/python-modules/textx/default.nix
···
+
{ 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
+53
pkgs/development/python-modules/textx/tests.nix
···
+
{ 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/";
+
};
+
}
+2
pkgs/top-level/all-packages.nix
···
jflap = callPackage ../applications/science/engineering/jflap { };
+
strictdoc = python3.pkgs.callPackage ../applications/science/engineering/strictdoc { };
+
### SCIENCE / ELECTRONICS
adms = callPackage ../applications/science/electronics/adms { };
+6
pkgs/top-level/python-packages.nix
···
datatable = callPackage ../development/python-modules/datatable { };
+
datauri = callPackage ../development/python-modules/datauri { };
+
dateparser = callPackage ../development/python-modules/dateparser { };
dateutils = callPackage ../development/python-modules/dateutils { };
···
reproject = callPackage ../development/python-modules/reproject { };
+
reqif = callPackage ../development/python-modules/reqif { };
+
requests-aws4auth = callPackage ../development/python-modules/requests-aws4auth { };
requests-cache = callPackage ../development/python-modules/requests-cache { };
···
text-unidecode = callPackage ../development/python-modules/text-unidecode { };
textwrap3 = callPackage ../development/python-modules/textwrap3 { };
+
+
textx = callPackage ../development/python-modules/textx { };
tflearn = callPackage ../development/python-modules/tflearn { };