PipeGraphPy 3.0.5__py3-none-win_amd64.whl → 3.0.6__py3-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. PipeGraphPy/__init__.py +1 -1
  2. PipeGraphPy/__main__.py +1 -0
  3. PipeGraphPy/core/anchor.cp310-win_amd64.pyd +0 -0
  4. PipeGraphPy/core/anchor.py +74 -0
  5. PipeGraphPy/core/edge.cp310-win_amd64.pyd +0 -0
  6. PipeGraphPy/core/edge.py +33 -0
  7. PipeGraphPy/core/graph.cp310-win_amd64.pyd +0 -0
  8. PipeGraphPy/core/graph.py +1751 -0
  9. PipeGraphPy/core/graph_base.cp310-win_amd64.pyd +0 -0
  10. PipeGraphPy/core/graph_base.py +339 -0
  11. PipeGraphPy/core/modcls/base.cp310-win_amd64.pyd +0 -0
  12. PipeGraphPy/core/modcls/base.py +418 -0
  13. PipeGraphPy/core/modcls/branchselect.cp310-win_amd64.pyd +0 -0
  14. PipeGraphPy/core/modcls/branchselect.py +34 -0
  15. PipeGraphPy/core/modcls/classifier.cp310-win_amd64.pyd +0 -0
  16. PipeGraphPy/core/modcls/classifier.py +7 -0
  17. PipeGraphPy/core/modcls/cluster.cp310-win_amd64.pyd +0 -0
  18. PipeGraphPy/core/modcls/cluster.py +9 -0
  19. PipeGraphPy/core/modcls/common.cp310-win_amd64.pyd +0 -0
  20. PipeGraphPy/core/modcls/common.py +7 -0
  21. PipeGraphPy/core/modcls/datacharts.cp310-win_amd64.pyd +0 -0
  22. PipeGraphPy/core/modcls/datacharts.py +5 -0
  23. PipeGraphPy/core/modcls/deeplearning.cp310-win_amd64.pyd +0 -0
  24. PipeGraphPy/core/modcls/deeplearning.py +6 -0
  25. PipeGraphPy/core/modcls/endscript.cp310-win_amd64.pyd +0 -0
  26. PipeGraphPy/core/modcls/endscript.py +10 -0
  27. PipeGraphPy/core/modcls/ensemble.cp310-win_amd64.pyd +0 -0
  28. PipeGraphPy/core/modcls/ensemble.py +80 -0
  29. PipeGraphPy/core/modcls/evaluate.cp310-win_amd64.pyd +0 -0
  30. PipeGraphPy/core/modcls/evaluate.py +83 -0
  31. PipeGraphPy/core/modcls/exportdata.cp310-win_amd64.pyd +0 -0
  32. PipeGraphPy/core/modcls/exportdata.py +5 -0
  33. PipeGraphPy/core/modcls/handlescript.cp310-win_amd64.pyd +0 -0
  34. PipeGraphPy/core/modcls/handlescript.py +10 -0
  35. PipeGraphPy/core/modcls/importdata.cp310-win_amd64.pyd +0 -0
  36. PipeGraphPy/core/modcls/importdata.py +7 -0
  37. PipeGraphPy/core/modcls/merge.cp310-win_amd64.pyd +0 -0
  38. PipeGraphPy/core/modcls/merge.py +19 -0
  39. PipeGraphPy/core/modcls/mergescript.cp310-win_amd64.pyd +0 -0
  40. PipeGraphPy/core/modcls/mergescript.py +10 -0
  41. PipeGraphPy/core/modcls/metrics.cp310-win_amd64.pyd +0 -0
  42. PipeGraphPy/core/modcls/metrics.py +18 -0
  43. PipeGraphPy/core/modcls/postprocessor.cp310-win_amd64.pyd +0 -0
  44. PipeGraphPy/core/modcls/postprocessor.py +35 -0
  45. PipeGraphPy/core/modcls/preprocessor.cp310-win_amd64.pyd +0 -0
  46. PipeGraphPy/core/modcls/preprocessor.py +5 -0
  47. PipeGraphPy/core/modcls/pythonscript.cp310-win_amd64.pyd +0 -0
  48. PipeGraphPy/core/modcls/pythonscript.py +10 -0
  49. PipeGraphPy/core/modcls/regressor.cp310-win_amd64.pyd +0 -0
  50. PipeGraphPy/core/modcls/regressor.py +5 -0
  51. PipeGraphPy/core/modcls/selector.cp310-win_amd64.pyd +0 -0
  52. PipeGraphPy/core/modcls/selector.py +6 -0
  53. PipeGraphPy/core/modcls/selectscript.cp310-win_amd64.pyd +0 -0
  54. PipeGraphPy/core/modcls/selectscript.py +10 -0
  55. PipeGraphPy/core/modcls/special.cp310-win_amd64.pyd +0 -0
  56. PipeGraphPy/core/modcls/special.py +10 -0
  57. PipeGraphPy/core/modcls/split.cp310-win_amd64.pyd +0 -0
  58. PipeGraphPy/core/modcls/split.py +19 -0
  59. PipeGraphPy/core/modcls/splitscript.cp310-win_amd64.pyd +0 -0
  60. PipeGraphPy/core/modcls/splitscript.py +10 -0
  61. PipeGraphPy/core/modcls/startscript.cp310-win_amd64.pyd +0 -0
  62. PipeGraphPy/core/modcls/startscript.py +10 -0
  63. PipeGraphPy/core/modcls/transformer.cp310-win_amd64.pyd +0 -0
  64. PipeGraphPy/core/modcls/transformer.py +6 -0
  65. PipeGraphPy/core/module.cp310-win_amd64.pyd +0 -0
  66. PipeGraphPy/core/module.py +511 -0
  67. PipeGraphPy/core/node.cp310-win_amd64.pyd +0 -0
  68. PipeGraphPy/core/node.py +459 -0
  69. PipeGraphPy/core/pipegraph.cp310-win_amd64.pyd +0 -0
  70. PipeGraphPy/core/pipegraph.py +242 -0
  71. PipeGraphPy/db/models.cp310-win_amd64.pyd +0 -0
  72. PipeGraphPy/db/models.py +330 -0
  73. {pipegraphpy-3.0.5.dist-info → pipegraphpy-3.0.6.dist-info}/METADATA +1 -1
  74. pipegraphpy-3.0.6.dist-info/RECORD +129 -0
  75. pipegraphpy-3.0.5.dist-info/RECORD +0 -94
  76. {pipegraphpy-3.0.5.dist-info → pipegraphpy-3.0.6.dist-info}/WHEEL +0 -0
  77. {pipegraphpy-3.0.5.dist-info → pipegraphpy-3.0.6.dist-info}/top_level.txt +0 -0
PipeGraphPy/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # coding:utf-8
2
2
 
3
- __version__ = "3.0.5"
3
+ __version__ = "3.0.6"
4
4
 
5
5
  from PipeGraphPy.core.graph import (
6
6
  Graph,
PipeGraphPy/__main__.py CHANGED
@@ -34,6 +34,7 @@ settings.RUN_MODEL_SAVE_PATH = RUN_MODEL_SAVE_PATH or os.path.join(HOME, "models
34
34
  settings.SDK_MODEL_SAVE_PATH = SDK_MODEL_SAVE_PATH or RUN_MODEL_SAVE_PATH
35
35
  settings.PREDICT_MODEL_SAVE_PATH = PREDICT_MODEL_SAVE_PATH or RUN_MODEL_SAVE_PATH
36
36
  settings.MODULES_CACHE_PATH = MODULES_CACHE_PATH or os.path.join(HOME, "modules")
37
+ sys.path.append(os.path.dirname(settings.MODULES_CACHE_PATH))
37
38
 
38
39
  # 数据库配置
39
40
  USE_DB = os.environ.get("PGP_USE_DB") == "1"
Binary file
@@ -0,0 +1,74 @@
1
+ """
2
+ 锚点(Anchor)模块。
3
+
4
+ 锚点表示节点上的一个输入/输出接口。节点连接时把源节点的输出锚点连到
5
+ 目标节点的输入锚点, 边信息同时写入内存图(multi_graph)与数据库。
6
+ """
7
+
8
+ from PipeGraphPy.common import multi_graph
9
+ from PipeGraphPy.core.edge import Edge
10
+ from PipeGraphPy.db.models import EdgesTB
11
+
12
+
13
+ class Anchor(object):
14
+ """节点锚点: anc 为锚点编号, node_info 为所属节点信息。"""
15
+
16
+ def __init__(self, anc: int, node_info):
17
+ self.anc = anc
18
+ self.node_info = node_info
19
+
20
+ def __str__(self):
21
+ return str(self.anc)
22
+
23
+ def __repr__(self):
24
+ return "Anchor(Node(%s), %s)" % (str(self.node_info["id"]), str(self.anc))
25
+
26
+ def _add_edge(self, **kwargs):
27
+ """创建边并挂到所属图上(内存), 不做数据库持久化。
28
+
29
+ kwargs: source_id, target_id, source_anchor, target_anchor
30
+ """
31
+ if kwargs["source_id"] == kwargs["target_id"]:
32
+ raise Exception("源节点与目标节点不能是同一节点")
33
+ if not multi_graph.get(self.node_info["graph_id"]):
34
+ raise Exception("未找到对应graph信息")
35
+ multi_graph[self.node_info["graph_id"]]._edges.append(Edge.create(**kwargs))
36
+
37
+ def _connect_anchor(self, anchor):
38
+ """把本输出锚点连接到目标输入锚点(校验同图)。"""
39
+ if not isinstance(anchor, Anchor):
40
+ raise Exception("连接对像只能是Anchor对象")
41
+ if self.node_info["graph_id"] != anchor.node_info["graph_id"]:
42
+ raise Exception("节点所在图不一致")
43
+ self._add_edge(
44
+ source_id=self.node_info["id"],
45
+ target_id=anchor.node_info["id"],
46
+ source_anchor=self.anc,
47
+ target_anchor=anchor.anc,
48
+ )
49
+
50
+ def _break_anchor(self, anchor):
51
+ """删除与目标锚点之间的边(数据库)。"""
52
+ EdgesTB.rm(
53
+ graph_id=self.node_info["graph_id"],
54
+ source_id=self.node_info["id"],
55
+ target_id=anchor.node_info["id"],
56
+ source_anchor=self.anc,
57
+ target_anchor=anchor.anc,
58
+ )
59
+
60
+ def connect(self, anchors):
61
+ """连接一个或多个锚点, 任一失败则回滚已建立的连接。
62
+
63
+ anchors: Anchor 或 list[Anchor]
64
+ """
65
+ if not isinstance(anchors, list):
66
+ anchors = [anchors]
67
+ try:
68
+ for anchor in anchors:
69
+ self._connect_anchor(anchor)
70
+ return self
71
+ except Exception as e:
72
+ for anchor in anchors:
73
+ self._break_anchor(anchor)
74
+ raise e
Binary file
@@ -0,0 +1,33 @@
1
+ """
2
+ 边(Edge)模块。
3
+
4
+ 边描述两个节点锚点之间的连接关系, info 中保存:
5
+ source_id/target_id/source_anchor/target_anchor/graph_id 等。
6
+ """
7
+
8
+ from PipeGraphPy.db.models import EdgesTB
9
+ from PipeGraphPy.utils.str_handle import tid
10
+
11
+
12
+ class Edge(object):
13
+ def __init__(self, id, info=None):
14
+ self.id = id
15
+ self._info = info
16
+
17
+ @property
18
+ def info(self):
19
+ """边信息; 为空时从数据库按id加载。"""
20
+ if not self._info:
21
+ edge_info = EdgesTB.find_one(id=self.id)
22
+ if not edge_info:
23
+ raise ValueError("数据库不存在此边[%s]信息" % self.id)
24
+ self._info = edge_info
25
+ return self._info
26
+
27
+ @classmethod
28
+ def create(cls, **kwargs):
29
+ """创建一个内存边对象(不落库), 自动生成id。"""
30
+ id = "e%s" % tid()
31
+ info = {"id": id}
32
+ info.update(kwargs)
33
+ return cls(id, info)
Binary file