fmtr.tools 1.3.39__tar.gz → 1.3.41__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.39 → fmtr_tools-1.3.41}/PKG-INFO +45 -46
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/interface_tools/__init__.py +1 -0
- fmtr_tools-1.3.41/fmtr/tools/interface_tools/context.py +13 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/interface_tools/interface_tools.py +19 -9
- fmtr_tools-1.3.41/fmtr/tools/version +1 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr.tools.egg-info/PKG-INFO +45 -46
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr.tools.egg-info/SOURCES.txt +2 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr.tools.egg-info/requires.txt +44 -45
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/setup.py +1 -1
- fmtr_tools-1.3.39/fmtr/tools/version +0 -1
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/LICENSE +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/README.md +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/__init__.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/ai_tools/__init__.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/ai_tools/inference_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/api_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/async_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/augmentation_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/caching_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/constants.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/context_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/data_modelling_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/dataclass_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/datatype_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/debugging_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/dns_tools/__init__.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/dns_tools/client.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/dns_tools/dm.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/dns_tools/proxy.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/dns_tools/server.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/docker_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/entrypoints/__init__.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/entrypoints/ep_test.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/entrypoints/shell_debug.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/environment_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/function_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/google_api_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/hash_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/hfh_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/html_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/http_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/import_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/inherit_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/inspection_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/interface_tools/controls.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/iterator_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/json_fix_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/json_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/logging_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/merging_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/metric_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/name_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/netrc_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/openai_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/packaging_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/parallel_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/path_tools/__init__.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/path_tools/app_path_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/path_tools/path_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/path_tools/type_path_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/pattern_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/pdf_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/platform_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/process_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/profiling_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/random_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/semantic_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/settings_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/setup_tools/__init__.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/setup_tools/setup_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/spaces_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/string_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/tabular_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/tests/__init__.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/tests/conftest.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/tests/helpers.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/tests/test_datatype.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/tests/test_environment.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/tests/test_json.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/tests/test_path.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/tests/test_yaml.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/tokenization_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/unicode_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/version_tools/__init__.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/version_tools/version_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/webhook_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr/tools/yaml_tools.py +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr.tools.egg-info/dependency_links.txt +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr.tools.egg-info/entry_points.txt +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/fmtr.tools.egg-info/top_level.txt +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/pyproject.toml +0 -0
- {fmtr_tools-1.3.39 → fmtr_tools-1.3.41}/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.41
|
|
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
|
|
@@ -86,7 +86,6 @@ Provides-Extra: interface
|
|
|
86
86
|
Requires-Dist: flet[all]; extra == "interface"
|
|
87
87
|
Requires-Dist: flet-video; extra == "interface"
|
|
88
88
|
Requires-Dist: flet-webview; extra == "interface"
|
|
89
|
-
Requires-Dist: pydantic; extra == "interface"
|
|
90
89
|
Provides-Extra: google-api
|
|
91
90
|
Requires-Dist: google-auth; extra == "google-api"
|
|
92
91
|
Requires-Dist: google-auth-oauthlib; extra == "google-api"
|
|
@@ -133,62 +132,62 @@ Requires-Dist: logfire[httpx]; extra == "webhook"
|
|
|
133
132
|
Provides-Extra: browsers
|
|
134
133
|
Requires-Dist: playwright; extra == "browsers"
|
|
135
134
|
Provides-Extra: all
|
|
136
|
-
Requires-Dist:
|
|
137
|
-
Requires-Dist:
|
|
138
|
-
Requires-Dist:
|
|
139
|
-
Requires-Dist:
|
|
140
|
-
Requires-Dist:
|
|
141
|
-
Requires-Dist: flet[all]; extra == "all"
|
|
142
|
-
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
143
|
-
Requires-Dist: sentence_transformers; extra == "all"
|
|
144
|
-
Requires-Dist: yamlscript; extra == "all"
|
|
135
|
+
Requires-Dist: faker; extra == "all"
|
|
136
|
+
Requires-Dist: fastapi; extra == "all"
|
|
137
|
+
Requires-Dist: pydantic; extra == "all"
|
|
138
|
+
Requires-Dist: dnspython[doh]; extra == "all"
|
|
139
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
145
140
|
Requires-Dist: pytest-cov; extra == "all"
|
|
146
|
-
Requires-Dist: json_repair; extra == "all"
|
|
147
141
|
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
148
|
-
Requires-Dist:
|
|
149
|
-
Requires-Dist:
|
|
150
|
-
Requires-Dist:
|
|
151
|
-
Requires-Dist: google-
|
|
152
|
-
Requires-Dist:
|
|
153
|
-
Requires-Dist:
|
|
154
|
-
Requires-Dist: sre_yield; extra == "all"
|
|
155
|
-
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
156
|
-
Requires-Dist: google-auth; extra == "all"
|
|
157
|
-
Requires-Dist: docker; extra == "all"
|
|
158
|
-
Requires-Dist: httpx_retries; extra == "all"
|
|
142
|
+
Requires-Dist: pydantic-settings; extra == "all"
|
|
143
|
+
Requires-Dist: httpx; extra == "all"
|
|
144
|
+
Requires-Dist: regex; extra == "all"
|
|
145
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
146
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
147
|
+
Requires-Dist: openai; extra == "all"
|
|
159
148
|
Requires-Dist: pandas; extra == "all"
|
|
160
|
-
Requires-Dist:
|
|
149
|
+
Requires-Dist: pyyaml; extra == "all"
|
|
150
|
+
Requires-Dist: semver; extra == "all"
|
|
151
|
+
Requires-Dist: flet-webview; extra == "all"
|
|
161
152
|
Requires-Dist: filetype; extra == "all"
|
|
162
|
-
Requires-Dist:
|
|
163
|
-
Requires-Dist:
|
|
164
|
-
Requires-Dist:
|
|
165
|
-
Requires-Dist:
|
|
153
|
+
Requires-Dist: ollama; extra == "all"
|
|
154
|
+
Requires-Dist: google-auth; extra == "all"
|
|
155
|
+
Requires-Dist: tabulate; extra == "all"
|
|
156
|
+
Requires-Dist: huggingface_hub; extra == "all"
|
|
166
157
|
Requires-Dist: dask[bag]; extra == "all"
|
|
167
|
-
Requires-Dist:
|
|
168
|
-
Requires-Dist:
|
|
158
|
+
Requires-Dist: Unidecode; extra == "all"
|
|
159
|
+
Requires-Dist: cachetools; extra == "all"
|
|
160
|
+
Requires-Dist: docker; extra == "all"
|
|
169
161
|
Requires-Dist: setuptools; extra == "all"
|
|
170
|
-
Requires-Dist:
|
|
171
|
-
Requires-Dist:
|
|
172
|
-
Requires-Dist: openai; extra == "all"
|
|
173
|
-
Requires-Dist: huggingface_hub; extra == "all"
|
|
174
|
-
Requires-Dist: logfire[httpx]; extra == "all"
|
|
175
|
-
Requires-Dist: fastapi; extra == "all"
|
|
176
|
-
Requires-Dist: deepmerge; extra == "all"
|
|
177
|
-
Requires-Dist: logfire; extra == "all"
|
|
162
|
+
Requires-Dist: json_repair; extra == "all"
|
|
163
|
+
Requires-Dist: distributed; extra == "all"
|
|
178
164
|
Requires-Dist: pymupdf; extra == "all"
|
|
179
|
-
Requires-Dist:
|
|
180
|
-
Requires-Dist: tabulate; extra == "all"
|
|
181
|
-
Requires-Dist: pydantic-settings; extra == "all"
|
|
182
|
-
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
183
|
-
Requires-Dist: regex; extra == "all"
|
|
184
|
-
Requires-Dist: faker; extra == "all"
|
|
185
|
-
Requires-Dist: ollama; extra == "all"
|
|
165
|
+
Requires-Dist: html2text; extra == "all"
|
|
186
166
|
Requires-Dist: openpyxl; extra == "all"
|
|
167
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
187
168
|
Requires-Dist: playwright; extra == "all"
|
|
188
|
-
Requires-Dist:
|
|
169
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
170
|
+
Requires-Dist: torchaudio; extra == "all"
|
|
189
171
|
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
172
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
190
173
|
Requires-Dist: peft; extra == "all"
|
|
174
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
175
|
+
Requires-Dist: logfire; extra == "all"
|
|
176
|
+
Requires-Dist: bokeh; extra == "all"
|
|
177
|
+
Requires-Dist: tokenizers; extra == "all"
|
|
178
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
179
|
+
Requires-Dist: tinynetrc; extra == "all"
|
|
180
|
+
Requires-Dist: pymupdf4llm; extra == "all"
|
|
191
181
|
Requires-Dist: torchvision; extra == "all"
|
|
182
|
+
Requires-Dist: diskcache; extra == "all"
|
|
183
|
+
Requires-Dist: flet-video; extra == "all"
|
|
184
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
185
|
+
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
186
|
+
Requires-Dist: flet[all]; extra == "all"
|
|
187
|
+
Requires-Dist: logfire[httpx]; extra == "all"
|
|
188
|
+
Requires-Dist: appdirs; extra == "all"
|
|
189
|
+
Requires-Dist: httpx_retries; extra == "all"
|
|
190
|
+
Requires-Dist: sentence_transformers; extra == "all"
|
|
192
191
|
Dynamic: author
|
|
193
192
|
Dynamic: author-email
|
|
194
193
|
Dynamic: description
|
|
@@ -3,5 +3,6 @@ from fmtr.tools.import_tools import MissingExtraMockModule
|
|
|
3
3
|
try:
|
|
4
4
|
from fmtr.tools.interface_tools.interface_tools import Interface, update, progress
|
|
5
5
|
from fmtr.tools.interface_tools import controls
|
|
6
|
+
from fmtr.tools.interface_tools.context import Context
|
|
6
7
|
except ImportError as exception:
|
|
7
8
|
Interface = update = progress = controls = MissingExtraMockModule('interface', exception)
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
from functools import cached_property
|
|
2
|
-
|
|
3
1
|
import flet as ft
|
|
4
2
|
from flet.core.types import AppView
|
|
5
3
|
from flet.core.view import View
|
|
4
|
+
from functools import cached_property
|
|
5
|
+
from typing import TypeVar, Generic, Type
|
|
6
6
|
|
|
7
7
|
from fmtr.tools import environment_tools
|
|
8
8
|
from fmtr.tools.constants import Constants
|
|
9
9
|
from fmtr.tools.function_tools import MethodDecorator
|
|
10
|
+
from fmtr.tools.interface_tools.context import Context
|
|
10
11
|
from fmtr.tools.logging_tools import logger
|
|
11
12
|
|
|
12
13
|
|
|
@@ -55,9 +56,10 @@ class progress(update):
|
|
|
55
56
|
super().stop(instance)
|
|
56
57
|
|
|
57
58
|
|
|
59
|
+
T = TypeVar('T', bound=Context)
|
|
58
60
|
|
|
59
61
|
|
|
60
|
-
class Interface(ft.Column):
|
|
62
|
+
class Interface(Generic[T], ft.Column):
|
|
61
63
|
"""
|
|
62
64
|
|
|
63
65
|
Simple interface base class.
|
|
@@ -72,12 +74,15 @@ class Interface(ft.Column):
|
|
|
72
74
|
ROUTE_ROOT = '/'
|
|
73
75
|
SCROLL = ft.ScrollMode.AUTO
|
|
74
76
|
|
|
75
|
-
|
|
77
|
+
TypeContext: Type[T] = Context
|
|
78
|
+
|
|
79
|
+
def __init__(self, context: T, *args, **kwargs):
|
|
76
80
|
"""
|
|
77
81
|
|
|
78
82
|
Instantiate and apply interface config
|
|
79
83
|
|
|
80
84
|
"""
|
|
85
|
+
self.context = context
|
|
81
86
|
super().__init__(*args, **kwargs, scroll=self.SCROLL)
|
|
82
87
|
|
|
83
88
|
@classmethod
|
|
@@ -88,9 +93,11 @@ class Interface(ft.Column):
|
|
|
88
93
|
|
|
89
94
|
"""
|
|
90
95
|
if not page.on_route_change:
|
|
96
|
+
page.title = cls.TITLE
|
|
91
97
|
page.theme = cls.get_theme()
|
|
92
98
|
page.views.clear()
|
|
93
|
-
|
|
99
|
+
context = cls.TypeContext(page=page)
|
|
100
|
+
self = cls(context)
|
|
94
101
|
view = self.view
|
|
95
102
|
if not view:
|
|
96
103
|
view = self
|
|
@@ -156,17 +163,20 @@ class Interface(ft.Column):
|
|
|
156
163
|
)
|
|
157
164
|
return theme
|
|
158
165
|
|
|
159
|
-
|
|
166
|
+
|
|
167
|
+
class Test(Interface[Context]):
|
|
160
168
|
"""
|
|
161
169
|
|
|
162
|
-
Simple test interface.
|
|
170
|
+
Simple test interface, showing typing example.
|
|
163
171
|
|
|
164
172
|
"""
|
|
173
|
+
TypeContext: Type[Context] = Context
|
|
174
|
+
|
|
165
175
|
TITLE = 'Test Interface'
|
|
166
176
|
|
|
167
|
-
def __init__(self):
|
|
177
|
+
def __init__(self, context: Context):
|
|
168
178
|
controls = [ft.Text(self.TITLE)]
|
|
169
|
-
super().__init__(controls=controls)
|
|
179
|
+
super().__init__(context=context, controls=controls)
|
|
170
180
|
|
|
171
181
|
if __name__ == "__main__":
|
|
172
182
|
Test.launch()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.3.41
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.41
|
|
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
|
|
@@ -86,7 +86,6 @@ Provides-Extra: interface
|
|
|
86
86
|
Requires-Dist: flet[all]; extra == "interface"
|
|
87
87
|
Requires-Dist: flet-video; extra == "interface"
|
|
88
88
|
Requires-Dist: flet-webview; extra == "interface"
|
|
89
|
-
Requires-Dist: pydantic; extra == "interface"
|
|
90
89
|
Provides-Extra: google-api
|
|
91
90
|
Requires-Dist: google-auth; extra == "google-api"
|
|
92
91
|
Requires-Dist: google-auth-oauthlib; extra == "google-api"
|
|
@@ -133,62 +132,62 @@ Requires-Dist: logfire[httpx]; extra == "webhook"
|
|
|
133
132
|
Provides-Extra: browsers
|
|
134
133
|
Requires-Dist: playwright; extra == "browsers"
|
|
135
134
|
Provides-Extra: all
|
|
136
|
-
Requires-Dist:
|
|
137
|
-
Requires-Dist:
|
|
138
|
-
Requires-Dist:
|
|
139
|
-
Requires-Dist:
|
|
140
|
-
Requires-Dist:
|
|
141
|
-
Requires-Dist: flet[all]; extra == "all"
|
|
142
|
-
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
143
|
-
Requires-Dist: sentence_transformers; extra == "all"
|
|
144
|
-
Requires-Dist: yamlscript; extra == "all"
|
|
135
|
+
Requires-Dist: faker; extra == "all"
|
|
136
|
+
Requires-Dist: fastapi; extra == "all"
|
|
137
|
+
Requires-Dist: pydantic; extra == "all"
|
|
138
|
+
Requires-Dist: dnspython[doh]; extra == "all"
|
|
139
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
145
140
|
Requires-Dist: pytest-cov; extra == "all"
|
|
146
|
-
Requires-Dist: json_repair; extra == "all"
|
|
147
141
|
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
148
|
-
Requires-Dist:
|
|
149
|
-
Requires-Dist:
|
|
150
|
-
Requires-Dist:
|
|
151
|
-
Requires-Dist: google-
|
|
152
|
-
Requires-Dist:
|
|
153
|
-
Requires-Dist:
|
|
154
|
-
Requires-Dist: sre_yield; extra == "all"
|
|
155
|
-
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
156
|
-
Requires-Dist: google-auth; extra == "all"
|
|
157
|
-
Requires-Dist: docker; extra == "all"
|
|
158
|
-
Requires-Dist: httpx_retries; extra == "all"
|
|
142
|
+
Requires-Dist: pydantic-settings; extra == "all"
|
|
143
|
+
Requires-Dist: httpx; extra == "all"
|
|
144
|
+
Requires-Dist: regex; extra == "all"
|
|
145
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
146
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
147
|
+
Requires-Dist: openai; extra == "all"
|
|
159
148
|
Requires-Dist: pandas; extra == "all"
|
|
160
|
-
Requires-Dist:
|
|
149
|
+
Requires-Dist: pyyaml; extra == "all"
|
|
150
|
+
Requires-Dist: semver; extra == "all"
|
|
151
|
+
Requires-Dist: flet-webview; extra == "all"
|
|
161
152
|
Requires-Dist: filetype; extra == "all"
|
|
162
|
-
Requires-Dist:
|
|
163
|
-
Requires-Dist:
|
|
164
|
-
Requires-Dist:
|
|
165
|
-
Requires-Dist:
|
|
153
|
+
Requires-Dist: ollama; extra == "all"
|
|
154
|
+
Requires-Dist: google-auth; extra == "all"
|
|
155
|
+
Requires-Dist: tabulate; extra == "all"
|
|
156
|
+
Requires-Dist: huggingface_hub; extra == "all"
|
|
166
157
|
Requires-Dist: dask[bag]; extra == "all"
|
|
167
|
-
Requires-Dist:
|
|
168
|
-
Requires-Dist:
|
|
158
|
+
Requires-Dist: Unidecode; extra == "all"
|
|
159
|
+
Requires-Dist: cachetools; extra == "all"
|
|
160
|
+
Requires-Dist: docker; extra == "all"
|
|
169
161
|
Requires-Dist: setuptools; extra == "all"
|
|
170
|
-
Requires-Dist:
|
|
171
|
-
Requires-Dist:
|
|
172
|
-
Requires-Dist: openai; extra == "all"
|
|
173
|
-
Requires-Dist: huggingface_hub; extra == "all"
|
|
174
|
-
Requires-Dist: logfire[httpx]; extra == "all"
|
|
175
|
-
Requires-Dist: fastapi; extra == "all"
|
|
176
|
-
Requires-Dist: deepmerge; extra == "all"
|
|
177
|
-
Requires-Dist: logfire; extra == "all"
|
|
162
|
+
Requires-Dist: json_repair; extra == "all"
|
|
163
|
+
Requires-Dist: distributed; extra == "all"
|
|
178
164
|
Requires-Dist: pymupdf; extra == "all"
|
|
179
|
-
Requires-Dist:
|
|
180
|
-
Requires-Dist: tabulate; extra == "all"
|
|
181
|
-
Requires-Dist: pydantic-settings; extra == "all"
|
|
182
|
-
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
183
|
-
Requires-Dist: regex; extra == "all"
|
|
184
|
-
Requires-Dist: faker; extra == "all"
|
|
185
|
-
Requires-Dist: ollama; extra == "all"
|
|
165
|
+
Requires-Dist: html2text; extra == "all"
|
|
186
166
|
Requires-Dist: openpyxl; extra == "all"
|
|
167
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
187
168
|
Requires-Dist: playwright; extra == "all"
|
|
188
|
-
Requires-Dist:
|
|
169
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
170
|
+
Requires-Dist: torchaudio; extra == "all"
|
|
189
171
|
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
172
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
190
173
|
Requires-Dist: peft; extra == "all"
|
|
174
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
175
|
+
Requires-Dist: logfire; extra == "all"
|
|
176
|
+
Requires-Dist: bokeh; extra == "all"
|
|
177
|
+
Requires-Dist: tokenizers; extra == "all"
|
|
178
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
179
|
+
Requires-Dist: tinynetrc; extra == "all"
|
|
180
|
+
Requires-Dist: pymupdf4llm; extra == "all"
|
|
191
181
|
Requires-Dist: torchvision; extra == "all"
|
|
182
|
+
Requires-Dist: diskcache; extra == "all"
|
|
183
|
+
Requires-Dist: flet-video; extra == "all"
|
|
184
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
185
|
+
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
186
|
+
Requires-Dist: flet[all]; extra == "all"
|
|
187
|
+
Requires-Dist: logfire[httpx]; extra == "all"
|
|
188
|
+
Requires-Dist: appdirs; extra == "all"
|
|
189
|
+
Requires-Dist: httpx_retries; extra == "all"
|
|
190
|
+
Requires-Dist: sentence_transformers; extra == "all"
|
|
192
191
|
Dynamic: author
|
|
193
192
|
Dynamic: author-email
|
|
194
193
|
Dynamic: description
|
|
@@ -67,6 +67,7 @@ setup.py
|
|
|
67
67
|
./fmtr/tools/entrypoints/remote_debug_test.py
|
|
68
68
|
./fmtr/tools/entrypoints/shell_debug.py
|
|
69
69
|
./fmtr/tools/interface_tools/__init__.py
|
|
70
|
+
./fmtr/tools/interface_tools/context.py
|
|
70
71
|
./fmtr/tools/interface_tools/controls.py
|
|
71
72
|
./fmtr/tools/interface_tools/interface_tools.py
|
|
72
73
|
./fmtr/tools/path_tools/__init__.py
|
|
@@ -156,6 +157,7 @@ fmtr/tools/entrypoints/install_yamlscript.py
|
|
|
156
157
|
fmtr/tools/entrypoints/remote_debug_test.py
|
|
157
158
|
fmtr/tools/entrypoints/shell_debug.py
|
|
158
159
|
fmtr/tools/interface_tools/__init__.py
|
|
160
|
+
fmtr/tools/interface_tools/context.py
|
|
159
161
|
fmtr/tools/interface_tools/controls.py
|
|
160
162
|
fmtr/tools/interface_tools/interface_tools.py
|
|
161
163
|
fmtr/tools/path_tools/__init__.py
|
|
@@ -14,62 +14,62 @@ pydantic-ai[logfire,openai]
|
|
|
14
14
|
ollama
|
|
15
15
|
|
|
16
16
|
[all]
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
flet[all]
|
|
23
|
-
transformers[sentencepiece]
|
|
24
|
-
sentence_transformers
|
|
25
|
-
yamlscript
|
|
17
|
+
faker
|
|
18
|
+
fastapi
|
|
19
|
+
pydantic
|
|
20
|
+
dnspython[doh]
|
|
21
|
+
sre_yield
|
|
26
22
|
pytest-cov
|
|
27
|
-
json_repair
|
|
28
23
|
logfire[fastapi]
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
google-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
sre_yield
|
|
36
|
-
pydevd-pycharm~=251.25410.159
|
|
37
|
-
google-auth
|
|
38
|
-
docker
|
|
39
|
-
httpx_retries
|
|
24
|
+
pydantic-settings
|
|
25
|
+
httpx
|
|
26
|
+
regex
|
|
27
|
+
google-api-python-client
|
|
28
|
+
deepmerge
|
|
29
|
+
openai
|
|
40
30
|
pandas
|
|
41
|
-
|
|
31
|
+
pyyaml
|
|
32
|
+
semver
|
|
33
|
+
flet-webview
|
|
42
34
|
filetype
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
35
|
+
ollama
|
|
36
|
+
google-auth
|
|
37
|
+
tabulate
|
|
38
|
+
huggingface_hub
|
|
47
39
|
dask[bag]
|
|
48
|
-
|
|
49
|
-
|
|
40
|
+
Unidecode
|
|
41
|
+
cachetools
|
|
42
|
+
docker
|
|
50
43
|
setuptools
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
openai
|
|
54
|
-
huggingface_hub
|
|
55
|
-
logfire[httpx]
|
|
56
|
-
fastapi
|
|
57
|
-
deepmerge
|
|
58
|
-
logfire
|
|
44
|
+
json_repair
|
|
45
|
+
distributed
|
|
59
46
|
pymupdf
|
|
60
|
-
|
|
61
|
-
tabulate
|
|
62
|
-
pydantic-settings
|
|
63
|
-
pydantic-ai[logfire,openai]
|
|
64
|
-
regex
|
|
65
|
-
faker
|
|
66
|
-
ollama
|
|
47
|
+
html2text
|
|
67
48
|
openpyxl
|
|
49
|
+
pydantic-ai[logfire,openai]
|
|
68
50
|
playwright
|
|
69
|
-
|
|
51
|
+
google-auth-httplib2
|
|
52
|
+
torchaudio
|
|
70
53
|
uvicorn[standard]
|
|
54
|
+
contexttimer
|
|
71
55
|
peft
|
|
56
|
+
yamlscript
|
|
57
|
+
logfire
|
|
58
|
+
bokeh
|
|
59
|
+
tokenizers
|
|
60
|
+
google-auth-oauthlib
|
|
61
|
+
tinynetrc
|
|
62
|
+
pymupdf4llm
|
|
72
63
|
torchvision
|
|
64
|
+
diskcache
|
|
65
|
+
flet-video
|
|
66
|
+
pydevd-pycharm~=251.25410.159
|
|
67
|
+
transformers[sentencepiece]
|
|
68
|
+
flet[all]
|
|
69
|
+
logfire[httpx]
|
|
70
|
+
appdirs
|
|
71
|
+
httpx_retries
|
|
72
|
+
sentence_transformers
|
|
73
73
|
|
|
74
74
|
[api]
|
|
75
75
|
fastapi
|
|
@@ -127,7 +127,6 @@ logfire[httpx]
|
|
|
127
127
|
flet[all]
|
|
128
128
|
flet-video
|
|
129
129
|
flet-webview
|
|
130
|
-
pydantic
|
|
131
130
|
|
|
132
131
|
[json-fix]
|
|
133
132
|
json_repair
|
|
@@ -28,7 +28,7 @@ DEPENDENCIES = {
|
|
|
28
28
|
'metric': ['tabular'],
|
|
29
29
|
'tabular': ['pandas', 'tabulate', 'openpyxl'],
|
|
30
30
|
'html': ['html2text'],
|
|
31
|
-
'interface': ['flet[all]', 'flet-video', 'flet-webview'
|
|
31
|
+
'interface': ['flet[all]', 'flet-video', 'flet-webview'],
|
|
32
32
|
'google.api': ['google-auth', 'google-auth-oauthlib', 'google-auth-httplib2', 'google-api-python-client'],
|
|
33
33
|
'caching': ['diskcache', 'cachetools'],
|
|
34
34
|
'pdf': ['pymupdf', 'dm', 'pymupdf4llm'],
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.3.39
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|