owlmind 0.1.5__py3-none-any.whl → 0.1.6__py3-none-any.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.
owlmind/__init__.py CHANGED
@@ -2,4 +2,4 @@
2
2
  OwlMind Framework - experimentation environment for Generative Intelligence Systems.
3
3
  """
4
4
 
5
- __version__ = "0.1.5"
5
+ __version__ = "0.1.6"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: owlmind
3
- Version: 0.1.5
3
+ Version: 0.1.6
4
4
  Summary: Experimentation environment and pedagogical sandbox for studying generative intelligence systems.
5
5
  Author-email: Fernando Koch <your-email@example.com>
6
6
  License: MIT
@@ -1,15 +1,14 @@
1
- owlmind/__init__.py,sha256=jeK2gtlTJnsYnkBZnUWO9SbKcyzyIGOZidZUfOBpSa8,115
1
+ owlmind/__init__.py,sha256=d6Jpen1uAPEcfFWPCFbQv12sTUVDgYDyme9bvVs2o9g,115
2
2
  owlmind/cli.py,sha256=UCU7YVyi3hnjmkMp-QmFvaRIo4hBQd9y9VhREag0bj0,7523
3
3
  owlmind/core/__init__.py,sha256=FdHsekm-vN68W1lxoqgVGhDGNW8r5VUbvHcWYT8MafQ,158
4
4
  owlmind/core/component.py,sha256=FxXcki2I986vgpHQj3iUR8Ocb6zjKPwPvcE59MYjbX8,2452
5
5
  owlmind/graphk/__init__.py,sha256=Sm9S-qmlxvgxJB6ZyZ8MEJhWGsDmD-2ctsc9Vmi5ivQ,181
6
6
  owlmind/graphk/node.py,sha256=GUPvd0XMzflPKgOzbJBV7igrGVHQOn31JkPlzffTR_Y,5138
7
- owlmind/graphk/pipeline.py,sha256=otmpg7PDRzbkoHouqukXUzVS3yS5CVwra0O0vPFfw1Y,2936
8
7
  owlmind/models/__init__.py,sha256=oDwcewvCenSr3PMpoZPOkq8sSj0MkXlruIAw-Dj8uI4,149
9
8
  owlmind/models/ollama.py,sha256=Y-9J5C5ztRgricOJ4Co3AE_QGQbr99bKreJwGJUoZTQ,4514
10
- owlmind-0.1.5.dist-info/licenses/LICENSE.txt,sha256=N3XP8HnV0oou2kX_RhIixOcH-_3R2EU9t3JZ5a1Xq-4,1084
11
- owlmind-0.1.5.dist-info/METADATA,sha256=brzEaFFtQwRdhD1dz1dAlo7LqUoNHeCe2h5aSVDqino,3371
12
- owlmind-0.1.5.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
13
- owlmind-0.1.5.dist-info/entry_points.txt,sha256=dtbjpXwYC8Nbe3CJ02gflnKOOhpQWk9u5gALeDHOWGk,45
14
- owlmind-0.1.5.dist-info/top_level.txt,sha256=hZkLOzK2jV0_OPvcTpeIwlEQi869uqittXNzXF8AajE,8
15
- owlmind-0.1.5.dist-info/RECORD,,
9
+ owlmind-0.1.6.dist-info/licenses/LICENSE.txt,sha256=N3XP8HnV0oou2kX_RhIixOcH-_3R2EU9t3JZ5a1Xq-4,1084
10
+ owlmind-0.1.6.dist-info/METADATA,sha256=QY4y9IOSDtwuYIQW4uqOXfu7h_uJaMnh4PyV75YYCmY,3371
11
+ owlmind-0.1.6.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
12
+ owlmind-0.1.6.dist-info/entry_points.txt,sha256=dtbjpXwYC8Nbe3CJ02gflnKOOhpQWk9u5gALeDHOWGk,45
13
+ owlmind-0.1.6.dist-info/top_level.txt,sha256=hZkLOzK2jV0_OPvcTpeIwlEQi869uqittXNzXF8AajE,8
14
+ owlmind-0.1.6.dist-info/RECORD,,
@@ -1,94 +0,0 @@
1
- ##
2
- ## GraphK - Framework for Graph programming.
3
- ## pipeline.py — data structure for Processing Lines.
4
- ##
5
- # Copyright (c) 2025, Dr. Fernando Koch
6
- # http://github.com/kochf1/graphk
7
- #
8
- # Disclosure:
9
- # This code was developed through 'vibe coding'. Certain components
10
- # required manual implementation, and human-in-the-loop review and refinement
11
- # were applied throughout the project.
12
- #
13
-
14
-
15
- from abc import ABC, abstractmethod
16
- from typing import Union, Callable, List, Any, Iterator
17
- from .node import Node
18
-
19
- class Pipeline(Node):
20
- """
21
- Orchestrator for a sequence of Nodes.
22
- Compatible with GraphK Node and Gate structures.
23
- """
24
- # Execution Policies
25
- SKIP_ON_FAIL = 0
26
- STOP_ON_FAIL = 1
27
-
28
- def __init__(self,
29
- nodes: Iterable[Node] = None,
30
- _session: dict = None,
31
- fail_policy: int = STOP_ON_FAIL,
32
- **kwargs):
33
- """
34
- Initialize the pipeline as a Node containing other Nodes.
35
- """
36
- super().__init__(_session=_session, **kwargs)
37
- self.nodes = list(nodes) if nodes else []
38
- self.fail_policy = fail_policy
39
- self.obfuscate(['nodes', 'fail_policy'])
40
-
41
- # --- Node Access (Pythonic Interface) ---
42
-
43
- def __len__(self) -> int: return len(self.nodes)
44
-
45
- def __getitem__(self, index): return self.nodes[index]
46
-
47
- def add(self, node: Node):
48
- self.nodes.append(node)
49
- return self
50
-
51
- # --- Execution Logic ---
52
-
53
- def ping(self) -> bool:
54
- """Pipeline is healthy if all internal nodes are healthy."""
55
- return all(n.ping() for n in self.nodes)
56
-
57
- def info(self) -> dict:
58
- return {
59
- "type": "Pipeline",
60
- "node_count": len(self.nodes),
61
- "nodes": [type(n).__name__ for n in self.nodes]
62
- }
63
-
64
- def step(self) -> Iterator[Any]:
65
- """
66
- Executes the pipeline sequence.
67
- Passes output of one node as input to the next.
68
- """
69
- current_input = getattr(self, 'input', None)
70
-
71
- for node in self.nodes:
72
- # 1. Check Condition Gate (if assigned to the node)
73
- if hasattr(node, 'can_proceed') and not node.can_proceed(current_input):
74
- if self.fail_policy == self.STOP_ON_FAIL: break
75
- continue
76
-
77
- # 2. Set input and execute
78
- node.input = current_input
79
-
80
- # 3. Collect output (assuming step() returns an iterator)
81
- node_output = None
82
- for chunk in node.step():
83
- node_output = chunk # Capture last chunk as the state
84
- yield chunk
85
-
86
- # 4. Check Validation Gate
87
- if hasattr(node, 'is_valid') and not node.is_valid(node_output):
88
- if self.fail_policy == self.STOP_ON_FAIL: break
89
-
90
- # 5. Chain output to next input
91
- current_input = node_output
92
-
93
- self._output = current_input
94
-