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
];
};
})
|