fmtr.tools 1.3.44__tar.gz → 1.3.46__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.44 → fmtr_tools-1.3.46}/PKG-INFO +53 -46
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/ai_tools/agentic_tools.py +9 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/interface_tools/interface_tools.py +16 -3
- fmtr_tools-1.3.46/fmtr/tools/version +1 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr.tools.egg-info/PKG-INFO +53 -46
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr.tools.egg-info/requires.txt +52 -45
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/setup.py +1 -1
- fmtr_tools-1.3.44/fmtr/tools/version +0 -1
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/LICENSE +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/README.md +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/__init__.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/ai_tools/__init__.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/ai_tools/inference_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/api_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/async_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/augmentation_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/caching_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/constants.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/context_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/data_modelling_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/database_tools/__init__.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/database_tools/document.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/dataclass_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/datatype_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/datetime_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/debugging_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/dns_tools/__init__.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/dns_tools/client.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/dns_tools/dm.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/dns_tools/proxy.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/dns_tools/server.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/docker_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/entrypoints/__init__.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/entrypoints/ep_test.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/entrypoints/shell_debug.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/environment_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/function_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/google_api_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/hash_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/hfh_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/html_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/http_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/import_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/inherit_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/inspection_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/interface_tools/__init__.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/interface_tools/context.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/interface_tools/controls.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/iterator_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/json_fix_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/json_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/logging_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/merging_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/metric_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/name_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/netrc_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/openai_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/packaging_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/parallel_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/path_tools/__init__.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/path_tools/app_path_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/path_tools/path_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/path_tools/type_path_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/pattern_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/pdf_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/platform_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/process_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/profiling_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/random_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/semantic_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/settings_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/setup_tools/__init__.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/setup_tools/setup_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/spaces_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/string_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tabular_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/__init__.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/conftest.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/helpers.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/test_datatype.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/test_environment.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/test_json.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/test_path.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/test_yaml.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tokenization_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/unicode_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/version_tools/__init__.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/version_tools/version_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/webhook_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/yaml_tools.py +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr.tools.egg-info/SOURCES.txt +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr.tools.egg-info/dependency_links.txt +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr.tools.egg-info/entry_points.txt +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr.tools.egg-info/top_level.txt +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/pyproject.toml +0 -0
- {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/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.46
|
|
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
|
|
@@ -48,6 +48,7 @@ Requires-Dist: fastapi; extra == "api"
|
|
|
48
48
|
Requires-Dist: uvicorn[standard]; extra == "api"
|
|
49
49
|
Requires-Dist: logfire; extra == "api"
|
|
50
50
|
Requires-Dist: pydantic; extra == "api"
|
|
51
|
+
Requires-Dist: pydantic-extra-types; extra == "api"
|
|
51
52
|
Requires-Dist: logfire[fastapi]; extra == "api"
|
|
52
53
|
Provides-Extra: ai
|
|
53
54
|
Requires-Dist: peft; extra == "ai"
|
|
@@ -55,13 +56,16 @@ Requires-Dist: transformers[sentencepiece]; extra == "ai"
|
|
|
55
56
|
Requires-Dist: torchvision; extra == "ai"
|
|
56
57
|
Requires-Dist: torchaudio; extra == "ai"
|
|
57
58
|
Requires-Dist: pydantic; extra == "ai"
|
|
59
|
+
Requires-Dist: pydantic-extra-types; extra == "ai"
|
|
58
60
|
Provides-Extra: dm
|
|
59
61
|
Requires-Dist: pydantic; extra == "dm"
|
|
62
|
+
Requires-Dist: pydantic-extra-types; extra == "dm"
|
|
60
63
|
Provides-Extra: openai-api
|
|
61
64
|
Requires-Dist: openai; extra == "openai-api"
|
|
62
65
|
Provides-Extra: ai-client
|
|
63
66
|
Requires-Dist: logfire; extra == "ai-client"
|
|
64
67
|
Requires-Dist: pydantic; extra == "ai-client"
|
|
68
|
+
Requires-Dist: pydantic-extra-types; extra == "ai-client"
|
|
65
69
|
Requires-Dist: openai; extra == "ai-client"
|
|
66
70
|
Requires-Dist: pydantic-ai[logfire,openai]; extra == "ai-client"
|
|
67
71
|
Requires-Dist: ollama; extra == "ai-client"
|
|
@@ -97,12 +101,14 @@ Requires-Dist: cachetools; extra == "caching"
|
|
|
97
101
|
Provides-Extra: pdf
|
|
98
102
|
Requires-Dist: pymupdf; extra == "pdf"
|
|
99
103
|
Requires-Dist: pydantic; extra == "pdf"
|
|
104
|
+
Requires-Dist: pydantic-extra-types; extra == "pdf"
|
|
100
105
|
Requires-Dist: pymupdf4llm; extra == "pdf"
|
|
101
106
|
Provides-Extra: debug
|
|
102
107
|
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "debug"
|
|
103
108
|
Provides-Extra: sets
|
|
104
109
|
Requires-Dist: pydantic-settings; extra == "sets"
|
|
105
110
|
Requires-Dist: pydantic; extra == "sets"
|
|
111
|
+
Requires-Dist: pydantic-extra-types; extra == "sets"
|
|
106
112
|
Requires-Dist: yamlscript; extra == "sets"
|
|
107
113
|
Requires-Dist: pyyaml; extra == "sets"
|
|
108
114
|
Provides-Extra: path-app
|
|
@@ -136,64 +142,65 @@ Provides-Extra: db-document
|
|
|
136
142
|
Requires-Dist: beanie[odm]; extra == "db-document"
|
|
137
143
|
Requires-Dist: motor; extra == "db-document"
|
|
138
144
|
Provides-Extra: all
|
|
139
|
-
Requires-Dist:
|
|
140
|
-
Requires-Dist:
|
|
141
|
-
Requires-Dist:
|
|
142
|
-
Requires-Dist:
|
|
143
|
-
Requires-Dist:
|
|
144
|
-
Requires-Dist: playwright; extra == "all"
|
|
145
|
-
Requires-Dist: httpx_retries; extra == "all"
|
|
146
|
-
Requires-Dist: pydantic; extra == "all"
|
|
145
|
+
Requires-Dist: torchaudio; extra == "all"
|
|
146
|
+
Requires-Dist: google-auth; extra == "all"
|
|
147
|
+
Requires-Dist: ollama; extra == "all"
|
|
148
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
149
|
+
Requires-Dist: setuptools; extra == "all"
|
|
147
150
|
Requires-Dist: flet[all]; extra == "all"
|
|
151
|
+
Requires-Dist: dnspython[doh]; extra == "all"
|
|
152
|
+
Requires-Dist: flet-video; extra == "all"
|
|
153
|
+
Requires-Dist: motor; extra == "all"
|
|
148
154
|
Requires-Dist: httpx; extra == "all"
|
|
149
|
-
Requires-Dist:
|
|
150
|
-
Requires-Dist:
|
|
155
|
+
Requires-Dist: pydantic; extra == "all"
|
|
156
|
+
Requires-Dist: Unidecode; extra == "all"
|
|
157
|
+
Requires-Dist: huggingface_hub; extra == "all"
|
|
158
|
+
Requires-Dist: pymupdf4llm; extra == "all"
|
|
159
|
+
Requires-Dist: appdirs; extra == "all"
|
|
160
|
+
Requires-Dist: distributed; extra == "all"
|
|
161
|
+
Requires-Dist: playwright; extra == "all"
|
|
151
162
|
Requires-Dist: cachetools; extra == "all"
|
|
152
|
-
Requires-Dist:
|
|
153
|
-
Requires-Dist:
|
|
154
|
-
Requires-Dist: json_repair; extra == "all"
|
|
155
|
-
Requires-Dist: deepmerge; extra == "all"
|
|
156
|
-
Requires-Dist: ollama; extra == "all"
|
|
157
|
-
Requires-Dist: pydantic-settings; extra == "all"
|
|
163
|
+
Requires-Dist: openai; extra == "all"
|
|
164
|
+
Requires-Dist: logfire; extra == "all"
|
|
158
165
|
Requires-Dist: faker; extra == "all"
|
|
159
|
-
Requires-Dist:
|
|
160
|
-
Requires-Dist:
|
|
161
|
-
Requires-Dist:
|
|
162
|
-
Requires-Dist: semver; extra == "all"
|
|
163
|
-
Requires-Dist: appdirs; extra == "all"
|
|
166
|
+
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
167
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
168
|
+
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
164
169
|
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
170
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
171
|
+
Requires-Dist: tabulate; extra == "all"
|
|
165
172
|
Requires-Dist: dask[bag]; extra == "all"
|
|
173
|
+
Requires-Dist: torchvision; extra == "all"
|
|
174
|
+
Requires-Dist: peft; extra == "all"
|
|
175
|
+
Requires-Dist: json_repair; extra == "all"
|
|
176
|
+
Requires-Dist: openpyxl; extra == "all"
|
|
177
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
178
|
+
Requires-Dist: tokenizers; extra == "all"
|
|
179
|
+
Requires-Dist: flet-webview; extra == "all"
|
|
166
180
|
Requires-Dist: diskcache; extra == "all"
|
|
181
|
+
Requires-Dist: fastapi; extra == "all"
|
|
182
|
+
Requires-Dist: docker; extra == "all"
|
|
183
|
+
Requires-Dist: pyyaml; extra == "all"
|
|
184
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
185
|
+
Requires-Dist: pytest-cov; extra == "all"
|
|
186
|
+
Requires-Dist: semver; extra == "all"
|
|
167
187
|
Requires-Dist: tinynetrc; extra == "all"
|
|
168
|
-
Requires-Dist:
|
|
169
|
-
Requires-Dist: setuptools; extra == "all"
|
|
188
|
+
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
170
189
|
Requires-Dist: html2text; extra == "all"
|
|
190
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
191
|
+
Requires-Dist: pydantic-settings; extra == "all"
|
|
192
|
+
Requires-Dist: filetype; extra == "all"
|
|
193
|
+
Requires-Dist: pandas; extra == "all"
|
|
194
|
+
Requires-Dist: httpx_retries; extra == "all"
|
|
171
195
|
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
172
|
-
Requires-Dist:
|
|
196
|
+
Requires-Dist: beanie[odm]; extra == "all"
|
|
197
|
+
Requires-Dist: pymupdf; extra == "all"
|
|
198
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
173
199
|
Requires-Dist: sentence_transformers; extra == "all"
|
|
174
|
-
Requires-Dist:
|
|
175
|
-
Requires-Dist: pytest-cov; extra == "all"
|
|
176
|
-
Requires-Dist: docker; extra == "all"
|
|
177
|
-
Requires-Dist: logfire; extra == "all"
|
|
178
|
-
Requires-Dist: openpyxl; extra == "all"
|
|
179
|
-
Requires-Dist: tabulate; extra == "all"
|
|
200
|
+
Requires-Dist: bokeh; extra == "all"
|
|
180
201
|
Requires-Dist: regex; extra == "all"
|
|
181
|
-
Requires-Dist:
|
|
202
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
182
203
|
Requires-Dist: logfire[httpx]; extra == "all"
|
|
183
|
-
Requires-Dist: torchaudio; extra == "all"
|
|
184
|
-
Requires-Dist: torchvision; extra == "all"
|
|
185
|
-
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
186
|
-
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
187
|
-
Requires-Dist: filetype; extra == "all"
|
|
188
|
-
Requires-Dist: huggingface_hub; extra == "all"
|
|
189
|
-
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
190
|
-
Requires-Dist: pymupdf4llm; extra == "all"
|
|
191
|
-
Requires-Dist: contexttimer; extra == "all"
|
|
192
|
-
Requires-Dist: Unidecode; extra == "all"
|
|
193
|
-
Requires-Dist: google-auth; extra == "all"
|
|
194
|
-
Requires-Dist: flet-video; extra == "all"
|
|
195
|
-
Requires-Dist: dnspython[doh]; extra == "all"
|
|
196
|
-
Requires-Dist: pandas; extra == "all"
|
|
197
204
|
Dynamic: author
|
|
198
205
|
Dynamic: author-email
|
|
199
206
|
Dynamic: description
|
|
@@ -2,7 +2,7 @@ import flet as ft
|
|
|
2
2
|
from flet.core.types import AppView
|
|
3
3
|
from flet.core.view import View
|
|
4
4
|
from functools import cached_property
|
|
5
|
-
from typing import TypeVar, Generic, Type
|
|
5
|
+
from typing import TypeVar, Generic, Type, Self
|
|
6
6
|
|
|
7
7
|
from fmtr.tools import environment_tools
|
|
8
8
|
from fmtr.tools.constants import Constants
|
|
@@ -86,7 +86,7 @@ class Interface(Generic[T], ft.Column):
|
|
|
86
86
|
super().__init__(*args, **kwargs, scroll=self.SCROLL)
|
|
87
87
|
|
|
88
88
|
@classmethod
|
|
89
|
-
def render(cls, page: ft.Page):
|
|
89
|
+
async def render(cls, page: ft.Page):
|
|
90
90
|
"""
|
|
91
91
|
|
|
92
92
|
Interface entry point. Set relevant callbacks, and add instantiated self to page views
|
|
@@ -97,7 +97,9 @@ class Interface(Generic[T], ft.Column):
|
|
|
97
97
|
page.theme = cls.get_theme()
|
|
98
98
|
page.views.clear()
|
|
99
99
|
context = cls.TypeContext(page=page)
|
|
100
|
-
|
|
100
|
+
|
|
101
|
+
self = await cls.create(context)
|
|
102
|
+
|
|
101
103
|
view = self.view
|
|
102
104
|
if not view:
|
|
103
105
|
view = self
|
|
@@ -107,6 +109,17 @@ class Interface(Generic[T], ft.Column):
|
|
|
107
109
|
|
|
108
110
|
page.go(cls.ROUTE_ROOT)
|
|
109
111
|
|
|
112
|
+
@classmethod
|
|
113
|
+
async def create(cls, context: T) -> Self:
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
Overridable async interface constructor.
|
|
117
|
+
|
|
118
|
+
"""
|
|
119
|
+
self = cls(context)
|
|
120
|
+
return self
|
|
121
|
+
|
|
122
|
+
|
|
110
123
|
@cached_property
|
|
111
124
|
def view(self):
|
|
112
125
|
"""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.3.46
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.46
|
|
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
|
|
@@ -48,6 +48,7 @@ Requires-Dist: fastapi; extra == "api"
|
|
|
48
48
|
Requires-Dist: uvicorn[standard]; extra == "api"
|
|
49
49
|
Requires-Dist: logfire; extra == "api"
|
|
50
50
|
Requires-Dist: pydantic; extra == "api"
|
|
51
|
+
Requires-Dist: pydantic-extra-types; extra == "api"
|
|
51
52
|
Requires-Dist: logfire[fastapi]; extra == "api"
|
|
52
53
|
Provides-Extra: ai
|
|
53
54
|
Requires-Dist: peft; extra == "ai"
|
|
@@ -55,13 +56,16 @@ Requires-Dist: transformers[sentencepiece]; extra == "ai"
|
|
|
55
56
|
Requires-Dist: torchvision; extra == "ai"
|
|
56
57
|
Requires-Dist: torchaudio; extra == "ai"
|
|
57
58
|
Requires-Dist: pydantic; extra == "ai"
|
|
59
|
+
Requires-Dist: pydantic-extra-types; extra == "ai"
|
|
58
60
|
Provides-Extra: dm
|
|
59
61
|
Requires-Dist: pydantic; extra == "dm"
|
|
62
|
+
Requires-Dist: pydantic-extra-types; extra == "dm"
|
|
60
63
|
Provides-Extra: openai-api
|
|
61
64
|
Requires-Dist: openai; extra == "openai-api"
|
|
62
65
|
Provides-Extra: ai-client
|
|
63
66
|
Requires-Dist: logfire; extra == "ai-client"
|
|
64
67
|
Requires-Dist: pydantic; extra == "ai-client"
|
|
68
|
+
Requires-Dist: pydantic-extra-types; extra == "ai-client"
|
|
65
69
|
Requires-Dist: openai; extra == "ai-client"
|
|
66
70
|
Requires-Dist: pydantic-ai[logfire,openai]; extra == "ai-client"
|
|
67
71
|
Requires-Dist: ollama; extra == "ai-client"
|
|
@@ -97,12 +101,14 @@ Requires-Dist: cachetools; extra == "caching"
|
|
|
97
101
|
Provides-Extra: pdf
|
|
98
102
|
Requires-Dist: pymupdf; extra == "pdf"
|
|
99
103
|
Requires-Dist: pydantic; extra == "pdf"
|
|
104
|
+
Requires-Dist: pydantic-extra-types; extra == "pdf"
|
|
100
105
|
Requires-Dist: pymupdf4llm; extra == "pdf"
|
|
101
106
|
Provides-Extra: debug
|
|
102
107
|
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "debug"
|
|
103
108
|
Provides-Extra: sets
|
|
104
109
|
Requires-Dist: pydantic-settings; extra == "sets"
|
|
105
110
|
Requires-Dist: pydantic; extra == "sets"
|
|
111
|
+
Requires-Dist: pydantic-extra-types; extra == "sets"
|
|
106
112
|
Requires-Dist: yamlscript; extra == "sets"
|
|
107
113
|
Requires-Dist: pyyaml; extra == "sets"
|
|
108
114
|
Provides-Extra: path-app
|
|
@@ -136,64 +142,65 @@ Provides-Extra: db-document
|
|
|
136
142
|
Requires-Dist: beanie[odm]; extra == "db-document"
|
|
137
143
|
Requires-Dist: motor; extra == "db-document"
|
|
138
144
|
Provides-Extra: all
|
|
139
|
-
Requires-Dist:
|
|
140
|
-
Requires-Dist:
|
|
141
|
-
Requires-Dist:
|
|
142
|
-
Requires-Dist:
|
|
143
|
-
Requires-Dist:
|
|
144
|
-
Requires-Dist: playwright; extra == "all"
|
|
145
|
-
Requires-Dist: httpx_retries; extra == "all"
|
|
146
|
-
Requires-Dist: pydantic; extra == "all"
|
|
145
|
+
Requires-Dist: torchaudio; extra == "all"
|
|
146
|
+
Requires-Dist: google-auth; extra == "all"
|
|
147
|
+
Requires-Dist: ollama; extra == "all"
|
|
148
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
149
|
+
Requires-Dist: setuptools; extra == "all"
|
|
147
150
|
Requires-Dist: flet[all]; extra == "all"
|
|
151
|
+
Requires-Dist: dnspython[doh]; extra == "all"
|
|
152
|
+
Requires-Dist: flet-video; extra == "all"
|
|
153
|
+
Requires-Dist: motor; extra == "all"
|
|
148
154
|
Requires-Dist: httpx; extra == "all"
|
|
149
|
-
Requires-Dist:
|
|
150
|
-
Requires-Dist:
|
|
155
|
+
Requires-Dist: pydantic; extra == "all"
|
|
156
|
+
Requires-Dist: Unidecode; extra == "all"
|
|
157
|
+
Requires-Dist: huggingface_hub; extra == "all"
|
|
158
|
+
Requires-Dist: pymupdf4llm; extra == "all"
|
|
159
|
+
Requires-Dist: appdirs; extra == "all"
|
|
160
|
+
Requires-Dist: distributed; extra == "all"
|
|
161
|
+
Requires-Dist: playwright; extra == "all"
|
|
151
162
|
Requires-Dist: cachetools; extra == "all"
|
|
152
|
-
Requires-Dist:
|
|
153
|
-
Requires-Dist:
|
|
154
|
-
Requires-Dist: json_repair; extra == "all"
|
|
155
|
-
Requires-Dist: deepmerge; extra == "all"
|
|
156
|
-
Requires-Dist: ollama; extra == "all"
|
|
157
|
-
Requires-Dist: pydantic-settings; extra == "all"
|
|
163
|
+
Requires-Dist: openai; extra == "all"
|
|
164
|
+
Requires-Dist: logfire; extra == "all"
|
|
158
165
|
Requires-Dist: faker; extra == "all"
|
|
159
|
-
Requires-Dist:
|
|
160
|
-
Requires-Dist:
|
|
161
|
-
Requires-Dist:
|
|
162
|
-
Requires-Dist: semver; extra == "all"
|
|
163
|
-
Requires-Dist: appdirs; extra == "all"
|
|
166
|
+
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
167
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
168
|
+
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
164
169
|
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
170
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
171
|
+
Requires-Dist: tabulate; extra == "all"
|
|
165
172
|
Requires-Dist: dask[bag]; extra == "all"
|
|
173
|
+
Requires-Dist: torchvision; extra == "all"
|
|
174
|
+
Requires-Dist: peft; extra == "all"
|
|
175
|
+
Requires-Dist: json_repair; extra == "all"
|
|
176
|
+
Requires-Dist: openpyxl; extra == "all"
|
|
177
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
178
|
+
Requires-Dist: tokenizers; extra == "all"
|
|
179
|
+
Requires-Dist: flet-webview; extra == "all"
|
|
166
180
|
Requires-Dist: diskcache; extra == "all"
|
|
181
|
+
Requires-Dist: fastapi; extra == "all"
|
|
182
|
+
Requires-Dist: docker; extra == "all"
|
|
183
|
+
Requires-Dist: pyyaml; extra == "all"
|
|
184
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
185
|
+
Requires-Dist: pytest-cov; extra == "all"
|
|
186
|
+
Requires-Dist: semver; extra == "all"
|
|
167
187
|
Requires-Dist: tinynetrc; extra == "all"
|
|
168
|
-
Requires-Dist:
|
|
169
|
-
Requires-Dist: setuptools; extra == "all"
|
|
188
|
+
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
170
189
|
Requires-Dist: html2text; extra == "all"
|
|
190
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
191
|
+
Requires-Dist: pydantic-settings; extra == "all"
|
|
192
|
+
Requires-Dist: filetype; extra == "all"
|
|
193
|
+
Requires-Dist: pandas; extra == "all"
|
|
194
|
+
Requires-Dist: httpx_retries; extra == "all"
|
|
171
195
|
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
172
|
-
Requires-Dist:
|
|
196
|
+
Requires-Dist: beanie[odm]; extra == "all"
|
|
197
|
+
Requires-Dist: pymupdf; extra == "all"
|
|
198
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
173
199
|
Requires-Dist: sentence_transformers; extra == "all"
|
|
174
|
-
Requires-Dist:
|
|
175
|
-
Requires-Dist: pytest-cov; extra == "all"
|
|
176
|
-
Requires-Dist: docker; extra == "all"
|
|
177
|
-
Requires-Dist: logfire; extra == "all"
|
|
178
|
-
Requires-Dist: openpyxl; extra == "all"
|
|
179
|
-
Requires-Dist: tabulate; extra == "all"
|
|
200
|
+
Requires-Dist: bokeh; extra == "all"
|
|
180
201
|
Requires-Dist: regex; extra == "all"
|
|
181
|
-
Requires-Dist:
|
|
202
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
182
203
|
Requires-Dist: logfire[httpx]; extra == "all"
|
|
183
|
-
Requires-Dist: torchaudio; extra == "all"
|
|
184
|
-
Requires-Dist: torchvision; extra == "all"
|
|
185
|
-
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
186
|
-
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
187
|
-
Requires-Dist: filetype; extra == "all"
|
|
188
|
-
Requires-Dist: huggingface_hub; extra == "all"
|
|
189
|
-
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
190
|
-
Requires-Dist: pymupdf4llm; extra == "all"
|
|
191
|
-
Requires-Dist: contexttimer; extra == "all"
|
|
192
|
-
Requires-Dist: Unidecode; extra == "all"
|
|
193
|
-
Requires-Dist: google-auth; extra == "all"
|
|
194
|
-
Requires-Dist: flet-video; extra == "all"
|
|
195
|
-
Requires-Dist: dnspython[doh]; extra == "all"
|
|
196
|
-
Requires-Dist: pandas; extra == "all"
|
|
197
204
|
Dynamic: author
|
|
198
205
|
Dynamic: author-email
|
|
199
206
|
Dynamic: description
|
|
@@ -5,79 +5,83 @@ transformers[sentencepiece]
|
|
|
5
5
|
torchvision
|
|
6
6
|
torchaudio
|
|
7
7
|
pydantic
|
|
8
|
+
pydantic-extra-types
|
|
8
9
|
|
|
9
10
|
[ai.client]
|
|
10
11
|
logfire
|
|
11
12
|
pydantic
|
|
13
|
+
pydantic-extra-types
|
|
12
14
|
openai
|
|
13
15
|
pydantic-ai[logfire,openai]
|
|
14
16
|
ollama
|
|
15
17
|
|
|
16
18
|
[all]
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
playwright
|
|
23
|
-
httpx_retries
|
|
24
|
-
pydantic
|
|
19
|
+
torchaudio
|
|
20
|
+
google-auth
|
|
21
|
+
ollama
|
|
22
|
+
pydevd-pycharm~=251.25410.159
|
|
23
|
+
setuptools
|
|
25
24
|
flet[all]
|
|
25
|
+
dnspython[doh]
|
|
26
|
+
flet-video
|
|
27
|
+
motor
|
|
26
28
|
httpx
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
pydantic
|
|
30
|
+
Unidecode
|
|
31
|
+
huggingface_hub
|
|
32
|
+
pymupdf4llm
|
|
33
|
+
appdirs
|
|
34
|
+
distributed
|
|
35
|
+
playwright
|
|
29
36
|
cachetools
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
json_repair
|
|
33
|
-
deepmerge
|
|
34
|
-
ollama
|
|
35
|
-
pydantic-settings
|
|
37
|
+
openai
|
|
38
|
+
logfire
|
|
36
39
|
faker
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
semver
|
|
41
|
-
appdirs
|
|
40
|
+
logfire[fastapi]
|
|
41
|
+
google-auth-oauthlib
|
|
42
|
+
pydantic-extra-types
|
|
42
43
|
pydantic-ai[logfire,openai]
|
|
44
|
+
deepmerge
|
|
45
|
+
tabulate
|
|
43
46
|
dask[bag]
|
|
47
|
+
torchvision
|
|
48
|
+
peft
|
|
49
|
+
json_repair
|
|
50
|
+
openpyxl
|
|
51
|
+
google-auth-httplib2
|
|
52
|
+
tokenizers
|
|
53
|
+
flet-webview
|
|
44
54
|
diskcache
|
|
55
|
+
fastapi
|
|
56
|
+
docker
|
|
57
|
+
pyyaml
|
|
58
|
+
google-api-python-client
|
|
59
|
+
pytest-cov
|
|
60
|
+
semver
|
|
45
61
|
tinynetrc
|
|
46
|
-
|
|
47
|
-
setuptools
|
|
62
|
+
uvicorn[standard]
|
|
48
63
|
html2text
|
|
64
|
+
sre_yield
|
|
65
|
+
pydantic-settings
|
|
66
|
+
filetype
|
|
67
|
+
pandas
|
|
68
|
+
httpx_retries
|
|
49
69
|
transformers[sentencepiece]
|
|
50
|
-
|
|
70
|
+
beanie[odm]
|
|
71
|
+
pymupdf
|
|
72
|
+
contexttimer
|
|
51
73
|
sentence_transformers
|
|
52
|
-
|
|
53
|
-
pytest-cov
|
|
54
|
-
docker
|
|
55
|
-
logfire
|
|
56
|
-
openpyxl
|
|
57
|
-
tabulate
|
|
74
|
+
bokeh
|
|
58
75
|
regex
|
|
59
|
-
|
|
76
|
+
yamlscript
|
|
60
77
|
logfire[httpx]
|
|
61
|
-
torchaudio
|
|
62
|
-
torchvision
|
|
63
|
-
google-auth-oauthlib
|
|
64
|
-
google-auth-httplib2
|
|
65
|
-
filetype
|
|
66
|
-
huggingface_hub
|
|
67
|
-
logfire[fastapi]
|
|
68
|
-
pymupdf4llm
|
|
69
|
-
contexttimer
|
|
70
|
-
Unidecode
|
|
71
|
-
google-auth
|
|
72
|
-
flet-video
|
|
73
|
-
dnspython[doh]
|
|
74
|
-
pandas
|
|
75
78
|
|
|
76
79
|
[api]
|
|
77
80
|
fastapi
|
|
78
81
|
uvicorn[standard]
|
|
79
82
|
logfire
|
|
80
83
|
pydantic
|
|
84
|
+
pydantic-extra-types
|
|
81
85
|
logfire[fastapi]
|
|
82
86
|
|
|
83
87
|
[augmentation]
|
|
@@ -102,6 +106,7 @@ pydevd-pycharm~=251.25410.159
|
|
|
102
106
|
|
|
103
107
|
[dm]
|
|
104
108
|
pydantic
|
|
109
|
+
pydantic-extra-types
|
|
105
110
|
|
|
106
111
|
[dns]
|
|
107
112
|
dnspython[doh]
|
|
@@ -173,6 +178,7 @@ regex
|
|
|
173
178
|
[pdf]
|
|
174
179
|
pymupdf
|
|
175
180
|
pydantic
|
|
181
|
+
pydantic-extra-types
|
|
176
182
|
pymupdf4llm
|
|
177
183
|
|
|
178
184
|
[process]
|
|
@@ -190,6 +196,7 @@ openpyxl
|
|
|
190
196
|
[sets]
|
|
191
197
|
pydantic-settings
|
|
192
198
|
pydantic
|
|
199
|
+
pydantic-extra-types
|
|
193
200
|
yamlscript
|
|
194
201
|
pyyaml
|
|
195
202
|
|
|
@@ -20,7 +20,7 @@ DEPENDENCIES = {
|
|
|
20
20
|
'merging': ['deepmerge'],
|
|
21
21
|
'api': ['fastapi', 'uvicorn[standard]', 'logging', 'dm', 'logfire[fastapi]'],
|
|
22
22
|
'ai': ['peft', 'transformers[sentencepiece]', 'torchvision', 'torchaudio', 'dm'],
|
|
23
|
-
'dm': ['pydantic'],
|
|
23
|
+
'dm': ['pydantic', 'pydantic-extra-types'],
|
|
24
24
|
'openai.api': ['openai'],
|
|
25
25
|
'ai.client': ['logging', 'dm', 'openai.api', 'pydantic-ai[logfire,openai]', 'ollama'],
|
|
26
26
|
'json-fix': ['json_repair'],
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.3.44
|
|
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
|