fmtr.tools 1.3.78__tar.gz → 1.3.80__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.

Files changed (100) hide show
  1. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/PKG-INFO +48 -48
  2. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/interface_tools/controls.py +41 -12
  3. fmtr_tools-1.3.80/fmtr/tools/version +1 -0
  4. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr.tools.egg-info/PKG-INFO +48 -48
  5. fmtr_tools-1.3.78/fmtr/tools/version +0 -1
  6. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/LICENSE +0 -0
  7. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/README.md +0 -0
  8. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/__init__.py +0 -0
  9. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/ai_tools/__init__.py +0 -0
  10. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
  11. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  12. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/api_tools.py +0 -0
  13. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/async_tools.py +0 -0
  14. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/augmentation_tools.py +0 -0
  15. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/caching_tools.py +0 -0
  16. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/constants.py +0 -0
  17. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/context_tools.py +0 -0
  18. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/data_modelling_tools.py +0 -0
  19. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/database_tools/__init__.py +0 -0
  20. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/database_tools/document.py +0 -0
  21. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/dataclass_tools.py +0 -0
  22. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/datatype_tools.py +0 -0
  23. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/datetime_tools.py +0 -0
  24. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/debugging_tools.py +0 -0
  25. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/dns_tools/__init__.py +0 -0
  26. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/dns_tools/client.py +0 -0
  27. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/dns_tools/dm.py +0 -0
  28. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/dns_tools/proxy.py +0 -0
  29. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/dns_tools/server.py +0 -0
  30. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/docker_tools/__init__.py +0 -0
  31. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/entrypoints/__init__.py +0 -0
  32. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
  33. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/entrypoints/ep_test.py +0 -0
  34. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
  35. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
  36. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/entrypoints/shell_debug.py +0 -0
  37. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/environment_tools.py +0 -0
  38. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/function_tools.py +0 -0
  39. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/google_api_tools.py +0 -0
  40. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/hash_tools.py +0 -0
  41. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/hfh_tools.py +0 -0
  42. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/html_tools.py +0 -0
  43. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/http_tools.py +0 -0
  44. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/import_tools.py +0 -0
  45. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/inherit_tools.py +0 -0
  46. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/inspection_tools.py +0 -0
  47. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/interface_tools/__init__.py +0 -0
  48. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/interface_tools/context.py +0 -0
  49. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/interface_tools/interface_tools.py +0 -0
  50. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/iterator_tools.py +0 -0
  51. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/json_fix_tools.py +0 -0
  52. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/json_tools.py +0 -0
  53. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/logging_tools.py +0 -0
  54. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/merging_tools.py +0 -0
  55. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/metric_tools.py +0 -0
  56. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/name_tools.py +0 -0
  57. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/netrc_tools.py +0 -0
  58. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/openai_tools.py +0 -0
  59. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/packaging_tools.py +0 -0
  60. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/parallel_tools.py +0 -0
  61. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/path_tools/__init__.py +0 -0
  62. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/path_tools/app_path_tools.py +0 -0
  63. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/path_tools/path_tools.py +0 -0
  64. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/path_tools/type_path_tools.py +0 -0
  65. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/pattern_tools.py +0 -0
  66. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/pdf_tools.py +0 -0
  67. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/platform_tools.py +0 -0
  68. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/process_tools.py +0 -0
  69. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/profiling_tools.py +0 -0
  70. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/random_tools.py +0 -0
  71. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/semantic_tools.py +0 -0
  72. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/settings_tools.py +0 -0
  73. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/setup_tools/__init__.py +0 -0
  74. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/setup_tools/setup_tools.py +0 -0
  75. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/spaces_tools.py +0 -0
  76. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/string_tools.py +0 -0
  77. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/tabular_tools.py +0 -0
  78. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/tests/__init__.py +0 -0
  79. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/tests/conftest.py +0 -0
  80. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/tests/helpers.py +0 -0
  81. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/tests/test_datatype.py +0 -0
  82. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/tests/test_environment.py +0 -0
  83. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/tests/test_json.py +0 -0
  84. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/tests/test_path.py +0 -0
  85. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/tests/test_yaml.py +0 -0
  86. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/tokenization_tools.py +0 -0
  87. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/tools.py +0 -0
  88. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/unicode_tools.py +0 -0
  89. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/version_tools/__init__.py +0 -0
  90. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/version_tools/version_tools.py +0 -0
  91. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/webhook_tools.py +0 -0
  92. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr/tools/yaml_tools.py +0 -0
  93. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr.tools.egg-info/SOURCES.txt +0 -0
  94. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  95. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr.tools.egg-info/entry_points.txt +0 -0
  96. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr.tools.egg-info/requires.txt +47 -47
  97. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/fmtr.tools.egg-info/top_level.txt +0 -0
  98. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/pyproject.toml +0 -0
  99. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/setup.cfg +0 -0
  100. {fmtr_tools-1.3.78 → fmtr_tools-1.3.80}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.78
3
+ Version: 1.3.80
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: huggingface_hub; extra == "all"
170
- Requires-Dist: distributed; extra == "all"
169
+ Requires-Dist: tabulate; extra == "all"
170
+ Requires-Dist: beanie[odm]; extra == "all"
171
+ Requires-Dist: ollama; extra == "all"
172
+ Requires-Dist: pymupdf4llm; extra == "all"
173
+ Requires-Dist: httpx_retries; extra == "all"
174
+ Requires-Dist: diskcache; extra == "all"
175
+ Requires-Dist: filetype; extra == "all"
176
+ Requires-Dist: setuptools; extra == "all"
171
177
  Requires-Dist: torchaudio; extra == "all"
172
- Requires-Dist: html2text; extra == "all"
173
- Requires-Dist: logfire; extra == "all"
174
- Requires-Dist: dask[bag]; extra == "all"
175
178
  Requires-Dist: faker; extra == "all"
176
- Requires-Dist: diskcache; extra == "all"
177
- Requires-Dist: regex; extra == "all"
179
+ Requires-Dist: pydantic; extra == "all"
180
+ Requires-Dist: tinynetrc; extra == "all"
181
+ Requires-Dist: appdirs; extra == "all"
178
182
  Requires-Dist: peft; extra == "all"
183
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
179
184
  Requires-Dist: openpyxl; extra == "all"
180
- Requires-Dist: sre_yield; extra == "all"
181
- Requires-Dist: flet-video; extra == "all"
182
- Requires-Dist: yamlscript; extra == "all"
183
- Requires-Dist: appdirs; extra == "all"
184
185
  Requires-Dist: playwright; extra == "all"
185
- Requires-Dist: pydantic; extra == "all"
186
- Requires-Dist: contexttimer; extra == "all"
187
- Requires-Dist: openai; extra == "all"
188
- Requires-Dist: google-auth-oauthlib; extra == "all"
189
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
190
- Requires-Dist: uvicorn[standard]; extra == "all"
191
- Requires-Dist: deepdiff; extra == "all"
192
- Requires-Dist: pymupdf; extra == "all"
193
186
  Requires-Dist: flet[all]; extra == "all"
194
- Requires-Dist: semver; extra == "all"
195
- Requires-Dist: Unidecode; extra == "all"
196
- Requires-Dist: ollama; extra == "all"
197
- Requires-Dist: logfire[httpx]; extra == "all"
198
- Requires-Dist: pyyaml; extra == "all"
199
- Requires-Dist: filetype; extra == "all"
200
- Requires-Dist: bokeh; extra == "all"
201
- Requires-Dist: flet-webview; extra == "all"
202
- Requires-Dist: pydantic-settings; extra == "all"
187
+ Requires-Dist: cachetools; extra == "all"
203
188
  Requires-Dist: odfpy; extra == "all"
204
- Requires-Dist: google-api-python-client; extra == "all"
189
+ Requires-Dist: flet-video; extra == "all"
190
+ Requires-Dist: pytest-cov; extra == "all"
205
191
  Requires-Dist: transformers[sentencepiece]; extra == "all"
206
- Requires-Dist: deepmerge; extra == "all"
207
- Requires-Dist: sentence_transformers; extra == "all"
208
- Requires-Dist: tokenizers; extra == "all"
192
+ Requires-Dist: pydantic-settings; extra == "all"
209
193
  Requires-Dist: dnspython[doh]; extra == "all"
210
- Requires-Dist: httpx_retries; extra == "all"
211
- Requires-Dist: google-auth; extra == "all"
212
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
213
- Requires-Dist: logfire[fastapi]; extra == "all"
214
- Requires-Dist: torchvision; extra == "all"
215
- Requires-Dist: tinynetrc; extra == "all"
194
+ Requires-Dist: uvicorn[standard]; extra == "all"
195
+ Requires-Dist: contexttimer; extra == "all"
196
+ Requires-Dist: deepmerge; extra == "all"
197
+ Requires-Dist: Unidecode; extra == "all"
198
+ Requires-Dist: yamlscript; extra == "all"
199
+ Requires-Dist: pyyaml; extra == "all"
200
+ Requires-Dist: json_repair; extra == "all"
201
+ Requires-Dist: pydantic-extra-types; extra == "all"
216
202
  Requires-Dist: pandas; extra == "all"
217
- Requires-Dist: cachetools; extra == "all"
218
- Requires-Dist: pymupdf4llm; extra == "all"
219
- Requires-Dist: setuptools; extra == "all"
220
- Requires-Dist: pytest-cov; extra == "all"
221
203
  Requires-Dist: pycountry; extra == "all"
222
- Requires-Dist: fastapi; extra == "all"
204
+ Requires-Dist: google-api-python-client; extra == "all"
205
+ Requires-Dist: bokeh; extra == "all"
206
+ Requires-Dist: semver; extra == "all"
207
+ Requires-Dist: tokenizers; extra == "all"
208
+ Requires-Dist: dask[bag]; extra == "all"
209
+ Requires-Dist: logfire[fastapi]; extra == "all"
210
+ Requires-Dist: logfire[httpx]; extra == "all"
211
+ Requires-Dist: logfire; extra == "all"
212
+ Requires-Dist: google-auth; extra == "all"
213
+ Requires-Dist: pymupdf; extra == "all"
214
+ Requires-Dist: sre_yield; extra == "all"
223
215
  Requires-Dist: python-on-whales; extra == "all"
224
- Requires-Dist: json_repair; extra == "all"
216
+ Requires-Dist: sentence_transformers; extra == "all"
225
217
  Requires-Dist: httpx; extra == "all"
226
- Requires-Dist: pydantic-extra-types; extra == "all"
218
+ Requires-Dist: deepdiff; extra == "all"
219
+ Requires-Dist: distributed; extra == "all"
220
+ Requires-Dist: huggingface_hub; extra == "all"
221
+ Requires-Dist: html2text; extra == "all"
222
+ Requires-Dist: google-auth-oauthlib; extra == "all"
227
223
  Requires-Dist: google-auth-httplib2; extra == "all"
228
- Requires-Dist: beanie[odm]; extra == "all"
229
- Requires-Dist: tabulate; extra == "all"
224
+ Requires-Dist: torchvision; extra == "all"
225
+ Requires-Dist: openai; extra == "all"
226
+ Requires-Dist: flet-webview; extra == "all"
227
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
228
+ Requires-Dist: fastapi; extra == "all"
229
+ Requires-Dist: regex; extra == "all"
230
230
  Dynamic: author
231
231
  Dynamic: author-email
232
232
  Dynamic: description
@@ -41,7 +41,7 @@ class Cell(ft.DataCell):
41
41
 
42
42
  super().__init__(self.gesture_detector)
43
43
 
44
- @property
44
+ @cached_property
45
45
  def text(self):
46
46
  """
47
47
 
@@ -72,8 +72,7 @@ class Cell(ft.DataCell):
72
72
  """
73
73
  return None
74
74
 
75
-
76
- @property
75
+ @cached_property
77
76
  def gesture_detector(self):
78
77
  """
79
78
 
@@ -98,7 +97,7 @@ class Cell(ft.DataCell):
98
97
  Default cell click behavior — override in subclass if needed
99
98
 
100
99
  """
101
- logger.info(f"Clicked {self.column=} {self.series.id=} {self.value=}")
100
+ logger.info(f"Clicked {self.column=} {self.series.name=} {self.value=}")
102
101
 
103
102
  async def click_double_tap(self, event: TapEvent):
104
103
  """
@@ -126,7 +125,7 @@ class Row(ft.DataRow):
126
125
 
127
126
  """
128
127
 
129
- TypeCell = Cell
128
+ TypesCells = {None: Cell}
130
129
 
131
130
  def __init__(self, series):
132
131
  self.series = series
@@ -141,7 +140,9 @@ class Row(ft.DataRow):
141
140
  """
142
141
  data = {}
143
142
  for col in self.series.index:
144
- data.setdefault(col, []).append(self.TypeCell(self.series, col))
143
+ default = self.TypesCells[None]
144
+ TypeCell = self.TypesCells.get(col, default)
145
+ data.setdefault(col, []).append(TypeCell(self.series, col))
145
146
  return data
146
147
 
147
148
  @cached_property
@@ -193,7 +194,7 @@ class Column(ft.DataColumn):
193
194
 
194
195
  super().__init__(label=self.text)
195
196
 
196
- @property
197
+ @cached_property
197
198
  def text(self):
198
199
  """
199
200
 
@@ -219,8 +220,8 @@ class Table(ft.DataTable):
219
220
 
220
221
  """
221
222
 
222
- TypeRow = Row
223
- TypeColumn = Column
223
+ TypesRows = {None: Row}
224
+ TypesColumns = {None: Column}
224
225
 
225
226
  def __init__(self, df): # todo move to submodule with tabular deps
226
227
  """
@@ -229,8 +230,34 @@ class Table(ft.DataTable):
229
230
 
230
231
  """
231
232
  self.df = df
232
- columns = [self.TypeColumn(col) for col in df.columns]
233
- super().__init__(columns=columns, rows=self.rows_controls)
233
+ super().__init__(columns=self.columns_controls, rows=self.rows_controls)
234
+
235
+ @cached_property
236
+ def columns_data(self) -> dict[str, list[Column]]:
237
+ """
238
+
239
+ Columns controls lookup
240
+
241
+ """
242
+ data = {}
243
+ for col in self.df.columns:
244
+ default = self.TypesColumns[None]
245
+ TypeColumn = self.TypesColumns.get(col, default)
246
+ data.setdefault(col, []).append(TypeColumn(col))
247
+ return data
248
+
249
+ @cached_property
250
+ def columns_controls(self) -> list[Column]:
251
+ """
252
+
253
+ Flat list of controls
254
+
255
+ """
256
+ controls = []
257
+ for columns in self.columns_data.values():
258
+ for column in columns:
259
+ controls.append(column)
260
+ return controls
234
261
 
235
262
  @cached_property
236
263
  def rows_data(self) -> dict[str, list[Row]]:
@@ -241,7 +268,9 @@ class Table(ft.DataTable):
241
268
  """
242
269
  data = {}
243
270
  for index, row in self.df.iterrows():
244
- data.setdefault(index, []).append(self.TypeRow(row))
271
+ default = self.TypesRows[None]
272
+ TypeRow = self.TypesRows.get(index, default)
273
+ data.setdefault(index, []).append(TypeRow(row))
245
274
  return data
246
275
 
247
276
  @cached_property
@@ -0,0 +1 @@
1
+ 1.3.80
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.78
3
+ Version: 1.3.80
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: huggingface_hub; extra == "all"
170
- Requires-Dist: distributed; extra == "all"
169
+ Requires-Dist: tabulate; extra == "all"
170
+ Requires-Dist: beanie[odm]; extra == "all"
171
+ Requires-Dist: ollama; extra == "all"
172
+ Requires-Dist: pymupdf4llm; extra == "all"
173
+ Requires-Dist: httpx_retries; extra == "all"
174
+ Requires-Dist: diskcache; extra == "all"
175
+ Requires-Dist: filetype; extra == "all"
176
+ Requires-Dist: setuptools; extra == "all"
171
177
  Requires-Dist: torchaudio; extra == "all"
172
- Requires-Dist: html2text; extra == "all"
173
- Requires-Dist: logfire; extra == "all"
174
- Requires-Dist: dask[bag]; extra == "all"
175
178
  Requires-Dist: faker; extra == "all"
176
- Requires-Dist: diskcache; extra == "all"
177
- Requires-Dist: regex; extra == "all"
179
+ Requires-Dist: pydantic; extra == "all"
180
+ Requires-Dist: tinynetrc; extra == "all"
181
+ Requires-Dist: appdirs; extra == "all"
178
182
  Requires-Dist: peft; extra == "all"
183
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
179
184
  Requires-Dist: openpyxl; extra == "all"
180
- Requires-Dist: sre_yield; extra == "all"
181
- Requires-Dist: flet-video; extra == "all"
182
- Requires-Dist: yamlscript; extra == "all"
183
- Requires-Dist: appdirs; extra == "all"
184
185
  Requires-Dist: playwright; extra == "all"
185
- Requires-Dist: pydantic; extra == "all"
186
- Requires-Dist: contexttimer; extra == "all"
187
- Requires-Dist: openai; extra == "all"
188
- Requires-Dist: google-auth-oauthlib; extra == "all"
189
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
190
- Requires-Dist: uvicorn[standard]; extra == "all"
191
- Requires-Dist: deepdiff; extra == "all"
192
- Requires-Dist: pymupdf; extra == "all"
193
186
  Requires-Dist: flet[all]; extra == "all"
194
- Requires-Dist: semver; extra == "all"
195
- Requires-Dist: Unidecode; extra == "all"
196
- Requires-Dist: ollama; extra == "all"
197
- Requires-Dist: logfire[httpx]; extra == "all"
198
- Requires-Dist: pyyaml; extra == "all"
199
- Requires-Dist: filetype; extra == "all"
200
- Requires-Dist: bokeh; extra == "all"
201
- Requires-Dist: flet-webview; extra == "all"
202
- Requires-Dist: pydantic-settings; extra == "all"
187
+ Requires-Dist: cachetools; extra == "all"
203
188
  Requires-Dist: odfpy; extra == "all"
204
- Requires-Dist: google-api-python-client; extra == "all"
189
+ Requires-Dist: flet-video; extra == "all"
190
+ Requires-Dist: pytest-cov; extra == "all"
205
191
  Requires-Dist: transformers[sentencepiece]; extra == "all"
206
- Requires-Dist: deepmerge; extra == "all"
207
- Requires-Dist: sentence_transformers; extra == "all"
208
- Requires-Dist: tokenizers; extra == "all"
192
+ Requires-Dist: pydantic-settings; extra == "all"
209
193
  Requires-Dist: dnspython[doh]; extra == "all"
210
- Requires-Dist: httpx_retries; extra == "all"
211
- Requires-Dist: google-auth; extra == "all"
212
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
213
- Requires-Dist: logfire[fastapi]; extra == "all"
214
- Requires-Dist: torchvision; extra == "all"
215
- Requires-Dist: tinynetrc; extra == "all"
194
+ Requires-Dist: uvicorn[standard]; extra == "all"
195
+ Requires-Dist: contexttimer; extra == "all"
196
+ Requires-Dist: deepmerge; extra == "all"
197
+ Requires-Dist: Unidecode; extra == "all"
198
+ Requires-Dist: yamlscript; extra == "all"
199
+ Requires-Dist: pyyaml; extra == "all"
200
+ Requires-Dist: json_repair; extra == "all"
201
+ Requires-Dist: pydantic-extra-types; extra == "all"
216
202
  Requires-Dist: pandas; extra == "all"
217
- Requires-Dist: cachetools; extra == "all"
218
- Requires-Dist: pymupdf4llm; extra == "all"
219
- Requires-Dist: setuptools; extra == "all"
220
- Requires-Dist: pytest-cov; extra == "all"
221
203
  Requires-Dist: pycountry; extra == "all"
222
- Requires-Dist: fastapi; extra == "all"
204
+ Requires-Dist: google-api-python-client; extra == "all"
205
+ Requires-Dist: bokeh; extra == "all"
206
+ Requires-Dist: semver; extra == "all"
207
+ Requires-Dist: tokenizers; extra == "all"
208
+ Requires-Dist: dask[bag]; extra == "all"
209
+ Requires-Dist: logfire[fastapi]; extra == "all"
210
+ Requires-Dist: logfire[httpx]; extra == "all"
211
+ Requires-Dist: logfire; extra == "all"
212
+ Requires-Dist: google-auth; extra == "all"
213
+ Requires-Dist: pymupdf; extra == "all"
214
+ Requires-Dist: sre_yield; extra == "all"
223
215
  Requires-Dist: python-on-whales; extra == "all"
224
- Requires-Dist: json_repair; extra == "all"
216
+ Requires-Dist: sentence_transformers; extra == "all"
225
217
  Requires-Dist: httpx; extra == "all"
226
- Requires-Dist: pydantic-extra-types; extra == "all"
218
+ Requires-Dist: deepdiff; extra == "all"
219
+ Requires-Dist: distributed; extra == "all"
220
+ Requires-Dist: huggingface_hub; extra == "all"
221
+ Requires-Dist: html2text; extra == "all"
222
+ Requires-Dist: google-auth-oauthlib; extra == "all"
227
223
  Requires-Dist: google-auth-httplib2; extra == "all"
228
- Requires-Dist: beanie[odm]; extra == "all"
229
- Requires-Dist: tabulate; extra == "all"
224
+ Requires-Dist: torchvision; extra == "all"
225
+ Requires-Dist: openai; extra == "all"
226
+ Requires-Dist: flet-webview; extra == "all"
227
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
228
+ Requires-Dist: fastapi; extra == "all"
229
+ Requires-Dist: regex; extra == "all"
230
230
  Dynamic: author
231
231
  Dynamic: author-email
232
232
  Dynamic: description
@@ -1 +0,0 @@
1
- 1.3.78
File without changes
File without changes
@@ -18,67 +18,67 @@ pydantic-ai[logfire,openai]
18
18
  ollama
19
19
 
20
20
  [all]
21
- huggingface_hub
22
- distributed
21
+ tabulate
22
+ beanie[odm]
23
+ ollama
24
+ pymupdf4llm
25
+ httpx_retries
26
+ diskcache
27
+ filetype
28
+ setuptools
23
29
  torchaudio
24
- html2text
25
- logfire
26
- dask[bag]
27
30
  faker
28
- diskcache
29
- regex
31
+ pydantic
32
+ tinynetrc
33
+ appdirs
30
34
  peft
35
+ pydantic-ai[logfire,openai]
31
36
  openpyxl
32
- sre_yield
33
- flet-video
34
- yamlscript
35
- appdirs
36
37
  playwright
37
- pydantic
38
- contexttimer
39
- openai
40
- google-auth-oauthlib
41
- pydantic-ai[logfire,openai]
42
- uvicorn[standard]
43
- deepdiff
44
- pymupdf
45
38
  flet[all]
46
- semver
47
- Unidecode
48
- ollama
49
- logfire[httpx]
50
- pyyaml
51
- filetype
52
- bokeh
53
- flet-webview
54
- pydantic-settings
39
+ cachetools
55
40
  odfpy
56
- google-api-python-client
41
+ flet-video
42
+ pytest-cov
57
43
  transformers[sentencepiece]
58
- deepmerge
59
- sentence_transformers
60
- tokenizers
44
+ pydantic-settings
61
45
  dnspython[doh]
62
- httpx_retries
63
- google-auth
64
- pydevd-pycharm~=251.25410.159
65
- logfire[fastapi]
66
- torchvision
67
- tinynetrc
46
+ uvicorn[standard]
47
+ contexttimer
48
+ deepmerge
49
+ Unidecode
50
+ yamlscript
51
+ pyyaml
52
+ json_repair
53
+ pydantic-extra-types
68
54
  pandas
69
- cachetools
70
- pymupdf4llm
71
- setuptools
72
- pytest-cov
73
55
  pycountry
74
- fastapi
56
+ google-api-python-client
57
+ bokeh
58
+ semver
59
+ tokenizers
60
+ dask[bag]
61
+ logfire[fastapi]
62
+ logfire[httpx]
63
+ logfire
64
+ google-auth
65
+ pymupdf
66
+ sre_yield
75
67
  python-on-whales
76
- json_repair
68
+ sentence_transformers
77
69
  httpx
78
- pydantic-extra-types
70
+ deepdiff
71
+ distributed
72
+ huggingface_hub
73
+ html2text
74
+ google-auth-oauthlib
79
75
  google-auth-httplib2
80
- beanie[odm]
81
- tabulate
76
+ torchvision
77
+ openai
78
+ flet-webview
79
+ pydevd-pycharm~=251.25410.159
80
+ fastapi
81
+ regex
82
82
 
83
83
  [api]
84
84
  fastapi
File without changes
File without changes
File without changes