1{
2 lib,
3 buildPythonPackage,
4 cacert,
5 entrypoints,
6 fetchFromGitHub,
7 freezegun,
8 funcy,
9 gitMinimal,
10 pydantic,
11 pytest-cov-stub,
12 pytest-mock,
13 pytest-test-utils,
14 pytestCheckHook,
15 pythonOlder,
16 rich,
17 ruamel-yaml,
18 scmrepo,
19 semver,
20 setuptools-scm,
21 setuptools,
22 tabulate,
23 typer,
24}:
25
26buildPythonPackage rec {
27 pname = "gto";
28 version = "1.8.0";
29 pyproject = true;
30
31 disabled = pythonOlder "3.9";
32
33 src = fetchFromGitHub {
34 owner = "iterative";
35 repo = "gto";
36 tag = version;
37 hash = "sha256-XgVV/WPs9QcxjVVsdvloo2+QWNViAJE404Nue7ZcBak=";
38 };
39
40 build-system = [
41 setuptools
42 setuptools-scm
43 ];
44
45 dependencies = [
46 entrypoints
47 funcy
48 pydantic
49 rich
50 ruamel-yaml
51 scmrepo
52 semver
53 tabulate
54 typer
55 ];
56
57 nativeCheckInputs = [
58 freezegun
59 gitMinimal
60 pytest-cov-stub
61 pytest-mock
62 pytest-test-utils
63 pytestCheckHook
64 ];
65
66 preCheck = ''
67 export HOME=$(mktemp -d)
68
69 git config --global user.email "nobody@example.com"
70 git config --global user.name "Nobody"
71
72 # _pygit2.GitError: OpenSSL error: failed to load certificates: error:00000000:lib(0)::reason(0)
73 export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
74 '';
75
76 disabledTests = [
77 # Tests want to with a remote repo
78 "remote_repo"
79 "remote_git_repo"
80 "test_action_doesnt_push_even_if_repo_has_remotes_set"
81 # ValueError: stderr not separately captured
82 "test_register"
83 "test_assign"
84 "test_stderr_gto_exception"
85 "test_stderr_exception"
86 ];
87
88 pythonImportsCheck = [ "gto" ];
89
90 meta = with lib; {
91 description = "Module for Git Tag Operations";
92 homepage = "https://github.com/iterative/gto";
93 changelog = "https://github.com/iterative/gto/releases/tag/${src.tag}";
94 license = licenses.asl20;
95 maintainers = with maintainers; [ fab ];
96 mainProgram = "gto";
97 };
98}