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