1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, hatchling
5, mkdocs-material
6, mkdocs-mermaid2-plugin
7, mkdocstrings
8, networkx
9, pytestCheckHook
10, pythonOlder
11, requests
12, typing-extensions
13}:
14
15buildPythonPackage rec {
16 pname = "canals";
17 version = "0.10.0";
18 pyproject = true;
19
20 disabled = pythonOlder "3.8";
21
22 src = fetchFromGitHub {
23 owner = "deepset-ai";
24 repo = "canals";
25 rev = "refs/tags/v${version}";
26 hash = "sha256-zTC9zaY2WQ4Sx/1YeEaw23UH0hoP/ktMwzH8x/rER00=";
27 };
28
29 nativeBuildInputs = [
30 hatchling
31 ];
32
33 propagatedBuildInputs = [
34 networkx
35 requests
36 typing-extensions
37 ];
38
39 passthru.optional-dependencies = {
40 docs = [
41 mkdocs-material
42 mkdocs-mermaid2-plugin
43 mkdocstrings
44 ];
45 };
46
47 nativeCheckInputs = [
48 pytestCheckHook
49 ] ++ lib.flatten (builtins.attrValues passthru.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 = [
62 "canals"
63 ];
64
65 meta = with lib; {
66 description = "A component orchestration engine";
67 homepage = "https://github.com/deepset-ai/canals";
68 changelog = "https://github.com/deepset-ai/canals/releases/tag/v${version}";
69 license = licenses.asl20;
70 maintainers = with maintainers; [ happysalada ];
71 };
72}