fmtr.tools 1.3.53__tar.gz → 1.3.55__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.53 → fmtr_tools-1.3.55}/PKG-INFO +52 -52
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/__init__.py +1 -5
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/ai_tools/agentic_tools.py +5 -2
- fmtr_tools-1.3.55/fmtr/tools/docker_tools/__init__.py +6 -0
- fmtr_tools-1.3.55/fmtr/tools/version +1 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr.tools.egg-info/PKG-INFO +52 -52
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr.tools.egg-info/SOURCES.txt +2 -2
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr.tools.egg-info/requires.txt +51 -51
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/setup.py +1 -1
- fmtr_tools-1.3.53/fmtr/tools/docker_tools.py +0 -30
- fmtr_tools-1.3.53/fmtr/tools/version +0 -1
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/LICENSE +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/README.md +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/ai_tools/__init__.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/ai_tools/inference_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/api_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/async_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/augmentation_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/caching_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/constants.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/context_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/data_modelling_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/database_tools/__init__.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/database_tools/document.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/dataclass_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/datatype_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/datetime_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/debugging_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/dns_tools/__init__.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/dns_tools/client.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/dns_tools/dm.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/dns_tools/proxy.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/dns_tools/server.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/entrypoints/__init__.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/entrypoints/ep_test.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/entrypoints/shell_debug.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/environment_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/function_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/google_api_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/hash_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/hfh_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/html_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/http_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/import_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/inherit_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/inspection_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/interface_tools/__init__.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/interface_tools/context.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/interface_tools/controls.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/interface_tools/interface_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/iterator_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/json_fix_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/json_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/logging_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/merging_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/metric_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/name_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/netrc_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/openai_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/packaging_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/parallel_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/path_tools/__init__.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/path_tools/app_path_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/path_tools/path_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/path_tools/type_path_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/pattern_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/pdf_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/platform_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/process_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/profiling_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/random_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/semantic_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/settings_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/setup_tools/__init__.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/setup_tools/setup_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/spaces_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/string_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/tabular_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/tests/__init__.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/tests/conftest.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/tests/helpers.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/tests/test_datatype.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/tests/test_environment.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/tests/test_json.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/tests/test_path.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/tests/test_yaml.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/tokenization_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/unicode_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/version_tools/__init__.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/version_tools/version_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/webhook_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr/tools/yaml_tools.py +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr.tools.egg-info/dependency_links.txt +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr.tools.egg-info/entry_points.txt +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/fmtr.tools.egg-info/top_level.txt +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/pyproject.toml +0 -0
- {fmtr_tools-1.3.53 → fmtr_tools-1.3.55}/setup.cfg +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.55
|
|
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
|
|
@@ -28,8 +28,8 @@ Provides-Extra: process
|
|
|
28
28
|
Requires-Dist: logfire; extra == "process"
|
|
29
29
|
Provides-Extra: profiling
|
|
30
30
|
Requires-Dist: contexttimer; extra == "profiling"
|
|
31
|
-
Provides-Extra: docker-
|
|
32
|
-
Requires-Dist:
|
|
31
|
+
Provides-Extra: docker-client
|
|
32
|
+
Requires-Dist: python-on-whales; extra == "docker-client"
|
|
33
33
|
Provides-Extra: unicode
|
|
34
34
|
Requires-Dist: Unidecode; extra == "unicode"
|
|
35
35
|
Provides-Extra: version
|
|
@@ -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: dask[bag]; extra == "all"
|
|
158
|
-
Requires-Dist: peft; extra == "all"
|
|
159
|
-
Requires-Dist: cachetools; extra == "all"
|
|
160
|
-
Requires-Dist: pymupdf4llm; 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"
|
|
169
157
|
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
170
|
-
Requires-Dist: fastapi; extra == "all"
|
|
171
|
-
Requires-Dist: torchvision; extra == "all"
|
|
172
|
-
Requires-Dist: sentence_transformers; extra == "all"
|
|
173
|
-
Requires-Dist: pandas; extra == "all"
|
|
174
|
-
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
175
|
-
Requires-Dist: contexttimer; extra == "all"
|
|
176
|
-
Requires-Dist: openpyxl; extra == "all"
|
|
177
|
-
Requires-Dist: pydantic-settings; extra == "all"
|
|
178
158
|
Requires-Dist: deepdiff; extra == "all"
|
|
179
|
-
Requires-Dist:
|
|
180
|
-
Requires-Dist: beanie[odm]; 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"
|
|
185
|
-
Requires-Dist: huggingface_hub; extra == "all"
|
|
159
|
+
Requires-Dist: flet-webview; extra == "all"
|
|
186
160
|
Requires-Dist: tokenizers; extra == "all"
|
|
187
|
-
Requires-Dist:
|
|
188
|
-
Requires-Dist: appdirs; extra == "all"
|
|
189
|
-
Requires-Dist: logfire[httpx]; extra == "all"
|
|
190
|
-
Requires-Dist: json_repair; extra == "all"
|
|
191
|
-
Requires-Dist: torchaudio; extra == "all"
|
|
161
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
192
162
|
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
193
|
-
Requires-Dist: motor; extra == "all"
|
|
194
163
|
Requires-Dist: bokeh; extra == "all"
|
|
195
|
-
Requires-Dist:
|
|
196
|
-
Requires-Dist:
|
|
197
|
-
Requires-Dist:
|
|
198
|
-
Requires-Dist:
|
|
164
|
+
Requires-Dist: torchvision; extra == "all"
|
|
165
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
166
|
+
Requires-Dist: torchaudio; extra == "all"
|
|
167
|
+
Requires-Dist: pandas; extra == "all"
|
|
199
168
|
Requires-Dist: distributed; extra == "all"
|
|
200
|
-
Requires-Dist:
|
|
201
|
-
Requires-Dist:
|
|
202
|
-
Requires-Dist:
|
|
203
|
-
Requires-Dist:
|
|
169
|
+
Requires-Dist: setuptools; extra == "all"
|
|
170
|
+
Requires-Dist: diskcache; extra == "all"
|
|
171
|
+
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
172
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
173
|
+
Requires-Dist: motor; extra == "all"
|
|
174
|
+
Requires-Dist: appdirs; extra == "all"
|
|
175
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
176
|
+
Requires-Dist: tinynetrc; extra == "all"
|
|
177
|
+
Requires-Dist: sentence_transformers; extra == "all"
|
|
204
178
|
Requires-Dist: html2text; extra == "all"
|
|
179
|
+
Requires-Dist: openpyxl; extra == "all"
|
|
205
180
|
Requires-Dist: google-auth; extra == "all"
|
|
181
|
+
Requires-Dist: pymupdf4llm; extra == "all"
|
|
182
|
+
Requires-Dist: httpx; extra == "all"
|
|
183
|
+
Requires-Dist: fastapi; extra == "all"
|
|
184
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
206
185
|
Requires-Dist: openai; extra == "all"
|
|
186
|
+
Requires-Dist: pymupdf; extra == "all"
|
|
187
|
+
Requires-Dist: pytest-cov; extra == "all"
|
|
188
|
+
Requires-Dist: python-on-whales; extra == "all"
|
|
207
189
|
Requires-Dist: Unidecode; extra == "all"
|
|
208
|
-
Requires-Dist: google-api-python-client; extra == "all"
|
|
209
|
-
Requires-Dist: diskcache; extra == "all"
|
|
210
190
|
Requires-Dist: dnspython[doh]; extra == "all"
|
|
211
|
-
Requires-Dist:
|
|
212
|
-
Requires-Dist:
|
|
191
|
+
Requires-Dist: logfire; extra == "all"
|
|
192
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
193
|
+
Requires-Dist: tabulate; extra == "all"
|
|
194
|
+
Requires-Dist: odfpy; extra == "all"
|
|
195
|
+
Requires-Dist: beanie[odm]; extra == "all"
|
|
196
|
+
Requires-Dist: json_repair; extra == "all"
|
|
197
|
+
Requires-Dist: flet-video; extra == "all"
|
|
198
|
+
Requires-Dist: logfire[httpx]; extra == "all"
|
|
199
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
200
|
+
Requires-Dist: playwright; extra == "all"
|
|
201
|
+
Requires-Dist: ollama; extra == "all"
|
|
213
202
|
Requires-Dist: httpx_retries; extra == "all"
|
|
203
|
+
Requires-Dist: peft; extra == "all"
|
|
214
204
|
Requires-Dist: pyyaml; extra == "all"
|
|
215
|
-
Requires-Dist:
|
|
216
|
-
Requires-Dist:
|
|
217
|
-
Requires-Dist:
|
|
218
|
-
Requires-Dist:
|
|
205
|
+
Requires-Dist: faker; extra == "all"
|
|
206
|
+
Requires-Dist: pycountry; extra == "all"
|
|
207
|
+
Requires-Dist: dask[bag]; extra == "all"
|
|
208
|
+
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
209
|
+
Requires-Dist: huggingface_hub; extra == "all"
|
|
210
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
211
|
+
Requires-Dist: pydantic-settings; extra == "all"
|
|
212
|
+
Requires-Dist: pydantic; extra == "all"
|
|
213
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
214
|
+
Requires-Dist: flet[all]; extra == "all"
|
|
215
|
+
Requires-Dist: regex; extra == "all"
|
|
216
|
+
Requires-Dist: cachetools; extra == "all"
|
|
217
|
+
Requires-Dist: semver; extra == "all"
|
|
218
|
+
Requires-Dist: filetype; extra == "all"
|
|
219
219
|
Dynamic: author
|
|
220
220
|
Dynamic: author-email
|
|
221
221
|
Dynamic: description
|
|
@@ -21,6 +21,7 @@ import fmtr.tools.string_tools as string
|
|
|
21
21
|
from fmtr.tools import ai_tools as ai
|
|
22
22
|
from fmtr.tools import datetime_tools as dt
|
|
23
23
|
from fmtr.tools import dns_tools as dns
|
|
24
|
+
from fmtr.tools import docker_tools as docker
|
|
24
25
|
from fmtr.tools import interface_tools as interface
|
|
25
26
|
from fmtr.tools import version_tools as version
|
|
26
27
|
from fmtr.tools.constants import Constants
|
|
@@ -40,11 +41,6 @@ try:
|
|
|
40
41
|
except ModuleNotFoundError as exception:
|
|
41
42
|
yaml = MissingExtraMockModule('yaml', exception)
|
|
42
43
|
|
|
43
|
-
try:
|
|
44
|
-
from fmtr.tools import docker_tools as docker
|
|
45
|
-
from fmtr.tools.docker_tools import Container
|
|
46
|
-
except ModuleNotFoundError as exception:
|
|
47
|
-
docker = Container = MissingExtraMockModule('docker.api', exception)
|
|
48
44
|
|
|
49
45
|
try:
|
|
50
46
|
from fmtr.tools import parallel_tools as parallel
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from typing import List, Optional, Any, Annotated, Generic
|
|
2
|
+
|
|
1
3
|
import pydantic_ai
|
|
2
4
|
from pydantic import PlainValidator
|
|
3
5
|
from pydantic_ai import RunContext, ModelRetry
|
|
@@ -6,7 +8,6 @@ from pydantic_ai.agent import AgentRunResult, Agent
|
|
|
6
8
|
from pydantic_ai.models.openai import OpenAIModel
|
|
7
9
|
from pydantic_ai.providers.openai import OpenAIProvider
|
|
8
10
|
from pydantic_ai.tools import AgentDepsT
|
|
9
|
-
from typing import List, Optional, Any, Annotated, Generic
|
|
10
11
|
|
|
11
12
|
from fmtr.tools import environment_tools as env
|
|
12
13
|
from fmtr.tools.constants import Constants
|
|
@@ -27,6 +28,8 @@ class Validator:
|
|
|
27
28
|
raise NotImplementedError()
|
|
28
29
|
|
|
29
30
|
|
|
31
|
+
api_key = env.get(Constants.FMTR_OPENAI_API_KEY_KEY, None)
|
|
32
|
+
|
|
30
33
|
class Task(Generic[AgentDepsT, OutputDataT]):
|
|
31
34
|
"""
|
|
32
35
|
|
|
@@ -37,7 +40,7 @@ class Task(Generic[AgentDepsT, OutputDataT]):
|
|
|
37
40
|
TypeDeps = str
|
|
38
41
|
TypeOutput = str
|
|
39
42
|
|
|
40
|
-
PROVIDER = OpenAIProvider(api_key=
|
|
43
|
+
PROVIDER = OpenAIProvider(api_key=api_key) if api_key else None
|
|
41
44
|
|
|
42
45
|
API_HOST_FMTR = env.get(Constants.FMTR_AI_HOST_KEY, Constants.FMTR_AI_HOST_DEFAULT)
|
|
43
46
|
API_URL_FMTR = f'https://{API_HOST_FMTR}/v1'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.3.55
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.55
|
|
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
|
|
@@ -28,8 +28,8 @@ Provides-Extra: process
|
|
|
28
28
|
Requires-Dist: logfire; extra == "process"
|
|
29
29
|
Provides-Extra: profiling
|
|
30
30
|
Requires-Dist: contexttimer; extra == "profiling"
|
|
31
|
-
Provides-Extra: docker-
|
|
32
|
-
Requires-Dist:
|
|
31
|
+
Provides-Extra: docker-client
|
|
32
|
+
Requires-Dist: python-on-whales; extra == "docker-client"
|
|
33
33
|
Provides-Extra: unicode
|
|
34
34
|
Requires-Dist: Unidecode; extra == "unicode"
|
|
35
35
|
Provides-Extra: version
|
|
@@ -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: dask[bag]; extra == "all"
|
|
158
|
-
Requires-Dist: peft; extra == "all"
|
|
159
|
-
Requires-Dist: cachetools; extra == "all"
|
|
160
|
-
Requires-Dist: pymupdf4llm; 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"
|
|
169
157
|
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
170
|
-
Requires-Dist: fastapi; extra == "all"
|
|
171
|
-
Requires-Dist: torchvision; extra == "all"
|
|
172
|
-
Requires-Dist: sentence_transformers; extra == "all"
|
|
173
|
-
Requires-Dist: pandas; extra == "all"
|
|
174
|
-
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
175
|
-
Requires-Dist: contexttimer; extra == "all"
|
|
176
|
-
Requires-Dist: openpyxl; extra == "all"
|
|
177
|
-
Requires-Dist: pydantic-settings; extra == "all"
|
|
178
158
|
Requires-Dist: deepdiff; extra == "all"
|
|
179
|
-
Requires-Dist:
|
|
180
|
-
Requires-Dist: beanie[odm]; 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"
|
|
185
|
-
Requires-Dist: huggingface_hub; extra == "all"
|
|
159
|
+
Requires-Dist: flet-webview; extra == "all"
|
|
186
160
|
Requires-Dist: tokenizers; extra == "all"
|
|
187
|
-
Requires-Dist:
|
|
188
|
-
Requires-Dist: appdirs; extra == "all"
|
|
189
|
-
Requires-Dist: logfire[httpx]; extra == "all"
|
|
190
|
-
Requires-Dist: json_repair; extra == "all"
|
|
191
|
-
Requires-Dist: torchaudio; extra == "all"
|
|
161
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
192
162
|
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
193
|
-
Requires-Dist: motor; extra == "all"
|
|
194
163
|
Requires-Dist: bokeh; extra == "all"
|
|
195
|
-
Requires-Dist:
|
|
196
|
-
Requires-Dist:
|
|
197
|
-
Requires-Dist:
|
|
198
|
-
Requires-Dist:
|
|
164
|
+
Requires-Dist: torchvision; extra == "all"
|
|
165
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
166
|
+
Requires-Dist: torchaudio; extra == "all"
|
|
167
|
+
Requires-Dist: pandas; extra == "all"
|
|
199
168
|
Requires-Dist: distributed; extra == "all"
|
|
200
|
-
Requires-Dist:
|
|
201
|
-
Requires-Dist:
|
|
202
|
-
Requires-Dist:
|
|
203
|
-
Requires-Dist:
|
|
169
|
+
Requires-Dist: setuptools; extra == "all"
|
|
170
|
+
Requires-Dist: diskcache; extra == "all"
|
|
171
|
+
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
172
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
173
|
+
Requires-Dist: motor; extra == "all"
|
|
174
|
+
Requires-Dist: appdirs; extra == "all"
|
|
175
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
176
|
+
Requires-Dist: tinynetrc; extra == "all"
|
|
177
|
+
Requires-Dist: sentence_transformers; extra == "all"
|
|
204
178
|
Requires-Dist: html2text; extra == "all"
|
|
179
|
+
Requires-Dist: openpyxl; extra == "all"
|
|
205
180
|
Requires-Dist: google-auth; extra == "all"
|
|
181
|
+
Requires-Dist: pymupdf4llm; extra == "all"
|
|
182
|
+
Requires-Dist: httpx; extra == "all"
|
|
183
|
+
Requires-Dist: fastapi; extra == "all"
|
|
184
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
206
185
|
Requires-Dist: openai; extra == "all"
|
|
186
|
+
Requires-Dist: pymupdf; extra == "all"
|
|
187
|
+
Requires-Dist: pytest-cov; extra == "all"
|
|
188
|
+
Requires-Dist: python-on-whales; extra == "all"
|
|
207
189
|
Requires-Dist: Unidecode; extra == "all"
|
|
208
|
-
Requires-Dist: google-api-python-client; extra == "all"
|
|
209
|
-
Requires-Dist: diskcache; extra == "all"
|
|
210
190
|
Requires-Dist: dnspython[doh]; extra == "all"
|
|
211
|
-
Requires-Dist:
|
|
212
|
-
Requires-Dist:
|
|
191
|
+
Requires-Dist: logfire; extra == "all"
|
|
192
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
193
|
+
Requires-Dist: tabulate; extra == "all"
|
|
194
|
+
Requires-Dist: odfpy; extra == "all"
|
|
195
|
+
Requires-Dist: beanie[odm]; extra == "all"
|
|
196
|
+
Requires-Dist: json_repair; extra == "all"
|
|
197
|
+
Requires-Dist: flet-video; extra == "all"
|
|
198
|
+
Requires-Dist: logfire[httpx]; extra == "all"
|
|
199
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
200
|
+
Requires-Dist: playwright; extra == "all"
|
|
201
|
+
Requires-Dist: ollama; extra == "all"
|
|
213
202
|
Requires-Dist: httpx_retries; extra == "all"
|
|
203
|
+
Requires-Dist: peft; extra == "all"
|
|
214
204
|
Requires-Dist: pyyaml; extra == "all"
|
|
215
|
-
Requires-Dist:
|
|
216
|
-
Requires-Dist:
|
|
217
|
-
Requires-Dist:
|
|
218
|
-
Requires-Dist:
|
|
205
|
+
Requires-Dist: faker; extra == "all"
|
|
206
|
+
Requires-Dist: pycountry; extra == "all"
|
|
207
|
+
Requires-Dist: dask[bag]; extra == "all"
|
|
208
|
+
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
209
|
+
Requires-Dist: huggingface_hub; extra == "all"
|
|
210
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
211
|
+
Requires-Dist: pydantic-settings; extra == "all"
|
|
212
|
+
Requires-Dist: pydantic; extra == "all"
|
|
213
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
214
|
+
Requires-Dist: flet[all]; extra == "all"
|
|
215
|
+
Requires-Dist: regex; extra == "all"
|
|
216
|
+
Requires-Dist: cachetools; extra == "all"
|
|
217
|
+
Requires-Dist: semver; extra == "all"
|
|
218
|
+
Requires-Dist: filetype; extra == "all"
|
|
219
219
|
Dynamic: author
|
|
220
220
|
Dynamic: author-email
|
|
221
221
|
Dynamic: description
|
|
@@ -14,7 +14,6 @@ setup.py
|
|
|
14
14
|
./fmtr/tools/datatype_tools.py
|
|
15
15
|
./fmtr/tools/datetime_tools.py
|
|
16
16
|
./fmtr/tools/debugging_tools.py
|
|
17
|
-
./fmtr/tools/docker_tools.py
|
|
18
17
|
./fmtr/tools/environment_tools.py
|
|
19
18
|
./fmtr/tools/function_tools.py
|
|
20
19
|
./fmtr/tools/google_api_tools.py
|
|
@@ -63,6 +62,7 @@ setup.py
|
|
|
63
62
|
./fmtr/tools/dns_tools/dm.py
|
|
64
63
|
./fmtr/tools/dns_tools/proxy.py
|
|
65
64
|
./fmtr/tools/dns_tools/server.py
|
|
65
|
+
./fmtr/tools/docker_tools/__init__.py
|
|
66
66
|
./fmtr/tools/entrypoints/__init__.py
|
|
67
67
|
./fmtr/tools/entrypoints/cache_hfh.py
|
|
68
68
|
./fmtr/tools/entrypoints/ep_test.py
|
|
@@ -107,7 +107,6 @@ fmtr/tools/dataclass_tools.py
|
|
|
107
107
|
fmtr/tools/datatype_tools.py
|
|
108
108
|
fmtr/tools/datetime_tools.py
|
|
109
109
|
fmtr/tools/debugging_tools.py
|
|
110
|
-
fmtr/tools/docker_tools.py
|
|
111
110
|
fmtr/tools/environment_tools.py
|
|
112
111
|
fmtr/tools/function_tools.py
|
|
113
112
|
fmtr/tools/google_api_tools.py
|
|
@@ -156,6 +155,7 @@ fmtr/tools/dns_tools/client.py
|
|
|
156
155
|
fmtr/tools/dns_tools/dm.py
|
|
157
156
|
fmtr/tools/dns_tools/proxy.py
|
|
158
157
|
fmtr/tools/dns_tools/server.py
|
|
158
|
+
fmtr/tools/docker_tools/__init__.py
|
|
159
159
|
fmtr/tools/entrypoints/__init__.py
|
|
160
160
|
fmtr/tools/entrypoints/cache_hfh.py
|
|
161
161
|
fmtr/tools/entrypoints/ep_test.py
|
|
@@ -18,68 +18,68 @@ pydantic-ai[logfire,openai]
|
|
|
18
18
|
ollama
|
|
19
19
|
|
|
20
20
|
[all]
|
|
21
|
-
dask[bag]
|
|
22
|
-
peft
|
|
23
|
-
cachetools
|
|
24
|
-
pymupdf4llm
|
|
25
|
-
google-auth-httplib2
|
|
26
|
-
google-auth-oauthlib
|
|
27
|
-
odfpy
|
|
28
|
-
filetype
|
|
29
|
-
pydantic
|
|
30
|
-
logfire
|
|
31
|
-
transformers[sentencepiece]
|
|
32
|
-
semver
|
|
33
21
|
logfire[fastapi]
|
|
34
|
-
fastapi
|
|
35
|
-
torchvision
|
|
36
|
-
sentence_transformers
|
|
37
|
-
pandas
|
|
38
|
-
pydevd-pycharm~=251.25410.159
|
|
39
|
-
contexttimer
|
|
40
|
-
openpyxl
|
|
41
|
-
pydantic-settings
|
|
42
22
|
deepdiff
|
|
43
|
-
|
|
44
|
-
beanie[odm]
|
|
45
|
-
flet-video
|
|
46
|
-
regex
|
|
47
|
-
ollama
|
|
48
|
-
tinynetrc
|
|
49
|
-
huggingface_hub
|
|
23
|
+
flet-webview
|
|
50
24
|
tokenizers
|
|
51
|
-
|
|
52
|
-
appdirs
|
|
53
|
-
logfire[httpx]
|
|
54
|
-
json_repair
|
|
55
|
-
torchaudio
|
|
25
|
+
sre_yield
|
|
56
26
|
uvicorn[standard]
|
|
57
|
-
motor
|
|
58
27
|
bokeh
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
28
|
+
torchvision
|
|
29
|
+
google-api-python-client
|
|
30
|
+
torchaudio
|
|
31
|
+
pandas
|
|
63
32
|
distributed
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
33
|
+
setuptools
|
|
34
|
+
diskcache
|
|
35
|
+
transformers[sentencepiece]
|
|
36
|
+
deepmerge
|
|
37
|
+
motor
|
|
38
|
+
appdirs
|
|
39
|
+
google-auth-httplib2
|
|
40
|
+
tinynetrc
|
|
41
|
+
sentence_transformers
|
|
68
42
|
html2text
|
|
43
|
+
openpyxl
|
|
69
44
|
google-auth
|
|
45
|
+
pymupdf4llm
|
|
46
|
+
httpx
|
|
47
|
+
fastapi
|
|
48
|
+
yamlscript
|
|
70
49
|
openai
|
|
50
|
+
pymupdf
|
|
51
|
+
pytest-cov
|
|
52
|
+
python-on-whales
|
|
71
53
|
Unidecode
|
|
72
|
-
google-api-python-client
|
|
73
|
-
diskcache
|
|
74
54
|
dnspython[doh]
|
|
75
|
-
|
|
76
|
-
|
|
55
|
+
logfire
|
|
56
|
+
contexttimer
|
|
57
|
+
tabulate
|
|
58
|
+
odfpy
|
|
59
|
+
beanie[odm]
|
|
60
|
+
json_repair
|
|
61
|
+
flet-video
|
|
62
|
+
logfire[httpx]
|
|
63
|
+
pydevd-pycharm~=251.25410.159
|
|
64
|
+
playwright
|
|
65
|
+
ollama
|
|
77
66
|
httpx_retries
|
|
67
|
+
peft
|
|
78
68
|
pyyaml
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
69
|
+
faker
|
|
70
|
+
pycountry
|
|
71
|
+
dask[bag]
|
|
72
|
+
pydantic-extra-types
|
|
73
|
+
huggingface_hub
|
|
74
|
+
google-auth-oauthlib
|
|
75
|
+
pydantic-settings
|
|
76
|
+
pydantic
|
|
77
|
+
pydantic-ai[logfire,openai]
|
|
78
|
+
flet[all]
|
|
79
|
+
regex
|
|
80
|
+
cachetools
|
|
81
|
+
semver
|
|
82
|
+
filetype
|
|
83
83
|
|
|
84
84
|
[api]
|
|
85
85
|
fastapi
|
|
@@ -122,8 +122,8 @@ httpx_retries
|
|
|
122
122
|
logfire
|
|
123
123
|
logfire[httpx]
|
|
124
124
|
|
|
125
|
-
[docker.
|
|
126
|
-
|
|
125
|
+
[docker.client]
|
|
126
|
+
python-on-whales
|
|
127
127
|
|
|
128
128
|
[google.api]
|
|
129
129
|
google-auth
|
|
@@ -10,7 +10,7 @@ DEPENDENCIES = {
|
|
|
10
10
|
'augmentation': ['faker', 'sre_yield'],
|
|
11
11
|
'process': ['logging'],
|
|
12
12
|
'profiling': ['contexttimer'],
|
|
13
|
-
'docker.
|
|
13
|
+
'docker.client': ['python-on-whales'],
|
|
14
14
|
'unicode': ['Unidecode'],
|
|
15
15
|
'version': [],
|
|
16
16
|
'version.dev': ['semver'],
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import contextlib
|
|
2
|
-
import docker
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
@contextlib.contextmanager
|
|
6
|
-
def Container(image, ports=None, name=None, **kwargs):
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
Run a Docker container in a context manager
|
|
10
|
-
|
|
11
|
-
"""
|
|
12
|
-
client = docker.from_env()
|
|
13
|
-
|
|
14
|
-
try:
|
|
15
|
-
container = client.containers.get(name)
|
|
16
|
-
container.stop()
|
|
17
|
-
container.remove()
|
|
18
|
-
except docker.errors.NotFound:
|
|
19
|
-
pass
|
|
20
|
-
|
|
21
|
-
ports = {f'{port}/tcp': port for port in ports}
|
|
22
|
-
container = client.containers.run(image, ports=ports, detach=True, name=name, **kwargs)
|
|
23
|
-
|
|
24
|
-
try:
|
|
25
|
-
yield container
|
|
26
|
-
finally:
|
|
27
|
-
container.stop()
|
|
28
|
-
container.remove()
|
|
29
|
-
|
|
30
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.3.53
|
|
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
|