summaryrefslogtreecommitdiff
path: root/pkgs/development/python-modules/great-expectations/default.nix
blob: 8ba61a03efae9cbe2f886e4e345642a8647f2d7b (plain)
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
139
140
141
142
143
144
145
{
  lib,
  buildPythonPackage,
  fetchFromGitHub,
  setuptools,
  altair,
  cryptography,
  jinja2,
  jsonschema,
  marshmallow,
  mistune,
  numpy,
  packaging,
  pandas,
  posthog,
  pydantic,
  pyparsing,
  python-dateutil,
  requests,
  ruamel-yaml,
  scipy,
  tqdm,
  tzlocal,

  # test
  pytestCheckHook,
  pytest-mock,
  pytest-order,
  pytest-random-order,
  click,
  flaky,
  freezegun,
  invoke,
  moto,
  psycopg2,
  requirements-parser,
  responses,
  sqlalchemy,
}:

buildPythonPackage rec {
  pname = "great-expectations";
  version = "1.5.7";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "great-expectations";
    repo = "great_expectations";
    tag = version;
    hash = "sha256-pa44metr9KP2KF2ulq7kd84BVdBMvMhsWJeBsJ2AnG0=";
  };

  postPatch = ''
    substituteInPlace tests/conftest.py --replace 'locale.setlocale(locale.LC_ALL, "en_US.UTF-8")' ""
    substituteInPlace pyproject.toml \
      --replace-fail '"ignore::marshmallow.warnings.ChangedInMarshmallow4Warning",' ""
  '';

  build-system = [ setuptools ];

  dependencies = [
    altair
    cryptography
    jinja2
    jsonschema
    marshmallow
    mistune
    numpy
    packaging
    pandas
    posthog
    pydantic
    pyparsing
    python-dateutil
    requests
    ruamel-yaml
    scipy
    tqdm
    tzlocal
  ];

  pythonRelaxDeps = [
    "altair"
    "pandas"
    "posthog"
  ];

  nativeCheckInputs = [
    pytestCheckHook
    pytest-mock
    pytest-order
    pytest-random-order
    click
    flaky
    freezegun
    invoke
    moto
    psycopg2
    requirements-parser
    responses
    sqlalchemy
  ]
  ++ moto.optional-dependencies.s3
  ++ moto.optional-dependencies.sns;

  disabledTestPaths = [
    # try to access external URLs:
    "tests/integration/cloud/rest_contracts"
    "tests/integration/spark"

    # moto-related import errors:
    "tests/actions"
    "tests/data_context"
    "tests/datasource"
    "tests/execution_engine"

    # locale-related rendering issues, mostly:
    "tests/core/test__docs_decorators.py"
    "tests/expectations/test_expectation_atomic_renderers.py"
    "tests/render"
  ];

  disabledTestMarks = [
    "postgresql"
    "snowflake"
    "spark"
  ];

  disabledTests = [
    # tries to access network:
    "test_checkpoint_run_with_data_docs_and_slack_actions_emit_page_links"
    "test_checkpoint_run_with_slack_action_no_page_links"
  ];

  pythonImportsCheck = [ "great_expectations" ];

  meta = {
    broken = true; # 408 tests fail
    description = "Library for writing unit tests for data validation";
    homepage = "https://docs.greatexpectations.io";
    changelog = "https://github.com/great-expectations/great_expectations/releases/tag/${src.tag}";
    license = lib.licenses.asl20;
    maintainers = with lib.maintainers; [ bcdarwin ];
  };
}