nixpkgs/pkgs/development/python-modules/pyhanko/default.nix
2022-04-22 10:46:33 -07:00

133 lines
2.9 KiB
Nix

{ lib
, buildPythonPackage
, fetchFromGitHub
, pythonOlder
, asn1crypto
, click
, cryptography
, pyhanko-certvalidator
, pytz
, pyyaml
, qrcode
, requests
, tzlocal
, certomancer
, freezegun
, python-pae
, pytest-aiohttp
, requests-mock
, pytestCheckHook
# Flags to add to the library
, extraPubkeyAlgsSupport ? false
, oscrypto
, opentypeSupport ? false
, fonttools
, uharfbuzz
, imageSupport ? false
, pillow
, python-barcode
, pkcs11Support ? false
, python-pkcs11
, asyncHttpSupport ? false
, aiohttp
}:
buildPythonPackage rec {
pname = "pyhanko";
version = "0.12.1";
format = "setuptools";
disabled = pythonOlder "3.7";
# Tests are only available on GitHub
src = fetchFromGitHub {
owner = "MatthiasValvekens";
repo = "pyHanko";
rev = version;
sha256 = "sha256-W60NTKEtCqJ/QdtNiieKUsrl2jIjIH86Wych68R3mBc=";
};
propagatedBuildInputs = [
click
pyhanko-certvalidator
pytz
pyyaml
qrcode
tzlocal
] ++ lib.optionals (extraPubkeyAlgsSupport) [
oscrypto
] ++ lib.optionals (opentypeSupport) [
fonttools
uharfbuzz
] ++ lib.optionals (imageSupport) [
pillow
python-barcode
] ++ lib.optionals (pkcs11Support) [
python-pkcs11
] ++ lib.optionals (asyncHttpSupport) [
aiohttp
];
postPatch = ''
substituteInPlace setup.py \
--replace ", 'pytest-runner'" "" \
--replace "pytest-aiohttp~=0.3.0" "pytest-aiohttp~=1.0.3"
'';
checkInputs = [
aiohttp
certomancer
freezegun
python-pae
pytest-aiohttp
requests-mock
pytestCheckHook
];
disabledTestPaths = lib.optionals (!opentypeSupport) [
"pyhanko_tests/test_stamp.py"
"pyhanko_tests/test_text.py"
] ++ lib.optionals (!imageSupport) [
"pyhanko_tests/test_barcode.py"
] ++ lib.optionals (!pkcs11Support) [
"pyhanko_tests/test_pkcs11.py"
];
disabledTests = [
# Most of the test require working with local certificates,
# contacting OSCP or performing requests
"test_generic_data_sign_legacy"
"test_generic_data_sign"
"test_cms_v3_sign"
"test_detached_cms_with_self_reported_timestamp"
"test_detached_cms_with_tst"
"test_detached_cms_with_content_tst"
"test_detached_cms_with_wrong_content_tst"
"test_detached_with_malformed_content_tst"
"test_noop_attribute_prov"
"test_detached_cades_cms_with_tst"
"test_read_qr_config"
"test_no_changes_policy"
"test_bogus_metadata_manipulation"
"test_tamper_sig_obj"
"test_signed_file_diff_proxied_objs"
"test_pades_revinfo_live"
"test_diff_fallback_ok"
"test_no_diff_summary"
"test_ocsp_embed"
"test_ts_fetch_aiohttp"
"test_ts_fetch_requests"
];
pythonImportsCheck = [
"pyhanko"
];
meta = with lib; {
description = "Sign and stamp PDF files";
homepage = "https://github.com/MatthiasValvekens/pyHanko";
license = licenses.mit;
maintainers = with maintainers; [ wolfangaukang ];
};
}