fmtr.tools 1.3.78__py3-none-any.whl → 1.3.79__py3-none-any.whl

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.

@@ -126,7 +126,7 @@ class Row(ft.DataRow):
126
126
 
127
127
  """
128
128
 
129
- TypeCell = Cell
129
+ TypesCells = {None: Cell}
130
130
 
131
131
  def __init__(self, series):
132
132
  self.series = series
@@ -141,7 +141,9 @@ class Row(ft.DataRow):
141
141
  """
142
142
  data = {}
143
143
  for col in self.series.index:
144
- data.setdefault(col, []).append(self.TypeCell(self.series, col))
144
+ default = self.TypesCells[None]
145
+ TypeCell = self.TypesCells.get(col, default)
146
+ data.setdefault(col, []).append(TypeCell(self.series, col))
145
147
  return data
146
148
 
147
149
  @cached_property
@@ -219,8 +221,8 @@ class Table(ft.DataTable):
219
221
 
220
222
  """
221
223
 
222
- TypeRow = Row
223
- TypeColumn = Column
224
+ TypesRows = {None: Row}
225
+ TypesColumns = {None: Column}
224
226
 
225
227
  def __init__(self, df): # todo move to submodule with tabular deps
226
228
  """
@@ -229,8 +231,34 @@ class Table(ft.DataTable):
229
231
 
230
232
  """
231
233
  self.df = df
232
- columns = [self.TypeColumn(col) for col in df.columns]
233
- super().__init__(columns=columns, rows=self.rows_controls)
234
+ super().__init__(columns=self.columns_controls, rows=self.rows_controls)
235
+
236
+ @cached_property
237
+ def columns_data(self) -> dict[str, list[Column]]:
238
+ """
239
+
240
+ Columns controls lookup
241
+
242
+ """
243
+ data = {}
244
+ for col in self.df.columns:
245
+ default = self.TypesColumns[None]
246
+ TypeColumn = self.TypesColumns.get(col, default)
247
+ data.setdefault(col, []).append(TypeColumn(col))
248
+ return data
249
+
250
+ @cached_property
251
+ def columns_controls(self) -> list[Column]:
252
+ """
253
+
254
+ Flat list of controls
255
+
256
+ """
257
+ controls = []
258
+ for columns in self.columns_data.values():
259
+ for column in columns:
260
+ controls.append(column)
261
+ return controls
234
262
 
235
263
  @cached_property
236
264
  def rows_data(self) -> dict[str, list[Row]]:
@@ -241,7 +269,9 @@ class Table(ft.DataTable):
241
269
  """
242
270
  data = {}
243
271
  for index, row in self.df.iterrows():
244
- data.setdefault(index, []).append(self.TypeRow(row))
272
+ default = self.TypesRows[None]
273
+ TypeRow = self.TypesRows.get(index, default)
274
+ data.setdefault(index, []).append(TypeRow(row))
245
275
  return data
246
276
 
247
277
  @cached_property
fmtr/tools/version CHANGED
@@ -1 +1 @@
1
- 1.3.78
1
+ 1.3.79
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.78
3
+ Version: 1.3.79
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: fastapi; extra == "all"
169
170
  Requires-Dist: tokenizers; extra == "all"
170
- Requires-Dist: filetype; extra == "all"
171
- Requires-Dist: uvicorn[standard]; extra == "all"
171
+ Requires-Dist: flet-video; extra == "all"
172
172
  Requires-Dist: json_repair; extra == "all"
173
- Requires-Dist: logfire; extra == "all"
174
- Requires-Dist: deepdiff; extra == "all"
175
- Requires-Dist: google-api-python-client; extra == "all"
176
173
  Requires-Dist: deepmerge; extra == "all"
177
- Requires-Dist: flet-video; extra == "all"
178
- Requires-Dist: pytest-cov; extra == "all"
179
- Requires-Dist: pymupdf; extra == "all"
174
+ Requires-Dist: pycountry; extra == "all"
175
+ Requires-Dist: python-on-whales; extra == "all"
180
176
  Requires-Dist: torchvision; extra == "all"
181
- Requires-Dist: appdirs; extra == "all"
182
- Requires-Dist: yamlscript; extra == "all"
183
- Requires-Dist: tabulate; extra == "all"
184
- Requires-Dist: torchaudio; extra == "all"
185
- Requires-Dist: faker; extra == "all"
186
- Requires-Dist: regex; extra == "all"
187
- Requires-Dist: ollama; extra == "all"
177
+ Requires-Dist: pandas; extra == "all"
178
+ Requires-Dist: google-auth-httplib2; extra == "all"
179
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
180
+ Requires-Dist: pydantic-settings; extra == "all"
181
+ Requires-Dist: contexttimer; extra == "all"
182
+ Requires-Dist: beanie[odm]; extra == "all"
188
183
  Requires-Dist: google-auth-oauthlib; extra == "all"
189
- Requires-Dist: logfire[fastapi]; extra == "all"
190
- Requires-Dist: diskcache; extra == "all"
191
- Requires-Dist: setuptools; extra == "all"
184
+ Requires-Dist: uvicorn[standard]; extra == "all"
192
185
  Requires-Dist: peft; extra == "all"
193
- Requires-Dist: httpx; extra == "all"
194
- Requires-Dist: pandas; extra == "all"
195
- Requires-Dist: flet[all]; extra == "all"
186
+ Requires-Dist: tinynetrc; extra == "all"
187
+ Requires-Dist: faker; extra == "all"
196
188
  Requires-Dist: pydantic; extra == "all"
197
- Requires-Dist: beanie[odm]; extra == "all"
198
- Requires-Dist: distributed; extra == "all"
199
- Requires-Dist: pycountry; extra == "all"
200
- Requires-Dist: pymupdf4llm; extra == "all"
201
- Requires-Dist: dnspython[doh]; extra == "all"
189
+ Requires-Dist: pytest-cov; extra == "all"
190
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
202
191
  Requires-Dist: playwright; extra == "all"
203
- Requires-Dist: odfpy; extra == "all"
204
- Requires-Dist: python-on-whales; extra == "all"
192
+ Requires-Dist: logfire[fastapi]; extra == "all"
193
+ Requires-Dist: appdirs; extra == "all"
194
+ Requires-Dist: semver; extra == "all"
195
+ Requires-Dist: flet[all]; extra == "all"
205
196
  Requires-Dist: bokeh; extra == "all"
206
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
207
- Requires-Dist: google-auth-httplib2; extra == "all"
208
- Requires-Dist: pyyaml; extra == "all"
209
- Requires-Dist: fastapi; extra == "all"
197
+ Requires-Dist: setuptools; extra == "all"
210
198
  Requires-Dist: Unidecode; extra == "all"
199
+ Requires-Dist: logfire; extra == "all"
200
+ Requires-Dist: pydantic-extra-types; extra == "all"
211
201
  Requires-Dist: flet-webview; extra == "all"
202
+ Requires-Dist: html2text; extra == "all"
203
+ Requires-Dist: dnspython[doh]; extra == "all"
204
+ Requires-Dist: yamlscript; extra == "all"
205
+ Requires-Dist: tabulate; extra == "all"
212
206
  Requires-Dist: logfire[httpx]; extra == "all"
207
+ Requires-Dist: pyyaml; extra == "all"
208
+ Requires-Dist: pymupdf; extra == "all"
209
+ Requires-Dist: pymupdf4llm; extra == "all"
210
+ Requires-Dist: google-api-python-client; extra == "all"
211
+ Requires-Dist: torchaudio; extra == "all"
213
212
  Requires-Dist: openpyxl; extra == "all"
213
+ Requires-Dist: cachetools; extra == "all"
214
+ Requires-Dist: dask[bag]; extra == "all"
215
+ Requires-Dist: distributed; extra == "all"
216
+ Requires-Dist: httpx_retries; extra == "all"
217
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
214
218
  Requires-Dist: openai; extra == "all"
215
- Requires-Dist: sre_yield; extra == "all"
216
- Requires-Dist: huggingface_hub; extra == "all"
217
- Requires-Dist: pydantic-extra-types; extra == "all"
218
219
  Requires-Dist: google-auth; extra == "all"
220
+ Requires-Dist: ollama; extra == "all"
219
221
  Requires-Dist: sentence_transformers; extra == "all"
220
- Requires-Dist: dask[bag]; extra == "all"
221
- Requires-Dist: contexttimer; extra == "all"
222
- Requires-Dist: semver; extra == "all"
223
- Requires-Dist: transformers[sentencepiece]; extra == "all"
224
- Requires-Dist: cachetools; extra == "all"
225
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
226
- Requires-Dist: httpx_retries; extra == "all"
227
- Requires-Dist: pydantic-settings; extra == "all"
228
- Requires-Dist: html2text; extra == "all"
229
- Requires-Dist: tinynetrc; extra == "all"
222
+ Requires-Dist: huggingface_hub; extra == "all"
223
+ Requires-Dist: odfpy; extra == "all"
224
+ Requires-Dist: sre_yield; extra == "all"
225
+ Requires-Dist: diskcache; extra == "all"
226
+ Requires-Dist: httpx; extra == "all"
227
+ Requires-Dist: deepdiff; extra == "all"
228
+ Requires-Dist: filetype; extra == "all"
229
+ Requires-Dist: regex; extra == "all"
230
230
  Dynamic: author
231
231
  Dynamic: author-email
232
232
  Dynamic: description
@@ -45,7 +45,7 @@ fmtr/tools/tabular_tools.py,sha256=mw6vOij1Ch-pVAyHMPtm5zj__ULZN_TKeBYOfj33wFM,1
45
45
  fmtr/tools/tokenization_tools.py,sha256=me-IBzSLyNYejLybwjO9CNB6Mj2NYfKPaOVThXyaGNg,4268
46
46
  fmtr/tools/tools.py,sha256=sLMXk8juOL8_n_D776cJ-kzjyMHqFI_fctDEjy6PIKs,1115
47
47
  fmtr/tools/unicode_tools.py,sha256=yS_9wpu8ogNoiIL7s1G_8bETFFO_YQlo4LNPv1NLDeY,52
48
- fmtr/tools/version,sha256=44MKGTtDIpnJNALvNTzMb92ej4gSGvmp9z8gUKxi5A4,6
48
+ fmtr/tools/version,sha256=nUbdl36ANzDqxVZspE2k186qHKJ-1fUrAoWrOkJxxdo,6
49
49
  fmtr/tools/webhook_tools.py,sha256=q3pVJ1NCem2SrMuFcLxiWd7DibFs7Q-uGtojfXd3Qcg,380
50
50
  fmtr/tools/yaml_tools.py,sha256=Bhhyd6GQVKO72Lp8ky7bAUjIB_65Hdh0Q45SKIEe6S8,1901
51
51
  fmtr/tools/ai_tools/__init__.py,sha256=O8VRlPnnQCncg2ZZ2l_VdWLJf4jkKH6dkZFVbv6o7IM,388
@@ -67,7 +67,7 @@ fmtr/tools/entrypoints/remote_debug_test.py,sha256=wmKg9o2pQq7eqeHmaO8oviujNgtns
67
67
  fmtr/tools/entrypoints/shell_debug.py,sha256=0No3tAg9Ri4_vvSlQCUtAY-11HR0nE45i0VVtiAViwY,106
68
68
  fmtr/tools/interface_tools/__init__.py,sha256=_bgZRTqmygtYM75o6_zyQRhT_XZnDERZEHmsYVrzyxw,393
69
69
  fmtr/tools/interface_tools/context.py,sha256=VpoR_ZCndDbwS0AzIPKi1hB2QckwJU5dJqAJavF3mqk,151
70
- fmtr/tools/interface_tools/controls.py,sha256=NoKau9oZtAUn9UNqrOdefc4iKp-IUhguv1i-oD9VbX4,6804
70
+ fmtr/tools/interface_tools/controls.py,sha256=sfP9-Vuws7v05WQQhsALwMyvymDbtK7VAHxgKyWQfr0,7651
71
71
  fmtr/tools/interface_tools/interface_tools.py,sha256=jSRwpdHqOTmNLndE-wFqTQdkT4z2BBdclSxmvs11FnU,4400
72
72
  fmtr/tools/path_tools/__init__.py,sha256=XrJXt7Zzo90tYUVksMlDfKkWt775zJ9OSi2NbhnqMDI,459
73
73
  fmtr/tools/path_tools/app_path_tools.py,sha256=JrJvtTDd_gkCKcZtBCDTMktsM77PZwGV_hzQX0g5GU8,1722
@@ -85,9 +85,9 @@ fmtr/tools/tests/test_path.py,sha256=AkZQa6_8BQ-VaCyL_J-iKmdf2ZaM-xFYR37Kun3k4_g
85
85
  fmtr/tools/tests/test_yaml.py,sha256=jc0TwwKu9eC0LvFGNMERdgBue591xwLxYXFbtsRwXVM,287
86
86
  fmtr/tools/version_tools/__init__.py,sha256=cjE6nO6AoVOUp3RwgTbqL9wiw8J1l2pHJOz6Gn6bxjA,326
87
87
  fmtr/tools/version_tools/version_tools.py,sha256=Hcc6yferZS1hHbugRTdiHhSNmXEEG0hjCiTTXKna-YY,1127
88
- fmtr_tools-1.3.78.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
89
- fmtr_tools-1.3.78.dist-info/METADATA,sha256=WO3YLT3mBryS_7VMQ_PWt2782eJ6KtTkJjw9pRLfP-4,17916
90
- fmtr_tools-1.3.78.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
91
- fmtr_tools-1.3.78.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
92
- fmtr_tools-1.3.78.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
93
- fmtr_tools-1.3.78.dist-info/RECORD,,
88
+ fmtr_tools-1.3.79.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
89
+ fmtr_tools-1.3.79.dist-info/METADATA,sha256=jk9fr_Jqd01XOBdH48JxQohcMQJsRlhyXgGlyM36EPw,17916
90
+ fmtr_tools-1.3.79.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
91
+ fmtr_tools-1.3.79.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
92
+ fmtr_tools-1.3.79.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
93
+ fmtr_tools-1.3.79.dist-info/RECORD,,