1{
2 lib,
3 aiohttp,
4 buildPythonPackage,
5 certifi,
6 fetchFromGitHub,
7 mock,
8 opentelemetry-api,
9 opentelemetry-sdk,
10 orjson,
11 pytest-asyncio,
12 pytest-httpserver,
13 pytestCheckHook,
14 pythonOlder,
15 requests,
16 respx,
17 setuptools,
18 trustme,
19 urllib3,
20}:
21
22buildPythonPackage rec {
23 pname = "elastic-transport";
24 version = "8.13.0";
25 pyproject = true;
26
27 disabled = pythonOlder "3.7";
28
29 src = fetchFromGitHub {
30 owner = "elastic";
31 repo = "elastic-transport-python";
32 rev = "refs/tags/v${version}";
33 hash = "sha256-KmZCaAbzbfqbPwFuF43ckwgVhZVbPvwjF7uqPKHml9Q=";
34 };
35
36 postPatch = ''
37 substituteInPlace setup.cfg \
38 --replace " --cov-report=term-missing --cov=elastic_transport" ""
39 '';
40
41 build-system = [ setuptools ];
42
43 propagatedBuildInputs = [
44 urllib3
45 certifi
46 ];
47
48 nativeCheckInputs = [
49 aiohttp
50 mock
51 opentelemetry-api
52 opentelemetry-sdk
53 orjson
54 pytest-asyncio
55 pytest-httpserver
56 pytestCheckHook
57 requests
58 respx
59 trustme
60 ];
61
62 pythonImportsCheck = [ "elastic_transport" ];
63
64 disabledTests = [
65 # Tests require network access
66 "fingerprint"
67 "ssl"
68 "test_custom_headers"
69 "test_custom_user_agent"
70 "test_default_headers"
71 "test_head"
72 "tls"
73 "test_simple_request"
74 "test_node"
75 "test_debug_logging"
76 "test_debug_logging_uncompressed_body"
77 "test_debug_logging_no_body"
78 "test_httpbin"
79 "test_sniffed_nodes_added_to_pool"
80 ];
81
82 meta = with lib; {
83 description = "Transport classes and utilities shared among Python Elastic client libraries";
84 homepage = "https://github.com/elasticsearch/elastic-transport-python";
85 changelog = "https://github.com/elastic/elastic-transport-python/releases/tag/v${version}";
86 license = licenses.asl20;
87 maintainers = with maintainers; [ fab ];
88 };
89}