1{
2 lib,
3 async-timeout,
4 attrs,
5 buildPythonPackage,
6 faust-cchardet,
7 fetchFromGitHub,
8 httpx,
9 orjson,
10 packaging,
11 pythonOlder,
12 setuptools,
13 typing-extensions,
14 xmltodict,
15}:
16
17buildPythonPackage rec {
18 pname = "axis";
19 version = "65";
20 pyproject = true;
21
22 disabled = pythonOlder "3.12";
23
24 src = fetchFromGitHub {
25 owner = "Kane610";
26 repo = "axis";
27 tag = "v${version}";
28 hash = "sha256-65njqnnahpYhx5CShjWOuNlkckQbt8tMjKf8OUCrmbw=";
29 };
30
31 postPatch = ''
32 substituteInPlace pyproject.toml \
33 --replace-fail "setuptools==80.9.0" "setuptools" \
34 --replace-fail "wheel==0.46.1" "wheel"
35 '';
36
37 build-system = [ setuptools ];
38
39 dependencies = [
40 async-timeout
41 attrs
42 faust-cchardet
43 httpx
44 orjson
45 packaging
46 typing-extensions
47 xmltodict
48 ];
49
50 # Tests requires a server on localhost
51 doCheck = false;
52
53 pythonImportsCheck = [ "axis" ];
54
55 meta = with lib; {
56 description = "Python library for communicating with devices from Axis Communications";
57 homepage = "https://github.com/Kane610/axis";
58 changelog = "https://github.com/Kane610/axis/releases/tag/v${version}";
59 license = licenses.mit;
60 maintainers = with maintainers; [ fab ];
61 mainProgram = "axis";
62 };
63}