summaryrefslogtreecommitdiff
path: root/pkgs/development/python-modules/bugwarrior/default.nix
blob: 308f66c73e7c7115907ac343680625b918fd3927 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
{
  lib,
  stdenv,
  buildPythonPackage,
  fetchFromGitHub,

  # build-system
  setuptools,

  # dependencies
  click,
  dogpile-cache,
  jinja2,
  lockfile,
  pydantic,
  python-dateutil,
  requests,
  taskw,

  # optional-dependencies
  # bts
  debianbts,
  # bugzilla
  python-bugzilla,
  # gmail
  google-api-python-client,
  google-auth-oauthlib,
  # jira
  jira,
  # keyring
  keyring,
  # trac
  offtrac,

  # tests
  docutils,
  pytest-subtests,
  pytestCheckHook,
  responses,
  sphinx,
  sphinx-click,
  sphinx-inline-tabs,
  taskwarrior3,
  versionCheckHook,
  writableTmpDirAsHomeHook,
}:

buildPythonPackage (finalAttrs: {
  pname = "bugwarrior";
  version = "2.1.0";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "GothenburgBitFactory";
    repo = "bugwarrior";
    tag = finalAttrs.version;
    hash = "sha256-Px0yOIdXalIJdXMmjMnpl74aaUzaptS8Esy21NMZH98=";
  };

  build-system = [ setuptools ];

  dependencies = [
    click
    dogpile-cache
    jinja2
    lockfile
    pydantic
    python-dateutil
    requests
    taskw
  ]
  ++ pydantic.optional-dependencies.email;

  optional-dependencies = {
    bts = [ debianbts ];
    bugzilla = [ python-bugzilla ];
    gmail = [
      google-api-python-client
      google-auth-oauthlib
    ];
    jira = [ jira ];
    keyring = [ keyring ];
    trac = [ offtrac ];
  };

  nativeCheckInputs = [
    docutils
    pytest-subtests
    pytestCheckHook
    responses
    sphinx
    sphinx-click
    sphinx-inline-tabs
    taskwarrior3
    versionCheckHook
    writableTmpDirAsHomeHook
  ]
  ++ lib.concatAttrValues finalAttrs.passthru.optional-dependencies;
  disabledTestPaths = [
    # Optional dependencies for these services aren't packaged.
    "tests/test_kanboard.py"
    "tests/test_phab.py"
    "tests/test_todoist.py"
  ];
  disabledTests = [
    # Requires ini2toml dependency, which isn't packaged.
    "TestIni2Toml"
    # Import services for which the optional dependencies aren't packaged.
    "TestValidation"
    "ExampleTest"
    "TestServices"

    # Remove test that depend on ruff to prevent it from having too many consumers
    "test_ruff_check"
    "test_ruff_format"
  ]
  ++ lib.optionals stdenv.hostPlatform.isDarwin [
    # sphinx.errors.ExtensionError: Could not import extension config
    # (exception: No module named 'ini2toml')
    "test_docs_build_without_warning"
    "test_manpage_build_without_warning"
  ];

  pythonImportsCheck = [ "bugwarrior" ];

  meta = {
    homepage = "https://github.com/GothenburgBitFactory/bugwarrior";
    description = "Sync github, bitbucket, bugzilla, and trac issues with taskwarrior";
    changelog = "https://github.com/GothenburgBitFactory/bugwarrior/blob/${finalAttrs.src.tag}/CHANGELOG.rst";
    license = lib.licenses.gpl3Plus;
    platforms = lib.platforms.all;
    mainProgram = "bugwarrior";
    maintainers = with lib.maintainers; [
      pierron
      ryneeverett
    ];
  };
})