depot/third_party/nixpkgs/pkgs/development/python-modules/pyhanko/default.nix

139 lines
2.7 KiB
Nix
Raw Normal View History

{ lib
, buildPythonPackage
, fetchFromGitHub
, pythonOlder
, asn1crypto
, click
, cryptography
, pyhanko-certvalidator
, pytz
, pyyaml
, qrcode
, requests
, tzlocal
, certomancer
, freezegun
, python-pae
, pytest-aiohttp
, requests-mock
, pytestCheckHook
# optionals
, defusedxml
, oscrypto
, fonttools
, uharfbuzz
, pillow
, python-barcode
, python-pkcs11
, aiohttp
}:
buildPythonPackage rec {
pname = "pyhanko";
version = "0.17.0";
format = "setuptools";
disabled = pythonOlder "3.7";
# Tests are only available on GitHub
src = fetchFromGitHub {
owner = "MatthiasValvekens";
repo = "pyHanko";
rev = "refs/tags/${version}";
hash = "sha256-tvb2zdmIN6MkezmLNkyCcP8EfqxrbPg/FEqgW16Ka6Q=";
};
propagatedBuildInputs = [
asn1crypto
click
cryptography
pyhanko-certvalidator
pytz
pyyaml
qrcode
requests
tzlocal
];
passthru.optional-dependencies = {
extra_pubkey_algs = [
oscrypto
];
xmp = [
defusedxml
];
opentype = [
fonttools
uharfbuzz
];
image-support = [
pillow
python-barcode
];
pkcs11 = [
python-pkcs11
];
async_http = [
aiohttp
];
};
postPatch = ''
substituteInPlace setup.py \
--replace ", 'pytest-runner'" "" \
'';
nativeCheckInputs = [
aiohttp
certomancer
freezegun
python-pae
pytest-aiohttp
requests-mock
pytestCheckHook
] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
disabledTestPaths = [
# ModuleNotFoundError: No module named 'csc_dummy'
"pyhanko_tests/test_csc.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 ];
};
}