1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 build,
6 click,
7 fetchPypi,
8 pep517,
9 pip,
10 pytest-xdist,
11 pytestCheckHook,
12 pythonOlder,
13 setuptools,
14 setuptools-scm,
15 tomli,
16 tomli-w,
17 wheel,
18}:
19
20buildPythonPackage rec {
21 pname = "pip-tools";
22 version = "7.4.1";
23 pyproject = true;
24
25 disabled = pythonOlder "3.8";
26
27 src = fetchPypi {
28 inherit pname version;
29 hash = "sha256-hkgm9Qc4ZEUOJNvuuFzjkgzfsJhIo9aev1N7Uh8UvMk=";
30 };
31
32 patches = [ ./fix-setup-py-bad-syntax-detection.patch ];
33
34 build-system = [ setuptools-scm ];
35
36 dependencies = [
37 build
38 click
39 pep517
40 pip
41 setuptools
42 wheel
43 ]
44 ++ lib.optionals (pythonOlder "3.11") [ tomli ];
45
46 __darwinAllowLocalNetworking = true;
47
48 nativeCheckInputs = [
49 pytest-xdist
50 pytestCheckHook
51 tomli-w
52 ];
53
54 preCheck = lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) ''
55 # https://github.com/python/cpython/issues/74570#issuecomment-1093748531
56 export no_proxy='*';
57 '';
58
59 disabledTests = [
60 # Tests require network access
61 "network"
62 "test_direct_reference_with_extras"
63 "test_local_duplicate_subdependency_combined"
64 "test_bad_setup_file"
65 # Assertion error
66 "test_compile_recursive_extras"
67 "test_combine_different_extras_of_the_same_package"
68 "test_diff_should_not_uninstall"
69 "test_cli_compile_all_extras_with_multiple_packages"
70 # Deprecations
71 "test_error_in_pyproject_toml"
72
73 # pip 25.0 compat issues
74 # https://github.com/jazzband/pip-tools/issues/2112
75 # requirement doesn't end with semicolon
76 "test_resolver"
77 "test_resolver__custom_unsafe_deps"
78 # constraints.txt is now in a tmpdir
79 "test_preserve_via_requirements_constrained_dependencies_when_run_twice"
80 "test_annotate_option"
81 # TypeError("'<' not supported between instances of 'InstallationCandidate' and 'InstallationCandidate'")>.exit_code
82 "test_no_candidates"
83 "test_no_candidates_pre"
84 "test_failure_of_legacy_resolver_prompts_for_backtracking"
85 ];
86
87 pythonImportsCheck = [ "piptools" ];
88
89 meta = with lib; {
90 description = "Keeps your pinned dependencies fresh";
91 homepage = "https://github.com/jazzband/pip-tools/";
92 changelog = "https://github.com/jazzband/pip-tools/releases/tag/${version}";
93 license = licenses.bsd3;
94 maintainers = with maintainers; [ zimbatm ];
95 };
96}