1{
2 lib,
3 buildPythonPackage,
4 callPackage,
5 fetchFromGitHub,
6 pytestCheckHook,
7 pythonOlder,
8
9 setuptools,
10 build,
11 coloredlogs,
12 importlib-metadata,
13 packaging,
14 pip,
15 toml,
16 urllib3,
17}:
18
19buildPythonPackage rec {
20 pname = "bork";
21 version = "9.0.0";
22 pyproject = true;
23 disabled = pythonOlder "3.8";
24
25 src = fetchFromGitHub {
26 owner = "duckinator";
27 repo = pname;
28 rev = "refs/tags/v${version}";
29 hash = "sha256-YqvtOwd00TXD4I3fIQolvjHnjREvQgbdrEO9Z96v1Kk=";
30 };
31
32 build-system = [
33 setuptools
34 ];
35
36 pythonRelaxDeps = [
37 "packaging"
38 ];
39
40 dependencies =
41 [
42 build
43 coloredlogs
44 packaging
45 pip
46 urllib3
47 ]
48 ++ lib.optionals (pythonOlder "3.11") [ toml ]
49 ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
50
51 pythonImportsCheck = [
52 "bork"
53 "bork.api"
54 "bork.cli"
55 ];
56
57 nativeCheckInputs = [ pytestCheckHook ];
58
59 pytestFlagsArray = [ "-m 'not network'" ];
60
61 disabledTests = [
62 # tries to call python -m bork
63 "test_repo"
64 ];
65
66 passthru.tests = callPackage ./tests.nix { };
67
68 meta = with lib; {
69 description = "Python build and release management tool";
70 mainProgram = "bork";
71 homepage = "https://github.com/duckinator/bork";
72 license = licenses.mit;
73 maintainers = with maintainers; [ nicoo ];
74 };
75}