1{ lib
2, stdenv
3, buildPythonPackage
4, certifi
5, fastimport
6, fetchPypi
7, gevent
8, geventhttpclient
9, git
10, glibcLocales
11, gnupg
12, gpgme
13, paramiko
14, pytestCheckHook
15, pythonOlder
16, urllib3
17}:
18
19buildPythonPackage rec {
20 version = "0.21.6";
21 pname = "dulwich";
22 format = "setuptools";
23
24 disabled = pythonOlder "3.7";
25
26 src = fetchPypi {
27 inherit pname version;
28 hash = "sha256-MPvofotR84E8Ex4oQchtAHQ00WC9FttYa0DUfzHdBbA=";
29 };
30
31 LC_ALL = "en_US.UTF-8";
32
33 propagatedBuildInputs = [
34 certifi
35 urllib3
36 ];
37
38 passthru.optional-dependencies = {
39 fastimport = [
40 fastimport
41 ];
42 pgp = [
43 gpgme
44 gnupg
45 ];
46 paramiko = [
47 paramiko
48 ];
49 };
50
51 nativeCheckInputs = [
52 gevent
53 geventhttpclient
54 git
55 glibcLocales
56 pytestCheckHook
57 ] ++ passthru.optional-dependencies.fastimport
58 ++ passthru.optional-dependencies.pgp
59 ++ passthru.optional-dependencies.paramiko;
60
61 doCheck = !stdenv.isDarwin;
62
63 disabledTests = [
64 # OSError: [Errno 84] Invalid or incomplete multibyte or wide character: b'/build/tmpsqwlbpd1/\xc0'
65 "test_no_decode_encode"
66 # OSError: [Errno 84] Invalid or incomplete multibyte or wide character: b'/build/tmpwmtfyvo2/refs.git/refs/heads/\xcd\xee\xe2\xe0\xff\xe2\xe5\xf2\xea\xe01'
67 "test_cyrillic"
68 # OSError: [Errno 84] Invalid or incomplete multibyte or wide character: b'/build/tmpfseetobk/test/\xc0'
69 "test_commit_no_encode_decode"
70 ];
71
72 disabledTestPaths = [
73 # missing test inputs
74 "dulwich/contrib/test_swift_smoke.py"
75 ];
76
77 pythonImportsCheck = [
78 "dulwich"
79 ];
80
81 meta = with lib; {
82 description = "Implementation of the Git file formats and protocols";
83 longDescription = ''
84 Dulwich is a Python implementation of the Git file formats and protocols, which
85 does not depend on Git itself. All functionality is available in pure Python.
86 '';
87 homepage = "https://www.dulwich.io/";
88 changelog = "https://github.com/dulwich/dulwich/blob/dulwich-${version}/NEWS";
89 license = with licenses; [ asl20 gpl2Plus ];
90 maintainers = with maintainers; [ koral ];
91 };
92}