1{ lib
2, stdenv
3, aiohttp
4, blinker
5, buildPythonPackage
6, certifi
7, ecs-logging
8, fetchFromGitHub
9, httpx
10, jinja2
11, jsonschema
12, logbook
13, mock
14, pytest-asyncio
15, pytest-bdd
16, pytest-localserver
17, pytest-mock
18, pytest-random-order
19, pytestCheckHook
20, pythonOlder
21, sanic
22, sanic-testing
23, starlette
24, structlog
25, tornado
26, urllib3
27, webob
28, wrapt
29}:
30
31buildPythonPackage rec {
32 pname = "elastic-apm";
33 version = "6.16.1";
34 format = "setuptools";
35
36 disabled = pythonOlder "3.8";
37
38 src = fetchFromGitHub {
39 owner = "elastic";
40 repo = "apm-agent-python";
41 rev = "refs/tags/v${version}";
42 hash = "sha256-m/PjL8pltUpv/ewE/gksISsOhEVsyeWoq6yfd5c1j6s=";
43 };
44
45 propagatedBuildInputs = [
46 aiohttp
47 blinker
48 certifi
49 sanic
50 starlette
51 tornado
52 urllib3
53 wrapt
54 ];
55
56 nativeCheckInputs = [
57 ecs-logging
58 httpx
59 jinja2
60 jsonschema
61 logbook
62 mock
63 pytest-asyncio
64 pytest-bdd
65 pytest-localserver
66 pytest-mock
67 pytest-random-order
68 pytestCheckHook
69 sanic-testing
70 structlog
71 webob
72 ];
73
74 disabledTests = [
75 "elasticapm_client"
76 ];
77
78 disabledTestPaths = [
79 # Exclude tornado tests
80 "tests/contrib/asyncio/tornado/tornado_tests.py"
81 ] ++ lib.optionals stdenv.isDarwin [
82 # Flaky tests on Darwin
83 "tests/utils/threading_tests.py"
84 ];
85
86 pythonImportsCheck = [
87 "elasticapm"
88 ];
89
90 meta = with lib; {
91 description = "Python agent for the Elastic APM";
92 homepage = "https://github.com/elastic/apm-agent-python";
93 changelog = "https://github.com/elastic/apm-agent-python/releases/tag/v${version}";
94 license = with licenses; [ bsd3 ];
95 maintainers = with maintainers; [ fab ];
96 mainProgram = "elasticapm-run";
97 };
98}