1{
2 lib,
3 buildPythonPackage,
4 entrypoints,
5 fastentrypoints,
6 fetchFromGitHub,
7 freezegun,
8 funcy,
9 git,
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.7.2";
29 pyproject = true;
30
31 disabled = pythonOlder "3.9";
32
33 src = fetchFromGitHub {
34 owner = "iterative";
35 repo = "gto";
36 rev = "refs/tags/${version}";
37 hash = "sha256-8ht22RqiGWqDoBrZnX5p3KKOLVPRm1a54962qKlTK4Q=";
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 git
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
73 disabledTests = [
74 # Tests want to with a remote repo
75 "remote_repo"
76 "remote_git_repo"
77 "test_action_doesnt_push_even_if_repo_has_remotes_set"
78 ];
79
80 pythonImportsCheck = [ "gto" ];
81
82 meta = with lib; {
83 description = "Module for Git Tag Operations";
84 homepage = "https://github.com/iterative/gto";
85 changelog = "https://github.com/iterative/gto/releases/tag/${version}";
86 license = licenses.asl20;
87 maintainers = with maintainers; [ fab ];
88 mainProgram = "gto";
89 };
90}