1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 hatchling,
6 mkdocs-material,
7 mkdocs-mermaid2-plugin,
8 mkdocstrings,
9 networkx,
10 pytestCheckHook,
11 pythonOlder,
12 requests,
13 typing-extensions,
14}:
15
16buildPythonPackage rec {
17 pname = "canals";
18 version = "0.11.0";
19 pyproject = true;
20
21 disabled = pythonOlder "3.8";
22
23 src = fetchFromGitHub {
24 owner = "deepset-ai";
25 repo = "canals";
26 tag = "v${version}";
27 hash = "sha256-xoJqj/zPBPPCheBxA+8EFRJqUnlP+4aWLEh42q1X1mM=";
28 };
29
30 nativeBuildInputs = [ hatchling ];
31
32 propagatedBuildInputs = [
33 networkx
34 requests
35 typing-extensions
36 ];
37
38 optional-dependencies = {
39 docs = [
40 mkdocs-material
41 mkdocs-mermaid2-plugin
42 mkdocstrings
43 ];
44 };
45
46 nativeCheckInputs = [
47 pytestCheckHook
48 ]
49 ++ lib.flatten (builtins.attrValues optional-dependencies);
50
51 disabledTestPaths = [
52 # Test requires internet connection to mermaid.ink
53 "test/pipeline/integration"
54 ];
55
56 disabledTests = [
57 # Path issue
58 "test_draw_pygraphviz"
59 ];
60
61 pythonImportsCheck = [ "canals" ];
62
63 meta = with lib; {
64 description = "Component orchestration engine";
65 homepage = "https://github.com/deepset-ai/canals";
66 changelog = "https://github.com/deepset-ai/canals/releases/tag/v${version}";
67 license = licenses.asl20;
68 maintainers = with maintainers; [ happysalada ];
69 };
70}