fmtr.tools 1.3.76__tar.gz → 1.3.77__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.76 → fmtr_tools-1.3.77}/PKG-INFO +49 -49
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/interface_tools/controls.py +70 -4
- fmtr_tools-1.3.77/fmtr/tools/version +1 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr.tools.egg-info/PKG-INFO +49 -49
- fmtr_tools-1.3.76/fmtr/tools/version +0 -1
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/LICENSE +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/README.md +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/__init__.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/ai_tools/__init__.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/ai_tools/inference_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/api_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/async_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/augmentation_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/caching_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/constants.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/context_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/data_modelling_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/database_tools/__init__.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/database_tools/document.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/dataclass_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/datatype_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/datetime_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/debugging_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/dns_tools/__init__.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/dns_tools/client.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/dns_tools/dm.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/dns_tools/proxy.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/dns_tools/server.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/docker_tools/__init__.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/entrypoints/__init__.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/entrypoints/ep_test.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/entrypoints/shell_debug.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/environment_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/function_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/google_api_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/hash_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/hfh_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/html_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/http_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/import_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/inherit_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/inspection_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/interface_tools/__init__.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/interface_tools/context.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/interface_tools/interface_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/iterator_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/json_fix_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/json_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/logging_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/merging_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/metric_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/name_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/netrc_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/openai_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/packaging_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/parallel_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/path_tools/__init__.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/path_tools/app_path_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/path_tools/path_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/path_tools/type_path_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/pattern_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/pdf_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/platform_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/process_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/profiling_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/random_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/semantic_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/settings_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/setup_tools/__init__.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/setup_tools/setup_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/spaces_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/string_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/tabular_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/tests/__init__.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/tests/conftest.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/tests/helpers.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/tests/test_datatype.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/tests/test_environment.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/tests/test_json.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/tests/test_path.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/tests/test_yaml.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/tokenization_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/unicode_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/version_tools/__init__.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/version_tools/version_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/webhook_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr/tools/yaml_tools.py +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr.tools.egg-info/SOURCES.txt +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr.tools.egg-info/dependency_links.txt +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr.tools.egg-info/entry_points.txt +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr.tools.egg-info/requires.txt +48 -48
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/fmtr.tools.egg-info/top_level.txt +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/pyproject.toml +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/setup.cfg +0 -0
- {fmtr_tools-1.3.76 → fmtr_tools-1.3.77}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.77
|
|
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
|
|
@@ -166,67 +166,67 @@ Provides-Extra: db
|
|
|
166
166
|
Provides-Extra: db-document
|
|
167
167
|
Requires-Dist: beanie[odm]; extra == "db-document"
|
|
168
168
|
Provides-Extra: all
|
|
169
|
-
Requires-Dist: json_repair; extra == "all"
|
|
170
|
-
Requires-Dist: distributed; extra == "all"
|
|
171
169
|
Requires-Dist: pyyaml; extra == "all"
|
|
172
170
|
Requires-Dist: Unidecode; extra == "all"
|
|
173
|
-
Requires-Dist:
|
|
171
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
174
172
|
Requires-Dist: openai; extra == "all"
|
|
175
|
-
Requires-Dist:
|
|
176
|
-
Requires-Dist:
|
|
177
|
-
Requires-Dist:
|
|
178
|
-
Requires-Dist:
|
|
179
|
-
Requires-Dist: contexttimer; extra == "all"
|
|
180
|
-
Requires-Dist: sre_yield; extra == "all"
|
|
181
|
-
Requires-Dist: huggingface_hub; extra == "all"
|
|
182
|
-
Requires-Dist: logfire; extra == "all"
|
|
183
|
-
Requires-Dist: torchaudio; extra == "all"
|
|
184
|
-
Requires-Dist: playwright; extra == "all"
|
|
185
|
-
Requires-Dist: torchvision; extra == "all"
|
|
186
|
-
Requires-Dist: deepdiff; extra == "all"
|
|
173
|
+
Requires-Dist: json_repair; extra == "all"
|
|
174
|
+
Requires-Dist: faker; extra == "all"
|
|
175
|
+
Requires-Dist: semver; extra == "all"
|
|
176
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
187
177
|
Requires-Dist: tabulate; extra == "all"
|
|
188
|
-
Requires-Dist:
|
|
189
|
-
Requires-Dist: pycountry; extra == "all"
|
|
190
|
-
Requires-Dist: dask[bag]; extra == "all"
|
|
191
|
-
Requires-Dist: html2text; extra == "all"
|
|
192
|
-
Requires-Dist: appdirs; extra == "all"
|
|
193
|
-
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
194
|
-
Requires-Dist: openpyxl; extra == "all"
|
|
195
|
-
Requires-Dist: httpx_retries; extra == "all"
|
|
178
|
+
Requires-Dist: huggingface_hub; extra == "all"
|
|
196
179
|
Requires-Dist: dnspython[doh]; extra == "all"
|
|
197
|
-
Requires-Dist:
|
|
198
|
-
Requires-Dist:
|
|
199
|
-
Requires-Dist:
|
|
200
|
-
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
180
|
+
Requires-Dist: setuptools; extra == "all"
|
|
181
|
+
Requires-Dist: filetype; extra == "all"
|
|
182
|
+
Requires-Dist: distributed; extra == "all"
|
|
201
183
|
Requires-Dist: bokeh; extra == "all"
|
|
184
|
+
Requires-Dist: cachetools; extra == "all"
|
|
185
|
+
Requires-Dist: httpx_retries; extra == "all"
|
|
202
186
|
Requires-Dist: beanie[odm]; extra == "all"
|
|
203
|
-
Requires-Dist:
|
|
204
|
-
Requires-Dist:
|
|
205
|
-
Requires-Dist: filetype; extra == "all"
|
|
206
|
-
Requires-Dist: deepmerge; extra == "all"
|
|
207
|
-
Requires-Dist: tinynetrc; extra == "all"
|
|
208
|
-
Requires-Dist: fastapi; extra == "all"
|
|
209
|
-
Requires-Dist: tokenizers; extra == "all"
|
|
210
|
-
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
187
|
+
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
188
|
+
Requires-Dist: playwright; extra == "all"
|
|
211
189
|
Requires-Dist: odfpy; extra == "all"
|
|
212
|
-
Requires-Dist: pytest-cov; extra == "all"
|
|
213
190
|
Requires-Dist: python-on-whales; extra == "all"
|
|
214
|
-
Requires-Dist:
|
|
215
|
-
Requires-Dist:
|
|
216
|
-
Requires-Dist:
|
|
217
|
-
Requires-Dist:
|
|
218
|
-
Requires-Dist:
|
|
191
|
+
Requires-Dist: pymupdf; extra == "all"
|
|
192
|
+
Requires-Dist: peft; extra == "all"
|
|
193
|
+
Requires-Dist: regex; extra == "all"
|
|
194
|
+
Requires-Dist: logfire; extra == "all"
|
|
195
|
+
Requires-Dist: deepdiff; extra == "all"
|
|
219
196
|
Requires-Dist: flet-webview; extra == "all"
|
|
220
|
-
Requires-Dist:
|
|
221
|
-
Requires-Dist:
|
|
222
|
-
Requires-Dist: diskcache; extra == "all"
|
|
197
|
+
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
198
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
223
199
|
Requires-Dist: pandas; extra == "all"
|
|
224
|
-
Requires-Dist:
|
|
225
|
-
Requires-Dist:
|
|
200
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
201
|
+
Requires-Dist: pymupdf4llm; extra == "all"
|
|
202
|
+
Requires-Dist: pycountry; extra == "all"
|
|
203
|
+
Requires-Dist: ollama; extra == "all"
|
|
204
|
+
Requires-Dist: tinynetrc; extra == "all"
|
|
205
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
206
|
+
Requires-Dist: sentence_transformers; extra == "all"
|
|
226
207
|
Requires-Dist: pydantic; extra == "all"
|
|
227
|
-
Requires-Dist:
|
|
208
|
+
Requires-Dist: html2text; extra == "all"
|
|
209
|
+
Requires-Dist: flet[all]; extra == "all"
|
|
210
|
+
Requires-Dist: google-auth; extra == "all"
|
|
211
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
212
|
+
Requires-Dist: torchvision; extra == "all"
|
|
213
|
+
Requires-Dist: pytest-cov; extra == "all"
|
|
214
|
+
Requires-Dist: dask[bag]; extra == "all"
|
|
215
|
+
Requires-Dist: flet-video; extra == "all"
|
|
216
|
+
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
217
|
+
Requires-Dist: diskcache; extra == "all"
|
|
218
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
219
|
+
Requires-Dist: httpx; extra == "all"
|
|
228
220
|
Requires-Dist: pydantic-settings; extra == "all"
|
|
229
|
-
Requires-Dist:
|
|
221
|
+
Requires-Dist: tokenizers; extra == "all"
|
|
222
|
+
Requires-Dist: torchaudio; extra == "all"
|
|
223
|
+
Requires-Dist: openpyxl; extra == "all"
|
|
224
|
+
Requires-Dist: fastapi; extra == "all"
|
|
225
|
+
Requires-Dist: appdirs; extra == "all"
|
|
226
|
+
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
227
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
228
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
229
|
+
Requires-Dist: logfire[httpx]; extra == "all"
|
|
230
230
|
Dynamic: author
|
|
231
231
|
Dynamic: author-email
|
|
232
232
|
Dynamic: description
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from functools import cached_property
|
|
1
2
|
from typing import Optional
|
|
2
3
|
|
|
3
4
|
import flet as ft
|
|
@@ -127,8 +128,40 @@ class Row(ft.DataRow):
|
|
|
127
128
|
|
|
128
129
|
def __init__(self, series):
|
|
129
130
|
self.series = series
|
|
130
|
-
|
|
131
|
-
|
|
131
|
+
super().__init__(self.cells_controls, color=self.row_color)
|
|
132
|
+
|
|
133
|
+
@cached_property
|
|
134
|
+
def cells_data(self) -> dict[str, list[Cell]]:
|
|
135
|
+
"""
|
|
136
|
+
|
|
137
|
+
Cell controls lookup
|
|
138
|
+
|
|
139
|
+
"""
|
|
140
|
+
data = {}
|
|
141
|
+
for col in self.series.index:
|
|
142
|
+
data.setdefault(col, []).append(self.TypeCell(self.series, col))
|
|
143
|
+
return data
|
|
144
|
+
|
|
145
|
+
@cached_property
|
|
146
|
+
def cells_controls(self) -> list[Cell]:
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
Flat list of controls
|
|
150
|
+
|
|
151
|
+
"""
|
|
152
|
+
controls = []
|
|
153
|
+
for cells in self.cells_data.values():
|
|
154
|
+
for cell in cells:
|
|
155
|
+
controls.append(cell)
|
|
156
|
+
return controls
|
|
157
|
+
|
|
158
|
+
def __getitem__(self, item) -> list[Cell]:
|
|
159
|
+
"""
|
|
160
|
+
|
|
161
|
+
Get cells by column name
|
|
162
|
+
|
|
163
|
+
"""
|
|
164
|
+
return self.cells_data[item]
|
|
132
165
|
|
|
133
166
|
@property
|
|
134
167
|
def row_color(self):
|
|
@@ -195,5 +228,38 @@ class Table(ft.DataTable):
|
|
|
195
228
|
"""
|
|
196
229
|
self.df = df
|
|
197
230
|
columns = [self.TypeColumn(col) for col in df.columns]
|
|
198
|
-
|
|
199
|
-
|
|
231
|
+
super().__init__(columns=columns, rows=self.rows_controls)
|
|
232
|
+
|
|
233
|
+
@cached_property
|
|
234
|
+
def rows_data(self) -> dict[str, list[Row]]:
|
|
235
|
+
"""
|
|
236
|
+
|
|
237
|
+
Row controls lookup
|
|
238
|
+
|
|
239
|
+
"""
|
|
240
|
+
data = {}
|
|
241
|
+
for index, row in self.df.iterrows():
|
|
242
|
+
data.setdefault(index, []).append(self.TypeRow(row))
|
|
243
|
+
return data
|
|
244
|
+
|
|
245
|
+
@cached_property
|
|
246
|
+
def rows_controls(self) -> list[Row]:
|
|
247
|
+
"""
|
|
248
|
+
|
|
249
|
+
Flat list of controls
|
|
250
|
+
|
|
251
|
+
"""
|
|
252
|
+
controls = []
|
|
253
|
+
for rows in self.rows_data.values():
|
|
254
|
+
for row in rows:
|
|
255
|
+
controls.append(row)
|
|
256
|
+
return controls
|
|
257
|
+
|
|
258
|
+
def __getitem__(self, item) -> list[Row]:
|
|
259
|
+
"""
|
|
260
|
+
|
|
261
|
+
Get row by index
|
|
262
|
+
|
|
263
|
+
"""
|
|
264
|
+
|
|
265
|
+
return self.rows_data[item]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.3.77
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.77
|
|
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
|
|
@@ -166,67 +166,67 @@ Provides-Extra: db
|
|
|
166
166
|
Provides-Extra: db-document
|
|
167
167
|
Requires-Dist: beanie[odm]; extra == "db-document"
|
|
168
168
|
Provides-Extra: all
|
|
169
|
-
Requires-Dist: json_repair; extra == "all"
|
|
170
|
-
Requires-Dist: distributed; extra == "all"
|
|
171
169
|
Requires-Dist: pyyaml; extra == "all"
|
|
172
170
|
Requires-Dist: Unidecode; extra == "all"
|
|
173
|
-
Requires-Dist:
|
|
171
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
174
172
|
Requires-Dist: openai; extra == "all"
|
|
175
|
-
Requires-Dist:
|
|
176
|
-
Requires-Dist:
|
|
177
|
-
Requires-Dist:
|
|
178
|
-
Requires-Dist:
|
|
179
|
-
Requires-Dist: contexttimer; extra == "all"
|
|
180
|
-
Requires-Dist: sre_yield; extra == "all"
|
|
181
|
-
Requires-Dist: huggingface_hub; extra == "all"
|
|
182
|
-
Requires-Dist: logfire; extra == "all"
|
|
183
|
-
Requires-Dist: torchaudio; extra == "all"
|
|
184
|
-
Requires-Dist: playwright; extra == "all"
|
|
185
|
-
Requires-Dist: torchvision; extra == "all"
|
|
186
|
-
Requires-Dist: deepdiff; extra == "all"
|
|
173
|
+
Requires-Dist: json_repair; extra == "all"
|
|
174
|
+
Requires-Dist: faker; extra == "all"
|
|
175
|
+
Requires-Dist: semver; extra == "all"
|
|
176
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
187
177
|
Requires-Dist: tabulate; extra == "all"
|
|
188
|
-
Requires-Dist:
|
|
189
|
-
Requires-Dist: pycountry; extra == "all"
|
|
190
|
-
Requires-Dist: dask[bag]; extra == "all"
|
|
191
|
-
Requires-Dist: html2text; extra == "all"
|
|
192
|
-
Requires-Dist: appdirs; extra == "all"
|
|
193
|
-
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
194
|
-
Requires-Dist: openpyxl; extra == "all"
|
|
195
|
-
Requires-Dist: httpx_retries; extra == "all"
|
|
178
|
+
Requires-Dist: huggingface_hub; extra == "all"
|
|
196
179
|
Requires-Dist: dnspython[doh]; extra == "all"
|
|
197
|
-
Requires-Dist:
|
|
198
|
-
Requires-Dist:
|
|
199
|
-
Requires-Dist:
|
|
200
|
-
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
180
|
+
Requires-Dist: setuptools; extra == "all"
|
|
181
|
+
Requires-Dist: filetype; extra == "all"
|
|
182
|
+
Requires-Dist: distributed; extra == "all"
|
|
201
183
|
Requires-Dist: bokeh; extra == "all"
|
|
184
|
+
Requires-Dist: cachetools; extra == "all"
|
|
185
|
+
Requires-Dist: httpx_retries; extra == "all"
|
|
202
186
|
Requires-Dist: beanie[odm]; extra == "all"
|
|
203
|
-
Requires-Dist:
|
|
204
|
-
Requires-Dist:
|
|
205
|
-
Requires-Dist: filetype; extra == "all"
|
|
206
|
-
Requires-Dist: deepmerge; extra == "all"
|
|
207
|
-
Requires-Dist: tinynetrc; extra == "all"
|
|
208
|
-
Requires-Dist: fastapi; extra == "all"
|
|
209
|
-
Requires-Dist: tokenizers; extra == "all"
|
|
210
|
-
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
187
|
+
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
188
|
+
Requires-Dist: playwright; extra == "all"
|
|
211
189
|
Requires-Dist: odfpy; extra == "all"
|
|
212
|
-
Requires-Dist: pytest-cov; extra == "all"
|
|
213
190
|
Requires-Dist: python-on-whales; extra == "all"
|
|
214
|
-
Requires-Dist:
|
|
215
|
-
Requires-Dist:
|
|
216
|
-
Requires-Dist:
|
|
217
|
-
Requires-Dist:
|
|
218
|
-
Requires-Dist:
|
|
191
|
+
Requires-Dist: pymupdf; extra == "all"
|
|
192
|
+
Requires-Dist: peft; extra == "all"
|
|
193
|
+
Requires-Dist: regex; extra == "all"
|
|
194
|
+
Requires-Dist: logfire; extra == "all"
|
|
195
|
+
Requires-Dist: deepdiff; extra == "all"
|
|
219
196
|
Requires-Dist: flet-webview; extra == "all"
|
|
220
|
-
Requires-Dist:
|
|
221
|
-
Requires-Dist:
|
|
222
|
-
Requires-Dist: diskcache; extra == "all"
|
|
197
|
+
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
198
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
223
199
|
Requires-Dist: pandas; extra == "all"
|
|
224
|
-
Requires-Dist:
|
|
225
|
-
Requires-Dist:
|
|
200
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
201
|
+
Requires-Dist: pymupdf4llm; extra == "all"
|
|
202
|
+
Requires-Dist: pycountry; extra == "all"
|
|
203
|
+
Requires-Dist: ollama; extra == "all"
|
|
204
|
+
Requires-Dist: tinynetrc; extra == "all"
|
|
205
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
206
|
+
Requires-Dist: sentence_transformers; extra == "all"
|
|
226
207
|
Requires-Dist: pydantic; extra == "all"
|
|
227
|
-
Requires-Dist:
|
|
208
|
+
Requires-Dist: html2text; extra == "all"
|
|
209
|
+
Requires-Dist: flet[all]; extra == "all"
|
|
210
|
+
Requires-Dist: google-auth; extra == "all"
|
|
211
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
212
|
+
Requires-Dist: torchvision; extra == "all"
|
|
213
|
+
Requires-Dist: pytest-cov; extra == "all"
|
|
214
|
+
Requires-Dist: dask[bag]; extra == "all"
|
|
215
|
+
Requires-Dist: flet-video; extra == "all"
|
|
216
|
+
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
217
|
+
Requires-Dist: diskcache; extra == "all"
|
|
218
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
219
|
+
Requires-Dist: httpx; extra == "all"
|
|
228
220
|
Requires-Dist: pydantic-settings; extra == "all"
|
|
229
|
-
Requires-Dist:
|
|
221
|
+
Requires-Dist: tokenizers; extra == "all"
|
|
222
|
+
Requires-Dist: torchaudio; extra == "all"
|
|
223
|
+
Requires-Dist: openpyxl; extra == "all"
|
|
224
|
+
Requires-Dist: fastapi; extra == "all"
|
|
225
|
+
Requires-Dist: appdirs; extra == "all"
|
|
226
|
+
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
227
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
228
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
229
|
+
Requires-Dist: logfire[httpx]; extra == "all"
|
|
230
230
|
Dynamic: author
|
|
231
231
|
Dynamic: author-email
|
|
232
232
|
Dynamic: description
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.3.76
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -18,67 +18,67 @@ pydantic-ai[logfire,openai]
|
|
|
18
18
|
ollama
|
|
19
19
|
|
|
20
20
|
[all]
|
|
21
|
-
json_repair
|
|
22
|
-
distributed
|
|
23
21
|
pyyaml
|
|
24
22
|
Unidecode
|
|
25
|
-
|
|
23
|
+
pydevd-pycharm~=251.25410.159
|
|
26
24
|
openai
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
contexttimer
|
|
32
|
-
sre_yield
|
|
33
|
-
huggingface_hub
|
|
34
|
-
logfire
|
|
35
|
-
torchaudio
|
|
36
|
-
playwright
|
|
37
|
-
torchvision
|
|
38
|
-
deepdiff
|
|
25
|
+
json_repair
|
|
26
|
+
faker
|
|
27
|
+
semver
|
|
28
|
+
pydantic-ai[logfire,openai]
|
|
39
29
|
tabulate
|
|
40
|
-
|
|
41
|
-
pycountry
|
|
42
|
-
dask[bag]
|
|
43
|
-
html2text
|
|
44
|
-
appdirs
|
|
45
|
-
logfire[fastapi]
|
|
46
|
-
openpyxl
|
|
47
|
-
httpx_retries
|
|
30
|
+
huggingface_hub
|
|
48
31
|
dnspython[doh]
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
google-auth-httplib2
|
|
32
|
+
setuptools
|
|
33
|
+
filetype
|
|
34
|
+
distributed
|
|
53
35
|
bokeh
|
|
36
|
+
cachetools
|
|
37
|
+
httpx_retries
|
|
54
38
|
beanie[odm]
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
filetype
|
|
58
|
-
deepmerge
|
|
59
|
-
tinynetrc
|
|
60
|
-
fastapi
|
|
61
|
-
tokenizers
|
|
62
|
-
pydantic-ai[logfire,openai]
|
|
39
|
+
transformers[sentencepiece]
|
|
40
|
+
playwright
|
|
63
41
|
odfpy
|
|
64
|
-
pytest-cov
|
|
65
42
|
python-on-whales
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
43
|
+
pymupdf
|
|
44
|
+
peft
|
|
45
|
+
regex
|
|
46
|
+
logfire
|
|
47
|
+
deepdiff
|
|
71
48
|
flet-webview
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
diskcache
|
|
49
|
+
uvicorn[standard]
|
|
50
|
+
deepmerge
|
|
75
51
|
pandas
|
|
76
|
-
|
|
77
|
-
|
|
52
|
+
google-api-python-client
|
|
53
|
+
pymupdf4llm
|
|
54
|
+
pycountry
|
|
55
|
+
ollama
|
|
56
|
+
tinynetrc
|
|
57
|
+
sre_yield
|
|
58
|
+
sentence_transformers
|
|
78
59
|
pydantic
|
|
79
|
-
|
|
60
|
+
html2text
|
|
61
|
+
flet[all]
|
|
62
|
+
google-auth
|
|
63
|
+
yamlscript
|
|
64
|
+
torchvision
|
|
65
|
+
pytest-cov
|
|
66
|
+
dask[bag]
|
|
67
|
+
flet-video
|
|
68
|
+
logfire[fastapi]
|
|
69
|
+
diskcache
|
|
70
|
+
contexttimer
|
|
71
|
+
httpx
|
|
80
72
|
pydantic-settings
|
|
81
|
-
|
|
73
|
+
tokenizers
|
|
74
|
+
torchaudio
|
|
75
|
+
openpyxl
|
|
76
|
+
fastapi
|
|
77
|
+
appdirs
|
|
78
|
+
pydantic-extra-types
|
|
79
|
+
google-auth-oauthlib
|
|
80
|
+
google-auth-httplib2
|
|
81
|
+
logfire[httpx]
|
|
82
82
|
|
|
83
83
|
[api]
|
|
84
84
|
fastapi
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|