fmtr.tools 1.3.52__tar.gz → 1.3.53__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.
Potentially problematic release.
This version of fmtr.tools might be problematic. Click here for more details.
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/PKG-INFO +49 -49
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/ai_tools/agentic_tools.py +16 -15
- fmtr_tools-1.3.53/fmtr/tools/version +1 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr.tools.egg-info/PKG-INFO +49 -49
- fmtr_tools-1.3.52/fmtr/tools/version +0 -1
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/LICENSE +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/README.md +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/__init__.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/ai_tools/__init__.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/ai_tools/inference_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/api_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/async_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/augmentation_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/caching_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/constants.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/context_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/data_modelling_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/database_tools/__init__.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/database_tools/document.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/dataclass_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/datatype_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/datetime_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/debugging_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/dns_tools/__init__.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/dns_tools/client.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/dns_tools/dm.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/dns_tools/proxy.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/dns_tools/server.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/docker_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/entrypoints/__init__.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/entrypoints/ep_test.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/entrypoints/shell_debug.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/environment_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/function_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/google_api_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/hash_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/hfh_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/html_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/http_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/import_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/inherit_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/inspection_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/interface_tools/__init__.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/interface_tools/context.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/interface_tools/controls.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/interface_tools/interface_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/iterator_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/json_fix_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/json_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/logging_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/merging_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/metric_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/name_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/netrc_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/openai_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/packaging_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/parallel_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/path_tools/__init__.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/path_tools/app_path_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/path_tools/path_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/path_tools/type_path_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/pattern_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/pdf_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/platform_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/process_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/profiling_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/random_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/semantic_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/settings_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/setup_tools/__init__.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/setup_tools/setup_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/spaces_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/string_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/tabular_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/tests/__init__.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/tests/conftest.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/tests/helpers.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/tests/test_datatype.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/tests/test_environment.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/tests/test_json.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/tests/test_path.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/tests/test_yaml.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/tokenization_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/unicode_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/version_tools/__init__.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/version_tools/version_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/webhook_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr/tools/yaml_tools.py +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr.tools.egg-info/SOURCES.txt +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr.tools.egg-info/dependency_links.txt +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr.tools.egg-info/entry_points.txt +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr.tools.egg-info/requires.txt +48 -48
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/fmtr.tools.egg-info/top_level.txt +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/pyproject.toml +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/setup.cfg +0 -0
- {fmtr_tools-1.3.52 → fmtr_tools-1.3.53}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.53
|
|
4
4
|
Summary: Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML
|
|
5
5
|
Home-page: https://github.com/fmtr/fmtr.tools
|
|
6
6
|
Author: Frontmatter
|
|
@@ -154,68 +154,68 @@ Provides-Extra: db-document
|
|
|
154
154
|
Requires-Dist: beanie[odm]; extra == "db-document"
|
|
155
155
|
Requires-Dist: motor; extra == "db-document"
|
|
156
156
|
Provides-Extra: all
|
|
157
|
-
Requires-Dist: bokeh; extra == "all"
|
|
158
|
-
Requires-Dist: distributed; extra == "all"
|
|
159
|
-
Requires-Dist: motor; extra == "all"
|
|
160
|
-
Requires-Dist: faker; extra == "all"
|
|
161
|
-
Requires-Dist: peft; extra == "all"
|
|
162
|
-
Requires-Dist: openai; extra == "all"
|
|
163
|
-
Requires-Dist: pandas; extra == "all"
|
|
164
|
-
Requires-Dist: deepdiff; extra == "all"
|
|
165
|
-
Requires-Dist: pycountry; extra == "all"
|
|
166
|
-
Requires-Dist: regex; extra == "all"
|
|
167
157
|
Requires-Dist: dask[bag]; extra == "all"
|
|
168
|
-
Requires-Dist:
|
|
169
|
-
Requires-Dist:
|
|
170
|
-
Requires-Dist: yamlscript; extra == "all"
|
|
171
|
-
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
172
|
-
Requires-Dist: pymupdf; extra == "all"
|
|
158
|
+
Requires-Dist: peft; extra == "all"
|
|
159
|
+
Requires-Dist: cachetools; extra == "all"
|
|
173
160
|
Requires-Dist: pymupdf4llm; extra == "all"
|
|
174
|
-
Requires-Dist:
|
|
175
|
-
Requires-Dist: google-auth; extra == "all"
|
|
161
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
162
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
163
|
+
Requires-Dist: odfpy; extra == "all"
|
|
164
|
+
Requires-Dist: filetype; extra == "all"
|
|
165
|
+
Requires-Dist: pydantic; extra == "all"
|
|
166
|
+
Requires-Dist: logfire; extra == "all"
|
|
167
|
+
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
168
|
+
Requires-Dist: semver; extra == "all"
|
|
176
169
|
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
170
|
+
Requires-Dist: fastapi; extra == "all"
|
|
177
171
|
Requires-Dist: torchvision; extra == "all"
|
|
178
|
-
Requires-Dist: diskcache; extra == "all"
|
|
179
|
-
Requires-Dist: cachetools; extra == "all"
|
|
180
|
-
Requires-Dist: semver; extra == "all"
|
|
181
|
-
Requires-Dist: tinynetrc; extra == "all"
|
|
182
172
|
Requires-Dist: sentence_transformers; extra == "all"
|
|
183
|
-
Requires-Dist:
|
|
173
|
+
Requires-Dist: pandas; extra == "all"
|
|
174
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
175
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
184
176
|
Requires-Dist: openpyxl; extra == "all"
|
|
185
|
-
Requires-Dist:
|
|
186
|
-
Requires-Dist:
|
|
187
|
-
Requires-Dist: ollama; extra == "all"
|
|
188
|
-
Requires-Dist: docker; extra == "all"
|
|
189
|
-
Requires-Dist: playwright; extra == "all"
|
|
190
|
-
Requires-Dist: pytest-cov; extra == "all"
|
|
191
|
-
Requires-Dist: pyyaml; extra == "all"
|
|
192
|
-
Requires-Dist: fastapi; extra == "all"
|
|
177
|
+
Requires-Dist: pydantic-settings; extra == "all"
|
|
178
|
+
Requires-Dist: deepdiff; extra == "all"
|
|
193
179
|
Requires-Dist: setuptools; extra == "all"
|
|
194
180
|
Requires-Dist: beanie[odm]; extra == "all"
|
|
195
|
-
Requires-Dist:
|
|
196
|
-
Requires-Dist:
|
|
197
|
-
Requires-Dist:
|
|
198
|
-
Requires-Dist:
|
|
199
|
-
Requires-Dist: deepmerge; extra == "all"
|
|
200
|
-
Requires-Dist: sre_yield; extra == "all"
|
|
201
|
-
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
202
|
-
Requires-Dist: flet-webview; extra == "all"
|
|
181
|
+
Requires-Dist: flet-video; extra == "all"
|
|
182
|
+
Requires-Dist: regex; extra == "all"
|
|
183
|
+
Requires-Dist: ollama; extra == "all"
|
|
184
|
+
Requires-Dist: tinynetrc; extra == "all"
|
|
203
185
|
Requires-Dist: huggingface_hub; extra == "all"
|
|
204
|
-
Requires-Dist: tabulate; extra == "all"
|
|
205
186
|
Requires-Dist: tokenizers; extra == "all"
|
|
206
|
-
Requires-Dist: httpx; extra == "all"
|
|
207
|
-
Requires-Dist: contexttimer; extra == "all"
|
|
208
|
-
Requires-Dist: flet-video; extra == "all"
|
|
209
|
-
Requires-Dist: pydantic-settings; extra == "all"
|
|
210
|
-
Requires-Dist: dnspython[doh]; extra == "all"
|
|
211
|
-
Requires-Dist: odfpy; extra == "all"
|
|
212
187
|
Requires-Dist: flet[all]; extra == "all"
|
|
213
|
-
Requires-Dist:
|
|
188
|
+
Requires-Dist: appdirs; extra == "all"
|
|
189
|
+
Requires-Dist: logfire[httpx]; extra == "all"
|
|
190
|
+
Requires-Dist: json_repair; extra == "all"
|
|
214
191
|
Requires-Dist: torchaudio; extra == "all"
|
|
215
|
-
Requires-Dist:
|
|
216
|
-
Requires-Dist:
|
|
192
|
+
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
193
|
+
Requires-Dist: motor; extra == "all"
|
|
194
|
+
Requires-Dist: bokeh; extra == "all"
|
|
195
|
+
Requires-Dist: flet-webview; extra == "all"
|
|
196
|
+
Requires-Dist: httpx; extra == "all"
|
|
197
|
+
Requires-Dist: playwright; extra == "all"
|
|
198
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
199
|
+
Requires-Dist: distributed; extra == "all"
|
|
200
|
+
Requires-Dist: faker; extra == "all"
|
|
201
|
+
Requires-Dist: pycountry; extra == "all"
|
|
202
|
+
Requires-Dist: tabulate; extra == "all"
|
|
217
203
|
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
204
|
+
Requires-Dist: html2text; extra == "all"
|
|
205
|
+
Requires-Dist: google-auth; extra == "all"
|
|
206
|
+
Requires-Dist: openai; extra == "all"
|
|
207
|
+
Requires-Dist: Unidecode; extra == "all"
|
|
208
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
209
|
+
Requires-Dist: diskcache; extra == "all"
|
|
210
|
+
Requires-Dist: dnspython[doh]; extra == "all"
|
|
218
211
|
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
212
|
+
Requires-Dist: pytest-cov; extra == "all"
|
|
213
|
+
Requires-Dist: httpx_retries; extra == "all"
|
|
214
|
+
Requires-Dist: pyyaml; extra == "all"
|
|
215
|
+
Requires-Dist: docker; extra == "all"
|
|
216
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
217
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
218
|
+
Requires-Dist: pymupdf; extra == "all"
|
|
219
219
|
Dynamic: author
|
|
220
220
|
Dynamic: author-email
|
|
221
221
|
Dynamic: description
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import pydantic_ai
|
|
2
2
|
from pydantic import PlainValidator
|
|
3
3
|
from pydantic_ai import RunContext, ModelRetry
|
|
4
|
+
from pydantic_ai._output import OutputDataT
|
|
4
5
|
from pydantic_ai.agent import AgentRunResult, Agent
|
|
5
6
|
from pydantic_ai.models.openai import OpenAIModel
|
|
6
7
|
from pydantic_ai.providers.openai import OpenAIProvider
|
|
7
|
-
from
|
|
8
|
+
from pydantic_ai.tools import AgentDepsT
|
|
9
|
+
from typing import List, Optional, Any, Annotated, Generic
|
|
8
10
|
|
|
9
11
|
from fmtr.tools import environment_tools as env
|
|
10
12
|
from fmtr.tools.constants import Constants
|
|
@@ -25,15 +27,16 @@ class Validator:
|
|
|
25
27
|
raise NotImplementedError()
|
|
26
28
|
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
class Task:
|
|
30
|
+
class Task(Generic[AgentDepsT, OutputDataT]):
|
|
31
31
|
"""
|
|
32
32
|
|
|
33
33
|
Linear task definition, as Agent configuration and typing, plus state history.
|
|
34
34
|
|
|
35
35
|
"""
|
|
36
36
|
|
|
37
|
+
TypeDeps = str
|
|
38
|
+
TypeOutput = str
|
|
39
|
+
|
|
37
40
|
PROVIDER = OpenAIProvider(api_key=env.get(Constants.FMTR_OPENAI_API_KEY_KEY))
|
|
38
41
|
|
|
39
42
|
API_HOST_FMTR = env.get(Constants.FMTR_AI_HOST_KEY, Constants.FMTR_AI_HOST_DEFAULT)
|
|
@@ -43,8 +46,6 @@ class Task:
|
|
|
43
46
|
MODEL_ID = 'gpt-4o'
|
|
44
47
|
MODEL_ID_FMTR = 'qwen2.5-coder:14b'
|
|
45
48
|
SYSTEM_PROMPT_STATIC = None
|
|
46
|
-
DEPS_TYPE = str
|
|
47
|
-
RESULT_TYPE = str
|
|
48
49
|
RESULT_RETRIES = 5
|
|
49
50
|
VALIDATORS: List[Validator] = []
|
|
50
51
|
|
|
@@ -56,13 +57,13 @@ class Task:
|
|
|
56
57
|
"""
|
|
57
58
|
|
|
58
59
|
self.model = OpenAIModel(self.MODEL_ID, provider=self.PROVIDER)
|
|
59
|
-
self.agent = Agent(
|
|
60
|
+
self.agent = Agent[AgentDepsT, OutputDataT](
|
|
60
61
|
*args,
|
|
61
62
|
model=self.model,
|
|
62
63
|
system_prompt=self.SYSTEM_PROMPT_STATIC or [],
|
|
63
|
-
deps_type=self.
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
deps_type=self.TypeDeps,
|
|
65
|
+
output_type=self.TypeOutput,
|
|
66
|
+
output_retries=self.RESULT_RETRIES,
|
|
66
67
|
**kwargs
|
|
67
68
|
)
|
|
68
69
|
|
|
@@ -80,7 +81,7 @@ class Task:
|
|
|
80
81
|
import asyncio
|
|
81
82
|
return asyncio.run
|
|
82
83
|
|
|
83
|
-
async def run(self, *args, deps=None, **kwargs) -> AgentRunResult[
|
|
84
|
+
async def run(self, *args, deps=None, **kwargs) -> AgentRunResult[OutputDataT]:
|
|
84
85
|
"""
|
|
85
86
|
|
|
86
87
|
Run Agent with deps-relative user prompt and while storing history
|
|
@@ -90,7 +91,7 @@ class Task:
|
|
|
90
91
|
self.history = result.all_messages()
|
|
91
92
|
return result
|
|
92
93
|
|
|
93
|
-
async def validate(self, ctx: RunContext[
|
|
94
|
+
async def validate(self, ctx: RunContext[AgentDepsT], output: OutputDataT) -> OutputDataT:
|
|
94
95
|
"""
|
|
95
96
|
|
|
96
97
|
Aggregate any validation failures and combine them into a single ModelRetry exception
|
|
@@ -107,7 +108,7 @@ class Task:
|
|
|
107
108
|
|
|
108
109
|
return output
|
|
109
110
|
|
|
110
|
-
def get_prompt(self, deps: Optional[
|
|
111
|
+
def get_prompt(self, deps: Optional[AgentDepsT]) -> Optional[str]:
|
|
111
112
|
"""
|
|
112
113
|
|
|
113
114
|
Dummy prompt generator
|
|
@@ -115,7 +116,7 @@ class Task:
|
|
|
115
116
|
"""
|
|
116
117
|
return None
|
|
117
118
|
|
|
118
|
-
def add_system_prompt(self, ctx: RunContext[
|
|
119
|
+
def add_system_prompt(self, ctx: RunContext[AgentDepsT]) -> str | List[str]:
|
|
119
120
|
"""
|
|
120
121
|
|
|
121
122
|
Dummy system prompt append
|
|
@@ -181,7 +182,7 @@ if __name__ == '__main__':
|
|
|
181
182
|
class TaskTest(Task):
|
|
182
183
|
# PROVIDER = Task.PROVIDER_FMTR
|
|
183
184
|
# MODEL_ID = 'qwen2.5-coder:14b'
|
|
184
|
-
|
|
185
|
+
TypeOutput = TestOutput
|
|
185
186
|
SYSTEM_PROMPT_STATIC = 'Tell the user jokes.'
|
|
186
187
|
|
|
187
188
|
def add_system_prompt(self, ctx: RunContext[TestDeps]) -> str:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.3.53
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.53
|
|
4
4
|
Summary: Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML
|
|
5
5
|
Home-page: https://github.com/fmtr/fmtr.tools
|
|
6
6
|
Author: Frontmatter
|
|
@@ -154,68 +154,68 @@ Provides-Extra: db-document
|
|
|
154
154
|
Requires-Dist: beanie[odm]; extra == "db-document"
|
|
155
155
|
Requires-Dist: motor; extra == "db-document"
|
|
156
156
|
Provides-Extra: all
|
|
157
|
-
Requires-Dist: bokeh; extra == "all"
|
|
158
|
-
Requires-Dist: distributed; extra == "all"
|
|
159
|
-
Requires-Dist: motor; extra == "all"
|
|
160
|
-
Requires-Dist: faker; extra == "all"
|
|
161
|
-
Requires-Dist: peft; extra == "all"
|
|
162
|
-
Requires-Dist: openai; extra == "all"
|
|
163
|
-
Requires-Dist: pandas; extra == "all"
|
|
164
|
-
Requires-Dist: deepdiff; extra == "all"
|
|
165
|
-
Requires-Dist: pycountry; extra == "all"
|
|
166
|
-
Requires-Dist: regex; extra == "all"
|
|
167
157
|
Requires-Dist: dask[bag]; extra == "all"
|
|
168
|
-
Requires-Dist:
|
|
169
|
-
Requires-Dist:
|
|
170
|
-
Requires-Dist: yamlscript; extra == "all"
|
|
171
|
-
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
172
|
-
Requires-Dist: pymupdf; extra == "all"
|
|
158
|
+
Requires-Dist: peft; extra == "all"
|
|
159
|
+
Requires-Dist: cachetools; extra == "all"
|
|
173
160
|
Requires-Dist: pymupdf4llm; extra == "all"
|
|
174
|
-
Requires-Dist:
|
|
175
|
-
Requires-Dist: google-auth; extra == "all"
|
|
161
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
162
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
163
|
+
Requires-Dist: odfpy; extra == "all"
|
|
164
|
+
Requires-Dist: filetype; extra == "all"
|
|
165
|
+
Requires-Dist: pydantic; extra == "all"
|
|
166
|
+
Requires-Dist: logfire; extra == "all"
|
|
167
|
+
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
168
|
+
Requires-Dist: semver; extra == "all"
|
|
176
169
|
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
170
|
+
Requires-Dist: fastapi; extra == "all"
|
|
177
171
|
Requires-Dist: torchvision; extra == "all"
|
|
178
|
-
Requires-Dist: diskcache; extra == "all"
|
|
179
|
-
Requires-Dist: cachetools; extra == "all"
|
|
180
|
-
Requires-Dist: semver; extra == "all"
|
|
181
|
-
Requires-Dist: tinynetrc; extra == "all"
|
|
182
172
|
Requires-Dist: sentence_transformers; extra == "all"
|
|
183
|
-
Requires-Dist:
|
|
173
|
+
Requires-Dist: pandas; extra == "all"
|
|
174
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
175
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
184
176
|
Requires-Dist: openpyxl; extra == "all"
|
|
185
|
-
Requires-Dist:
|
|
186
|
-
Requires-Dist:
|
|
187
|
-
Requires-Dist: ollama; extra == "all"
|
|
188
|
-
Requires-Dist: docker; extra == "all"
|
|
189
|
-
Requires-Dist: playwright; extra == "all"
|
|
190
|
-
Requires-Dist: pytest-cov; extra == "all"
|
|
191
|
-
Requires-Dist: pyyaml; extra == "all"
|
|
192
|
-
Requires-Dist: fastapi; extra == "all"
|
|
177
|
+
Requires-Dist: pydantic-settings; extra == "all"
|
|
178
|
+
Requires-Dist: deepdiff; extra == "all"
|
|
193
179
|
Requires-Dist: setuptools; extra == "all"
|
|
194
180
|
Requires-Dist: beanie[odm]; extra == "all"
|
|
195
|
-
Requires-Dist:
|
|
196
|
-
Requires-Dist:
|
|
197
|
-
Requires-Dist:
|
|
198
|
-
Requires-Dist:
|
|
199
|
-
Requires-Dist: deepmerge; extra == "all"
|
|
200
|
-
Requires-Dist: sre_yield; extra == "all"
|
|
201
|
-
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
202
|
-
Requires-Dist: flet-webview; extra == "all"
|
|
181
|
+
Requires-Dist: flet-video; extra == "all"
|
|
182
|
+
Requires-Dist: regex; extra == "all"
|
|
183
|
+
Requires-Dist: ollama; extra == "all"
|
|
184
|
+
Requires-Dist: tinynetrc; extra == "all"
|
|
203
185
|
Requires-Dist: huggingface_hub; extra == "all"
|
|
204
|
-
Requires-Dist: tabulate; extra == "all"
|
|
205
186
|
Requires-Dist: tokenizers; extra == "all"
|
|
206
|
-
Requires-Dist: httpx; extra == "all"
|
|
207
|
-
Requires-Dist: contexttimer; extra == "all"
|
|
208
|
-
Requires-Dist: flet-video; extra == "all"
|
|
209
|
-
Requires-Dist: pydantic-settings; extra == "all"
|
|
210
|
-
Requires-Dist: dnspython[doh]; extra == "all"
|
|
211
|
-
Requires-Dist: odfpy; extra == "all"
|
|
212
187
|
Requires-Dist: flet[all]; extra == "all"
|
|
213
|
-
Requires-Dist:
|
|
188
|
+
Requires-Dist: appdirs; extra == "all"
|
|
189
|
+
Requires-Dist: logfire[httpx]; extra == "all"
|
|
190
|
+
Requires-Dist: json_repair; extra == "all"
|
|
214
191
|
Requires-Dist: torchaudio; extra == "all"
|
|
215
|
-
Requires-Dist:
|
|
216
|
-
Requires-Dist:
|
|
192
|
+
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
193
|
+
Requires-Dist: motor; extra == "all"
|
|
194
|
+
Requires-Dist: bokeh; extra == "all"
|
|
195
|
+
Requires-Dist: flet-webview; extra == "all"
|
|
196
|
+
Requires-Dist: httpx; extra == "all"
|
|
197
|
+
Requires-Dist: playwright; extra == "all"
|
|
198
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
199
|
+
Requires-Dist: distributed; extra == "all"
|
|
200
|
+
Requires-Dist: faker; extra == "all"
|
|
201
|
+
Requires-Dist: pycountry; extra == "all"
|
|
202
|
+
Requires-Dist: tabulate; extra == "all"
|
|
217
203
|
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
204
|
+
Requires-Dist: html2text; extra == "all"
|
|
205
|
+
Requires-Dist: google-auth; extra == "all"
|
|
206
|
+
Requires-Dist: openai; extra == "all"
|
|
207
|
+
Requires-Dist: Unidecode; extra == "all"
|
|
208
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
209
|
+
Requires-Dist: diskcache; extra == "all"
|
|
210
|
+
Requires-Dist: dnspython[doh]; extra == "all"
|
|
218
211
|
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
212
|
+
Requires-Dist: pytest-cov; extra == "all"
|
|
213
|
+
Requires-Dist: httpx_retries; extra == "all"
|
|
214
|
+
Requires-Dist: pyyaml; extra == "all"
|
|
215
|
+
Requires-Dist: docker; extra == "all"
|
|
216
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
217
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
218
|
+
Requires-Dist: pymupdf; extra == "all"
|
|
219
219
|
Dynamic: author
|
|
220
220
|
Dynamic: author-email
|
|
221
221
|
Dynamic: description
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.3.52
|
|
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
|
|
@@ -18,68 +18,68 @@ pydantic-ai[logfire,openai]
|
|
|
18
18
|
ollama
|
|
19
19
|
|
|
20
20
|
[all]
|
|
21
|
-
bokeh
|
|
22
|
-
distributed
|
|
23
|
-
motor
|
|
24
|
-
faker
|
|
25
|
-
peft
|
|
26
|
-
openai
|
|
27
|
-
pandas
|
|
28
|
-
deepdiff
|
|
29
|
-
pycountry
|
|
30
|
-
regex
|
|
31
21
|
dask[bag]
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
yamlscript
|
|
35
|
-
google-auth-httplib2
|
|
36
|
-
pymupdf
|
|
22
|
+
peft
|
|
23
|
+
cachetools
|
|
37
24
|
pymupdf4llm
|
|
38
|
-
|
|
39
|
-
google-auth
|
|
25
|
+
google-auth-httplib2
|
|
26
|
+
google-auth-oauthlib
|
|
27
|
+
odfpy
|
|
28
|
+
filetype
|
|
29
|
+
pydantic
|
|
30
|
+
logfire
|
|
31
|
+
transformers[sentencepiece]
|
|
32
|
+
semver
|
|
40
33
|
logfire[fastapi]
|
|
34
|
+
fastapi
|
|
41
35
|
torchvision
|
|
42
|
-
diskcache
|
|
43
|
-
cachetools
|
|
44
|
-
semver
|
|
45
|
-
tinynetrc
|
|
46
36
|
sentence_transformers
|
|
47
|
-
|
|
37
|
+
pandas
|
|
38
|
+
pydevd-pycharm~=251.25410.159
|
|
39
|
+
contexttimer
|
|
48
40
|
openpyxl
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
ollama
|
|
52
|
-
docker
|
|
53
|
-
playwright
|
|
54
|
-
pytest-cov
|
|
55
|
-
pyyaml
|
|
56
|
-
fastapi
|
|
41
|
+
pydantic-settings
|
|
42
|
+
deepdiff
|
|
57
43
|
setuptools
|
|
58
44
|
beanie[odm]
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
deepmerge
|
|
64
|
-
sre_yield
|
|
65
|
-
uvicorn[standard]
|
|
66
|
-
flet-webview
|
|
45
|
+
flet-video
|
|
46
|
+
regex
|
|
47
|
+
ollama
|
|
48
|
+
tinynetrc
|
|
67
49
|
huggingface_hub
|
|
68
|
-
tabulate
|
|
69
50
|
tokenizers
|
|
70
|
-
httpx
|
|
71
|
-
contexttimer
|
|
72
|
-
flet-video
|
|
73
|
-
pydantic-settings
|
|
74
|
-
dnspython[doh]
|
|
75
|
-
odfpy
|
|
76
51
|
flet[all]
|
|
77
|
-
|
|
52
|
+
appdirs
|
|
53
|
+
logfire[httpx]
|
|
54
|
+
json_repair
|
|
78
55
|
torchaudio
|
|
79
|
-
|
|
80
|
-
|
|
56
|
+
uvicorn[standard]
|
|
57
|
+
motor
|
|
58
|
+
bokeh
|
|
59
|
+
flet-webview
|
|
60
|
+
httpx
|
|
61
|
+
playwright
|
|
62
|
+
yamlscript
|
|
63
|
+
distributed
|
|
64
|
+
faker
|
|
65
|
+
pycountry
|
|
66
|
+
tabulate
|
|
81
67
|
pydantic-ai[logfire,openai]
|
|
68
|
+
html2text
|
|
69
|
+
google-auth
|
|
70
|
+
openai
|
|
71
|
+
Unidecode
|
|
72
|
+
google-api-python-client
|
|
73
|
+
diskcache
|
|
74
|
+
dnspython[doh]
|
|
82
75
|
pydantic-extra-types
|
|
76
|
+
pytest-cov
|
|
77
|
+
httpx_retries
|
|
78
|
+
pyyaml
|
|
79
|
+
docker
|
|
80
|
+
sre_yield
|
|
81
|
+
deepmerge
|
|
82
|
+
pymupdf
|
|
83
83
|
|
|
84
84
|
[api]
|
|
85
85
|
fastapi
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|