versionhq 1.1.12.2__tar.gz → 1.1.12.3__tar.gz
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.
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/.gitignore +3 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/PKG-INFO +23 -8
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/README.md +21 -6
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/pyproject.toml +3 -2
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/runtime.txt +0 -1
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/__init__.py +5 -2
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/task/formation.py +3 -12
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/team/model.py +2 -2
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq.egg-info/PKG-INFO +23 -8
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq.egg-info/SOURCES.txt +1 -0
- versionhq-1.1.12.3/tests/doc_test.py +16 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/task/task_test.py +1 -1
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/team/team_test.py +6 -6
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/uv.lock +110 -1
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/.github/workflows/publish.yml +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/.github/workflows/publish_testpypi.yml +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/.github/workflows/run_tests.yml +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/.github/workflows/security_check.yml +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/.pre-commit-config.yaml +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/.python-version +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/LICENSE +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/SECURITY.md +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/db/preprocess.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/requirements-dev.txt +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/requirements.txt +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/setup.cfg +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/_utils/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/_utils/i18n.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/_utils/logger.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/_utils/process_config.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/_utils/usage_metrics.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/_utils/vars.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/agent/TEMPLATES/Backstory.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/agent/TEMPLATES/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/agent/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/agent/inhouse_agents.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/agent/model.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/agent/parser.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/agent/rpm_controller.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/cli/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/clients/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/clients/customer/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/clients/customer/model.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/clients/product/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/clients/product/model.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/clients/workflow/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/clients/workflow/model.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/knowledge/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/knowledge/_utils.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/knowledge/embedding.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/knowledge/model.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/knowledge/source.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/knowledge/source_docling.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/knowledge/storage.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/llm/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/llm/llm_vars.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/llm/model.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/memory/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/memory/contextual_memory.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/memory/model.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/storage/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/storage/base.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/storage/ltm_sqlite_storage.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/storage/mem0_storage.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/storage/rag_storage.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/storage/task_output_storage.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/storage/utils.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/task/TEMPLATES/Description.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/task/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/task/evaluate.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/task/formatter.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/task/log_handler.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/task/model.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/task/structured_response.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/team/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/team/team_planner.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/tool/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/tool/cache_handler.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/tool/composio_tool.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/tool/composio_tool_vars.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/tool/decorator.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/tool/model.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq/tool/tool_handler.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq.egg-info/dependency_links.txt +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq.egg-info/requires.txt +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/src/versionhq.egg-info/top_level.txt +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/agent/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/agent/agent_test.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/cli/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/clients/customer_test.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/clients/product_test.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/clients/workflow_test.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/conftest.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/knowledge/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/knowledge/knowledge_test.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/knowledge/mock_report_compressed.pdf +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/llm/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/llm/llm_test.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/memory/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/memory/memory_test.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/task/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/task/llm_connection_test.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/team/Prompts/Demo_test.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/team/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/tool/__init__.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/tool/composio_test.py +0 -0
- {versionhq-1.1.12.2 → versionhq-1.1.12.3}/tests/tool/tool_test.py +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: versionhq
|
3
|
-
Version: 1.1.12.
|
4
|
-
Summary:
|
3
|
+
Version: 1.1.12.3
|
4
|
+
Summary: An agentic orchestration framework for multi-agent system that shares memory, knowledge base, and RAG tools.
|
5
5
|
Author-email: Kuriko Iwai <kuriko@versi0n.io>
|
6
6
|
License: MIT License
|
7
7
|
|
@@ -103,9 +103,10 @@ Agentic orchestration framework to deploy agent network and handle complex task
|
|
103
103
|
- [Key Features](#key-features)
|
104
104
|
- [Agent formation](#agent-formation)
|
105
105
|
- [Quick Start](#quick-start)
|
106
|
-
- [
|
106
|
+
- [Generate agent networks and launch task execution:](#generate-agent-networks-and-launch-task-execution)
|
107
|
+
- [Solo Agent:](#solo-agent)
|
107
108
|
- [Return a structured output with a summary in string.](#return-a-structured-output-with-a-summary-in-string)
|
108
|
-
- [
|
109
|
+
- [Supervising:](#supervising)
|
109
110
|
- [Technologies Used](#technologies-used)
|
110
111
|
- [Project Structure](#project-structure)
|
111
112
|
- [Setup](#setup)
|
@@ -123,9 +124,9 @@ Agentic orchestration framework to deploy agent network and handle complex task
|
|
123
124
|
|
124
125
|
## Key Features
|
125
126
|
|
126
|
-
|
127
|
+
`versionhq` is a Python framework that can generate agent networks for complex task automation without human interaction.
|
127
128
|
|
128
|
-
Agents are model-agnostic, and
|
129
|
+
Agents are model-agnostic, and will improve task output, while oprimizing token cost and job latency, by sharing their memory, knowledge base, and RAG tools with other agents in the network.
|
129
130
|
|
130
131
|
|
131
132
|
### Agent formation
|
@@ -153,8 +154,22 @@ You can specify a desired formation or allow the agents to determine it autonomo
|
|
153
154
|
|
154
155
|
(Python 3.11 or higher)
|
155
156
|
|
157
|
+
### Generate agent networks and launch task execution:
|
156
158
|
|
157
|
-
|
159
|
+
```
|
160
|
+
from versionhq import form_agent_network
|
161
|
+
|
162
|
+
network = form_agent_network(
|
163
|
+
task="YOUR AMAZING TASK OVERVIEW",
|
164
|
+
expected_outcome="YOUR OUTCOME EXPECTATION",
|
165
|
+
)
|
166
|
+
res = network.launch()
|
167
|
+
```
|
168
|
+
|
169
|
+
This will form a network with multiple agents on `Formation` and return `TaskOutput` object with output in JSON, plane text, Pydantic model format with evaluation.
|
170
|
+
|
171
|
+
|
172
|
+
### Solo Agent:
|
158
173
|
|
159
174
|
#### Return a structured output with a summary in string.
|
160
175
|
|
@@ -197,7 +212,7 @@ This will return `TaskOutput` instance that stores a response in plane text, JSO
|
|
197
212
|
)
|
198
213
|
```
|
199
214
|
|
200
|
-
###
|
215
|
+
### Supervising:
|
201
216
|
|
202
217
|
```
|
203
218
|
from versionhq import Agent, Task, ResponseField, Team, TeamMember
|
@@ -26,9 +26,10 @@ Agentic orchestration framework to deploy agent network and handle complex task
|
|
26
26
|
- [Key Features](#key-features)
|
27
27
|
- [Agent formation](#agent-formation)
|
28
28
|
- [Quick Start](#quick-start)
|
29
|
-
- [
|
29
|
+
- [Generate agent networks and launch task execution:](#generate-agent-networks-and-launch-task-execution)
|
30
|
+
- [Solo Agent:](#solo-agent)
|
30
31
|
- [Return a structured output with a summary in string.](#return-a-structured-output-with-a-summary-in-string)
|
31
|
-
- [
|
32
|
+
- [Supervising:](#supervising)
|
32
33
|
- [Technologies Used](#technologies-used)
|
33
34
|
- [Project Structure](#project-structure)
|
34
35
|
- [Setup](#setup)
|
@@ -46,9 +47,9 @@ Agentic orchestration framework to deploy agent network and handle complex task
|
|
46
47
|
|
47
48
|
## Key Features
|
48
49
|
|
49
|
-
|
50
|
+
`versionhq` is a Python framework that can generate agent networks for complex task automation without human interaction.
|
50
51
|
|
51
|
-
Agents are model-agnostic, and
|
52
|
+
Agents are model-agnostic, and will improve task output, while oprimizing token cost and job latency, by sharing their memory, knowledge base, and RAG tools with other agents in the network.
|
52
53
|
|
53
54
|
|
54
55
|
### Agent formation
|
@@ -76,8 +77,22 @@ You can specify a desired formation or allow the agents to determine it autonomo
|
|
76
77
|
|
77
78
|
(Python 3.11 or higher)
|
78
79
|
|
80
|
+
### Generate agent networks and launch task execution:
|
79
81
|
|
80
|
-
|
82
|
+
```
|
83
|
+
from versionhq import form_agent_network
|
84
|
+
|
85
|
+
network = form_agent_network(
|
86
|
+
task="YOUR AMAZING TASK OVERVIEW",
|
87
|
+
expected_outcome="YOUR OUTCOME EXPECTATION",
|
88
|
+
)
|
89
|
+
res = network.launch()
|
90
|
+
```
|
91
|
+
|
92
|
+
This will form a network with multiple agents on `Formation` and return `TaskOutput` object with output in JSON, plane text, Pydantic model format with evaluation.
|
93
|
+
|
94
|
+
|
95
|
+
### Solo Agent:
|
81
96
|
|
82
97
|
#### Return a structured output with a summary in string.
|
83
98
|
|
@@ -120,7 +135,7 @@ This will return `TaskOutput` instance that stores a response in plane text, JSO
|
|
120
135
|
)
|
121
136
|
```
|
122
137
|
|
123
|
-
###
|
138
|
+
### Supervising:
|
124
139
|
|
125
140
|
```
|
126
141
|
from versionhq import Agent, Task, ResponseField, Team, TeamMember
|
@@ -15,9 +15,9 @@ exclude = ["test*", "__pycache__", "*.egg-info"]
|
|
15
15
|
|
16
16
|
[project]
|
17
17
|
name = "versionhq"
|
18
|
-
version = "1.1.12.
|
18
|
+
version = "1.1.12.3"
|
19
19
|
authors = [{ name = "Kuriko Iwai", email = "kuriko@versi0n.io" }]
|
20
|
-
description = "
|
20
|
+
description = "An agentic orchestration framework for multi-agent system that shares memory, knowledge base, and RAG tools."
|
21
21
|
readme = "README.md"
|
22
22
|
requires-python = ">=3.11"
|
23
23
|
license = { file = "LICENSE" }
|
@@ -91,6 +91,7 @@ dev-dependencies = [
|
|
91
91
|
"bandit",
|
92
92
|
"twine",
|
93
93
|
"pytest>=8.3.4",
|
94
|
+
"mkdocs>=1.6.1",
|
94
95
|
]
|
95
96
|
|
96
97
|
[tool.uv.workspace]
|
@@ -21,9 +21,10 @@ from versionhq.tool.composio_tool import ComposioHandler
|
|
21
21
|
from versionhq.memory.contextual_memory import ContextualMemory
|
22
22
|
from versionhq.memory.model import ShortTermMemory,LongTermMemory, UserMemory, MemoryItem
|
23
23
|
|
24
|
+
from versionhq.task.formation import form_agent_network
|
24
25
|
|
25
26
|
|
26
|
-
__version__ = "1.1.12.
|
27
|
+
__version__ = "1.1.12.3"
|
27
28
|
__all__ = [
|
28
29
|
"Agent",
|
29
30
|
|
@@ -67,5 +68,7 @@ __all__ = [
|
|
67
68
|
"ShortTermMemory",
|
68
69
|
"LongTermMemory",
|
69
70
|
"UserMemory",
|
70
|
-
"MemoryItem"
|
71
|
+
"MemoryItem",
|
72
|
+
|
73
|
+
"form_agent_network"
|
71
74
|
]
|
@@ -11,7 +11,7 @@ from versionhq._utils import Logger
|
|
11
11
|
|
12
12
|
|
13
13
|
def form_agent_network(
|
14
|
-
|
14
|
+
task: str,
|
15
15
|
expected_outcome: str,
|
16
16
|
agents: List[Agent] = None,
|
17
17
|
context: str = None,
|
@@ -21,7 +21,7 @@ def form_agent_network(
|
|
21
21
|
Make a formation of agents from the given task description, agents (optional), context (optional), and expected outcome (optional).
|
22
22
|
"""
|
23
23
|
|
24
|
-
if not
|
24
|
+
if not task:
|
25
25
|
Logger(verbose=True).log(level="error", message="Missing task description.", color="red")
|
26
26
|
return None
|
27
27
|
|
@@ -40,7 +40,7 @@ def form_agent_network(
|
|
40
40
|
vhq_task = Task(
|
41
41
|
description=f"""
|
42
42
|
Create a team of specialized agents designed to automate the following task and deliver the expected outcome. Consider the necessary roles for each agent with a clear task description. If you think we neeed a leader to handle the automation, return a leader_agent role as well, but if not, leave the a leader_agent role blank.
|
43
|
-
Task: {str(
|
43
|
+
Task: {str(task)}
|
44
44
|
Expected outcome: {str(expected_outcome)}
|
45
45
|
""",
|
46
46
|
pydantic_output=Outcome
|
@@ -112,12 +112,3 @@ def form_agent_network(
|
|
112
112
|
except Exception as e:
|
113
113
|
Logger(verbose=True).log(level="error", message=f"Failed to create an agent network - return None. You can try with solo agent. Error: {str(e)}", color="red")
|
114
114
|
return None
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
if __name__ == "__main__":
|
119
|
-
res = form_agent_network(
|
120
|
-
task_overview="Launch an outbound campaign to attract young audience.",
|
121
|
-
expected_outcome="Best media mix of the campaign.",
|
122
|
-
context="We are selling sports wear.",
|
123
|
-
)
|
@@ -387,9 +387,9 @@ class Team(BaseModel):
|
|
387
387
|
return self._create_team_output(task_outputs, lead_task_output)
|
388
388
|
|
389
389
|
|
390
|
-
def
|
390
|
+
def launch(self, kwargs_before: Optional[Dict[str, str]] = None, kwargs_after: Optional[Dict[str, Any]] = None) -> TeamOutput:
|
391
391
|
"""
|
392
|
-
|
392
|
+
Confirm and launch the formation - execute tasks and record outputs.
|
393
393
|
0. Assign an agent to a task - using conditions (manager prioritizes team_tasks) and planning_llm.
|
394
394
|
1. Address `before_kickoff_callbacks` if any.
|
395
395
|
2. Handle team members' tasks in accordance with the process.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: versionhq
|
3
|
-
Version: 1.1.12.
|
4
|
-
Summary:
|
3
|
+
Version: 1.1.12.3
|
4
|
+
Summary: An agentic orchestration framework for multi-agent system that shares memory, knowledge base, and RAG tools.
|
5
5
|
Author-email: Kuriko Iwai <kuriko@versi0n.io>
|
6
6
|
License: MIT License
|
7
7
|
|
@@ -103,9 +103,10 @@ Agentic orchestration framework to deploy agent network and handle complex task
|
|
103
103
|
- [Key Features](#key-features)
|
104
104
|
- [Agent formation](#agent-formation)
|
105
105
|
- [Quick Start](#quick-start)
|
106
|
-
- [
|
106
|
+
- [Generate agent networks and launch task execution:](#generate-agent-networks-and-launch-task-execution)
|
107
|
+
- [Solo Agent:](#solo-agent)
|
107
108
|
- [Return a structured output with a summary in string.](#return-a-structured-output-with-a-summary-in-string)
|
108
|
-
- [
|
109
|
+
- [Supervising:](#supervising)
|
109
110
|
- [Technologies Used](#technologies-used)
|
110
111
|
- [Project Structure](#project-structure)
|
111
112
|
- [Setup](#setup)
|
@@ -123,9 +124,9 @@ Agentic orchestration framework to deploy agent network and handle complex task
|
|
123
124
|
|
124
125
|
## Key Features
|
125
126
|
|
126
|
-
|
127
|
+
`versionhq` is a Python framework that can generate agent networks for complex task automation without human interaction.
|
127
128
|
|
128
|
-
Agents are model-agnostic, and
|
129
|
+
Agents are model-agnostic, and will improve task output, while oprimizing token cost and job latency, by sharing their memory, knowledge base, and RAG tools with other agents in the network.
|
129
130
|
|
130
131
|
|
131
132
|
### Agent formation
|
@@ -153,8 +154,22 @@ You can specify a desired formation or allow the agents to determine it autonomo
|
|
153
154
|
|
154
155
|
(Python 3.11 or higher)
|
155
156
|
|
157
|
+
### Generate agent networks and launch task execution:
|
156
158
|
|
157
|
-
|
159
|
+
```
|
160
|
+
from versionhq import form_agent_network
|
161
|
+
|
162
|
+
network = form_agent_network(
|
163
|
+
task="YOUR AMAZING TASK OVERVIEW",
|
164
|
+
expected_outcome="YOUR OUTCOME EXPECTATION",
|
165
|
+
)
|
166
|
+
res = network.launch()
|
167
|
+
```
|
168
|
+
|
169
|
+
This will form a network with multiple agents on `Formation` and return `TaskOutput` object with output in JSON, plane text, Pydantic model format with evaluation.
|
170
|
+
|
171
|
+
|
172
|
+
### Solo Agent:
|
158
173
|
|
159
174
|
#### Return a structured output with a summary in string.
|
160
175
|
|
@@ -197,7 +212,7 @@ This will return `TaskOutput` instance that stores a response in plane text, JSO
|
|
197
212
|
)
|
198
213
|
```
|
199
214
|
|
200
|
-
###
|
215
|
+
### Supervising:
|
201
216
|
|
202
217
|
```
|
203
218
|
from versionhq import Agent, Task, ResponseField, Team, TeamMember
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
"""
|
4
|
+
Test for use cases in the documentation.
|
5
|
+
"""
|
6
|
+
|
7
|
+
def test_quick_start():
|
8
|
+
from versionhq import form_agent_network
|
9
|
+
|
10
|
+
network = form_agent_network(
|
11
|
+
task="YOUR AMAZING TASK OVERVIEW",
|
12
|
+
expected_outcome="YOUR OUTCOME EXPECTATION",
|
13
|
+
)
|
14
|
+
res = network.launch()
|
15
|
+
|
16
|
+
assert res.raw is not None
|
@@ -367,7 +367,7 @@ def test_agent_formation():
|
|
367
367
|
from versionhq.task.formation import form_agent_network
|
368
368
|
|
369
369
|
created_team = form_agent_network(
|
370
|
-
|
370
|
+
task="Launch an outbound campaign to attract young male audience.",
|
371
371
|
expected_outcome="Best social media mix plan and key communication lines",
|
372
372
|
context="We sell luxuary sportswear targeting male in 30th, and are expanding our market to younger male.",
|
373
373
|
)
|
@@ -98,7 +98,7 @@ def test_kickoff_without_leader():
|
|
98
98
|
TeamMember(agent=agent_b, is_manager=False, task=task_2),
|
99
99
|
],
|
100
100
|
)
|
101
|
-
res = team.
|
101
|
+
res = team.launch()
|
102
102
|
res_all = res.return_all_task_outputs()
|
103
103
|
|
104
104
|
assert isinstance(res, TeamOutput)
|
@@ -158,7 +158,7 @@ def team_kickoff_with_task_callback():
|
|
158
158
|
TeamMember(agent=agent_b, is_manager=False, task=task_2),
|
159
159
|
],
|
160
160
|
)
|
161
|
-
res = team.
|
161
|
+
res = team.launch()
|
162
162
|
|
163
163
|
assert res.raw is not None
|
164
164
|
assert res.json_dict is not None
|
@@ -191,7 +191,7 @@ def test_delegate_in_team():
|
|
191
191
|
TeamMember(agent=agent_b, is_manager=False, task=task_2),
|
192
192
|
],
|
193
193
|
)
|
194
|
-
res = team.
|
194
|
+
res = team.launch()
|
195
195
|
|
196
196
|
assert res.raw is not None
|
197
197
|
assert res.json_dict is not None
|
@@ -218,7 +218,7 @@ def test_kickoff_with_leader():
|
|
218
218
|
TeamMember(agent=agent_b, is_manager=True, task=task_2),
|
219
219
|
],
|
220
220
|
)
|
221
|
-
res = team.
|
221
|
+
res = team.launch()
|
222
222
|
|
223
223
|
assert isinstance(res, TeamOutput)
|
224
224
|
assert res.team_id is team.id
|
@@ -258,7 +258,7 @@ def test_hierarchial_process():
|
|
258
258
|
],
|
259
259
|
process=TaskHandlingProcess.hierarchical
|
260
260
|
)
|
261
|
-
res = team.
|
261
|
+
res = team.launch()
|
262
262
|
|
263
263
|
assert isinstance(res, TeamOutput)
|
264
264
|
assert res.team_id is team.id
|
@@ -334,7 +334,7 @@ def test_handle_team_task():
|
|
334
334
|
teams = [team_solo, team_flat, team_leader, team_dual_leaders, team_leader_without_task]
|
335
335
|
|
336
336
|
for team in teams:
|
337
|
-
res = team.
|
337
|
+
res = team.launch()
|
338
338
|
assert team._get_responsible_agent(task=team_task) is not None
|
339
339
|
assert isinstance(res, TeamOutput)
|
340
340
|
assert res.team_id is team.id
|
@@ -938,6 +938,18 @@ wheels = [
|
|
938
938
|
{ url = "https://files.pythonhosted.org/packages/e2/94/758680531a00d06e471ef649e4ec2ed6bf185356a7f9fbfbb7368a40bd49/fsspec-2025.2.0-py3-none-any.whl", hash = "sha256:9de2ad9ce1f85e1931858535bc882543171d197001a0a5eb2ddc04f1781ab95b", size = 184484 },
|
939
939
|
]
|
940
940
|
|
941
|
+
[[package]]
|
942
|
+
name = "ghp-import"
|
943
|
+
version = "2.1.0"
|
944
|
+
source = { registry = "https://pypi.org/simple" }
|
945
|
+
dependencies = [
|
946
|
+
{ name = "python-dateutil" },
|
947
|
+
]
|
948
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 }
|
949
|
+
wheels = [
|
950
|
+
{ url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 },
|
951
|
+
]
|
952
|
+
|
941
953
|
[[package]]
|
942
954
|
name = "google-auth"
|
943
955
|
version = "2.38.0"
|
@@ -1721,6 +1733,15 @@ wheels = [
|
|
1721
1733
|
{ url = "https://files.pythonhosted.org/packages/7d/db/214290d58ad68c587bd5d6af3d34e56830438733d0d0856c0275fde43652/lxml-5.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:406246b96d552e0503e17a1006fd27edac678b3fcc9f1be71a2f94b4ff61528d", size = 3814417 },
|
1722
1734
|
]
|
1723
1735
|
|
1736
|
+
[[package]]
|
1737
|
+
name = "markdown"
|
1738
|
+
version = "3.7"
|
1739
|
+
source = { registry = "https://pypi.org/simple" }
|
1740
|
+
sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086 }
|
1741
|
+
wheels = [
|
1742
|
+
{ url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349 },
|
1743
|
+
]
|
1744
|
+
|
1724
1745
|
[[package]]
|
1725
1746
|
name = "markdown-it-py"
|
1726
1747
|
version = "3.0.0"
|
@@ -1816,6 +1837,53 @@ wheels = [
|
|
1816
1837
|
{ url = "https://files.pythonhosted.org/packages/39/7b/92d4a79f8cfec42ce1c2fda8435d4b8234e5d6d2d1968f7c92beaf00e034/mem0ai-0.1.48-py3-none-any.whl", hash = "sha256:23d1bd591c36da9e1f9f013d6f87a79ef9eb1495ac27b1e380af7f819b07fee0", size = 91338 },
|
1817
1838
|
]
|
1818
1839
|
|
1840
|
+
[[package]]
|
1841
|
+
name = "mergedeep"
|
1842
|
+
version = "1.3.4"
|
1843
|
+
source = { registry = "https://pypi.org/simple" }
|
1844
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 }
|
1845
|
+
wheels = [
|
1846
|
+
{ url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 },
|
1847
|
+
]
|
1848
|
+
|
1849
|
+
[[package]]
|
1850
|
+
name = "mkdocs"
|
1851
|
+
version = "1.6.1"
|
1852
|
+
source = { registry = "https://pypi.org/simple" }
|
1853
|
+
dependencies = [
|
1854
|
+
{ name = "click" },
|
1855
|
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
1856
|
+
{ name = "ghp-import" },
|
1857
|
+
{ name = "jinja2" },
|
1858
|
+
{ name = "markdown" },
|
1859
|
+
{ name = "markupsafe" },
|
1860
|
+
{ name = "mergedeep" },
|
1861
|
+
{ name = "mkdocs-get-deps" },
|
1862
|
+
{ name = "packaging" },
|
1863
|
+
{ name = "pathspec" },
|
1864
|
+
{ name = "pyyaml" },
|
1865
|
+
{ name = "pyyaml-env-tag" },
|
1866
|
+
{ name = "watchdog" },
|
1867
|
+
]
|
1868
|
+
sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 }
|
1869
|
+
wheels = [
|
1870
|
+
{ url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 },
|
1871
|
+
]
|
1872
|
+
|
1873
|
+
[[package]]
|
1874
|
+
name = "mkdocs-get-deps"
|
1875
|
+
version = "0.2.0"
|
1876
|
+
source = { registry = "https://pypi.org/simple" }
|
1877
|
+
dependencies = [
|
1878
|
+
{ name = "mergedeep" },
|
1879
|
+
{ name = "platformdirs" },
|
1880
|
+
{ name = "pyyaml" },
|
1881
|
+
]
|
1882
|
+
sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 }
|
1883
|
+
wheels = [
|
1884
|
+
{ url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 },
|
1885
|
+
]
|
1886
|
+
|
1819
1887
|
[[package]]
|
1820
1888
|
name = "mmh3"
|
1821
1889
|
version = "5.1.0"
|
@@ -3302,6 +3370,18 @@ wheels = [
|
|
3302
3370
|
{ url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 },
|
3303
3371
|
]
|
3304
3372
|
|
3373
|
+
[[package]]
|
3374
|
+
name = "pyyaml-env-tag"
|
3375
|
+
version = "0.1"
|
3376
|
+
source = { registry = "https://pypi.org/simple" }
|
3377
|
+
dependencies = [
|
3378
|
+
{ name = "pyyaml" },
|
3379
|
+
]
|
3380
|
+
sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631 }
|
3381
|
+
wheels = [
|
3382
|
+
{ url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911 },
|
3383
|
+
]
|
3384
|
+
|
3305
3385
|
[[package]]
|
3306
3386
|
name = "qdrant-client"
|
3307
3387
|
version = "1.12.1"
|
@@ -4459,7 +4539,7 @@ wheels = [
|
|
4459
4539
|
|
4460
4540
|
[[package]]
|
4461
4541
|
name = "versionhq"
|
4462
|
-
version = "1.1.12.
|
4542
|
+
version = "1.1.12.2"
|
4463
4543
|
source = { editable = "." }
|
4464
4544
|
dependencies = [
|
4465
4545
|
{ name = "appdirs" },
|
@@ -4506,6 +4586,7 @@ pdfplumber = [
|
|
4506
4586
|
dev = [
|
4507
4587
|
{ name = "bandit" },
|
4508
4588
|
{ name = "black" },
|
4589
|
+
{ name = "mkdocs" },
|
4509
4590
|
{ name = "mypy" },
|
4510
4591
|
{ name = "pre-commit" },
|
4511
4592
|
{ name = "pytest" },
|
@@ -4546,6 +4627,7 @@ requires-dist = [
|
|
4546
4627
|
dev = [
|
4547
4628
|
{ name = "bandit" },
|
4548
4629
|
{ name = "black" },
|
4630
|
+
{ name = "mkdocs", specifier = ">=1.6.1" },
|
4549
4631
|
{ name = "mypy", specifier = ">=1.10.0" },
|
4550
4632
|
{ name = "pre-commit", specifier = ">=4.0.1" },
|
4551
4633
|
{ name = "pytest", specifier = ">=8.0.0" },
|
@@ -4568,6 +4650,33 @@ wheels = [
|
|
4568
4650
|
{ url = "https://files.pythonhosted.org/packages/89/9b/599bcfc7064fbe5740919e78c5df18e5dceb0887e676256a1061bb5ae232/virtualenv-20.29.1-py3-none-any.whl", hash = "sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779", size = 4282379 },
|
4569
4651
|
]
|
4570
4652
|
|
4653
|
+
[[package]]
|
4654
|
+
name = "watchdog"
|
4655
|
+
version = "6.0.0"
|
4656
|
+
source = { registry = "https://pypi.org/simple" }
|
4657
|
+
sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 }
|
4658
|
+
wheels = [
|
4659
|
+
{ url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 },
|
4660
|
+
{ url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 },
|
4661
|
+
{ url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 },
|
4662
|
+
{ url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 },
|
4663
|
+
{ url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 },
|
4664
|
+
{ url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 },
|
4665
|
+
{ url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 },
|
4666
|
+
{ url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 },
|
4667
|
+
{ url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 },
|
4668
|
+
{ url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 },
|
4669
|
+
{ url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 },
|
4670
|
+
{ url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 },
|
4671
|
+
{ url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 },
|
4672
|
+
{ url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 },
|
4673
|
+
{ url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 },
|
4674
|
+
{ url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 },
|
4675
|
+
{ url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 },
|
4676
|
+
{ url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 },
|
4677
|
+
{ url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 },
|
4678
|
+
]
|
4679
|
+
|
4571
4680
|
[[package]]
|
4572
4681
|
name = "watchfiles"
|
4573
4682
|
version = "1.0.4"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|