{
lib,
stdenv,
buildPythonPackage,
colorlog,
fetchFromGitHub,
jinja2,
mock,
pdm-backend,
pylibmc,
pystache,
pytest-cov-stub,
pytestCheckHook,
pythonOlder,
pyyaml,
redis,
requests,
tabulate,
watchdog,
}:
buildPythonPackage rec {
pname = "cement";
version = "3.0.12";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "datafolklabs";
repo = "cement";
rev = "refs/tags/${version}";
hash = "sha256-weBqmNEjeSh5YQfHK48VVFW3UbZQmV4MiIQ3UPQKTTI=";
};
build-system = [ pdm-backend ];
optional-dependencies = {
colorlog = [ colorlog ];
jinja2 = [ jinja2 ];
mustache = [ pystache ];
generate = [ pyyaml ];
redis = [ redis ];
memcached = [ pylibmc ];
tabulate = [ tabulate ];
watchdog = [ watchdog ];
yaml = [ pyyaml ];
cli = [
jinja2
pyyaml
];
nativeCheckInputs = [
mock
pytest-cov-stub
pytestCheckHook
requests
] ++ lib.flatten (builtins.attrValues optional-dependencies);
pythonImportsCheck = [ "cement" ];
# Tests are failing on Darwin
doCheck = !stdenv.hostPlatform.isDarwin;
disabledTests = [
# Test only works with the source from PyPI
"test_get_version"
disabledTestPaths = [
# Tests require network access
"tests/ext/test_ext_memcached.py"
"tests/ext/test_ext_redis.py"
"tests/ext/test_ext_smtp.py"
meta = with lib; {
description = "CLI Application Framework for Python";
homepage = "https://builtoncement.com/";
changelog = "https://github.com/datafolklabs/cement/blob/${version}/CHANGELOG.md";
license = licenses.bsd3;
maintainers = with maintainers; [ eqyiel ];
mainProgram = "cement";
}