1{
2 lib,
3 argcomplete,
4 buildPythonPackage,
5 colorlog,
6 fetchFromGitHub,
7 hatchling,
8 jinja2,
9 packaging,
10 pytestCheckHook,
11 pythonOlder,
12 tomli,
13 tox,
14 uv,
15 virtualenv,
16}:
17
18buildPythonPackage rec {
19 pname = "nox";
20 version = "2024.10.09";
21 pyproject = true;
22
23 disabled = pythonOlder "3.8";
24
25 src = fetchFromGitHub {
26 owner = "wntrblm";
27 repo = "nox";
28 rev = "refs/tags/${version}";
29 hash = "sha256-GdNz34A8IKwPG/270sY5t3SoggGCZMWfDq/Wyhk0ez8=";
30 };
31
32 build-system = [ hatchling ];
33
34 dependencies =
35 [
36 argcomplete
37 colorlog
38 packaging
39 virtualenv
40 ]
41 ++ lib.optionals (pythonOlder "3.11") [
42 tomli
43 ];
44
45 optional-dependencies = {
46 tox_to_nox = [
47 jinja2
48 tox
49 ];
50 uv = [ uv ];
51 };
52
53 nativeCheckInputs = [ pytestCheckHook ] ++ lib.flatten (builtins.attrValues optional-dependencies);
54
55 preCheck = ''
56 export HOME=$(mktemp -d)
57 '';
58
59 pythonImportsCheck = [ "nox" ];
60
61 disabledTests = [
62 # our conda is not available on 3.11
63 "test__create_venv_options"
64 # Assertion errors
65 "test_uv"
66 ];
67
68 disabledTestPaths = [
69 # AttributeError: module 'tox.config' has...
70 "tests/test_tox_to_nox.py"
71 ];
72
73 meta = with lib; {
74 description = "Flexible test automation for Python";
75 homepage = "https://nox.thea.codes/";
76 changelog = "https://github.com/wntrblm/nox/blob/${version}/CHANGELOG.md";
77 license = licenses.asl20;
78 maintainers = with maintainers; [
79 doronbehar
80 fab
81 ];
82 };
83}