1{
2 lib,
3 aiohttp,
4 attrs,
5 buildPythonPackage,
6 fetchFromGitHub,
7 fetchpatch,
8 packaging,
9 poetry-core,
10 pythonRelaxDepsHook,
11 pythonOlder,
12 structlog,
13}:
14
15buildPythonPackage rec {
16 pname = "arsenic";
17 version = "21.8";
18 pyproject = true;
19
20 disabled = pythonOlder "3.7";
21
22 src = fetchFromGitHub {
23 owner = "HENNGE";
24 repo = "arsenic";
25 rev = "refs/tags/${version}";
26 hash = "sha256-fsLo22PR9WdX2FazPgr8B8dFq6EM1LLTpRFGEm/ymCE=";
27 };
28
29 patches = [
30 # Switch to poetry-core, https://github.com/HENNGE/arsenic/pull/160
31 (fetchpatch {
32 name = "switch-to-poetry-core.patch";
33 url = "https://github.com/HENNGE/arsenic/commit/ca82894a5f1e832ab9283a245258b334bdd48855.patch";
34 hash = "sha256-ECCUaJF4MRmFOKH1C6HowJ+zmbEPPiS7h9DlKw5otZc=";
35 })
36 # Replace distutils with packaging, https://github.com/HENNGE/arsenic/pull/166
37 (fetchpatch {
38 name = "replace-distutils.patch";
39 url = "https://github.com/HENNGE/arsenic/commit/440faed7d2a8fbd635a135c007051ea494e72873.patch";
40 hash = "sha256-QbOH6EdFKZxm1VaXRiTbJ3zIzEKVet9GUQDaJnmSNQw=";
41 })
42 ];
43
44 pythonRelaxDeps = [ "structlog" ];
45
46 nativeBuildInputs = [ pythonRelaxDepsHook ];
47
48 build-system = [ poetry-core ];
49
50 dependencies = [
51 aiohttp
52 attrs
53 packaging
54 structlog
55 ];
56
57 # Test depends on asyncio_extras which is not longer maintained
58 doCheck = false;
59
60 pythonImportsCheck = [ "arsenic" ];
61
62 meta = with lib; {
63 description = "WebDriver implementation for asyncio and asyncio-compatible frameworks";
64 homepage = "https://github.com/HENNGE/arsenic/";
65 changelog = "https://github.com/HENNGE/arsenic/releases/tag/${version}";
66 license = licenses.asl20;
67 maintainers = with maintainers; [ fab ];
68 };
69}