1{
2 lib,
3 buildPythonPackage,
4 certifi,
5 click,
6 dotmap,
7 ecs-logging,
8 elastic-transport,
9 elasticsearch8,
10 fetchFromGitHub,
11 hatchling,
12 mock,
13 pytest-asyncio,
14 pytestCheckHook,
15 pythonOlder,
16 pyyaml,
17 requests,
18 six,
19 voluptuous,
20}:
21
22buildPythonPackage rec {
23 pname = "es-client";
24 version = "8.15.2";
25 pyproject = true;
26
27 disabled = pythonOlder "3.8";
28
29 src = fetchFromGitHub {
30 owner = "untergeek";
31 repo = "es_client";
32 rev = "refs/tags/v${version}";
33 hash = "sha256-7vkpZNY333DYj9klzm1YG5ccxsu+LrP7WOWPH1KCfFA=";
34 };
35
36 pythonRelaxDeps = true;
37
38 build-system = [ hatchling ];
39
40 dependencies = [
41 certifi
42 click
43 dotmap
44 ecs-logging
45 elastic-transport
46 elasticsearch8
47 pyyaml
48 six
49 voluptuous
50 ];
51
52 nativeCheckInputs = [
53 mock
54 pytest-asyncio
55 pytestCheckHook
56 requests
57 ];
58
59 pythonImportsCheck = [ "es_client" ];
60
61 disabledTests = [
62 # Tests require network access
63 "test_bad_version_raises"
64 "test_basic_operation"
65 "test_basic_operation"
66 "test_client_info"
67 "test_logging_options_ecs"
68 "test_logging_options_json"
69 "test_multiple_hosts_raises"
70 "test_non_dict_passed"
71 "test_skip_version_check"
72 # Test wants to handle credentials
73 "test_logging_options_from_config_file"
74 # es_client.exceptions.ConfigurationError: Must populate both username and password, or leave both empty
75 "test_exit_if_not_master "
76 ];
77
78 meta = with lib; {
79 description = "Module for building Elasticsearch client objects";
80 homepage = "https://github.com/untergeek/es_client";
81 changelog = "https://github.com/untergeek/es_client/releases/tag/v${version}";
82 license = licenses.asl20;
83 maintainers = with maintainers; [ fab ];
84 };
85}