fmtr.tools 1.3.55__tar.gz → 1.3.56__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 (101) hide show
  1. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/PKG-INFO +52 -52
  2. fmtr_tools-1.3.56/fmtr/tools/interface_tools/controls.py +140 -0
  3. fmtr_tools-1.3.56/fmtr/tools/version +1 -0
  4. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr.tools.egg-info/PKG-INFO +52 -52
  5. fmtr_tools-1.3.55/fmtr/tools/interface_tools/controls.py +0 -13
  6. fmtr_tools-1.3.55/fmtr/tools/version +0 -1
  7. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/LICENSE +0 -0
  8. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/README.md +0 -0
  9. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/__init__.py +0 -0
  10. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/ai_tools/__init__.py +0 -0
  11. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
  12. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  13. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/api_tools.py +0 -0
  14. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/async_tools.py +0 -0
  15. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/augmentation_tools.py +0 -0
  16. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/caching_tools.py +0 -0
  17. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/constants.py +0 -0
  18. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/context_tools.py +0 -0
  19. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/data_modelling_tools.py +0 -0
  20. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/database_tools/__init__.py +0 -0
  21. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/database_tools/document.py +0 -0
  22. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/dataclass_tools.py +0 -0
  23. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/datatype_tools.py +0 -0
  24. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/datetime_tools.py +0 -0
  25. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/debugging_tools.py +0 -0
  26. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/dns_tools/__init__.py +0 -0
  27. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/dns_tools/client.py +0 -0
  28. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/dns_tools/dm.py +0 -0
  29. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/dns_tools/proxy.py +0 -0
  30. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/dns_tools/server.py +0 -0
  31. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/docker_tools/__init__.py +0 -0
  32. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/entrypoints/__init__.py +0 -0
  33. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
  34. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/entrypoints/ep_test.py +0 -0
  35. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
  36. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
  37. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/entrypoints/shell_debug.py +0 -0
  38. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/environment_tools.py +0 -0
  39. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/function_tools.py +0 -0
  40. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/google_api_tools.py +0 -0
  41. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/hash_tools.py +0 -0
  42. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/hfh_tools.py +0 -0
  43. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/html_tools.py +0 -0
  44. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/http_tools.py +0 -0
  45. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/import_tools.py +0 -0
  46. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/inherit_tools.py +0 -0
  47. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/inspection_tools.py +0 -0
  48. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/interface_tools/__init__.py +0 -0
  49. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/interface_tools/context.py +0 -0
  50. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/interface_tools/interface_tools.py +0 -0
  51. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/iterator_tools.py +0 -0
  52. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/json_fix_tools.py +0 -0
  53. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/json_tools.py +0 -0
  54. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/logging_tools.py +0 -0
  55. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/merging_tools.py +0 -0
  56. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/metric_tools.py +0 -0
  57. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/name_tools.py +0 -0
  58. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/netrc_tools.py +0 -0
  59. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/openai_tools.py +0 -0
  60. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/packaging_tools.py +0 -0
  61. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/parallel_tools.py +0 -0
  62. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/path_tools/__init__.py +0 -0
  63. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/path_tools/app_path_tools.py +0 -0
  64. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/path_tools/path_tools.py +0 -0
  65. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/path_tools/type_path_tools.py +0 -0
  66. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/pattern_tools.py +0 -0
  67. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/pdf_tools.py +0 -0
  68. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/platform_tools.py +0 -0
  69. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/process_tools.py +0 -0
  70. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/profiling_tools.py +0 -0
  71. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/random_tools.py +0 -0
  72. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/semantic_tools.py +0 -0
  73. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/settings_tools.py +0 -0
  74. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/setup_tools/__init__.py +0 -0
  75. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/setup_tools/setup_tools.py +0 -0
  76. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/spaces_tools.py +0 -0
  77. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/string_tools.py +0 -0
  78. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/tabular_tools.py +0 -0
  79. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/tests/__init__.py +0 -0
  80. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/tests/conftest.py +0 -0
  81. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/tests/helpers.py +0 -0
  82. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/tests/test_datatype.py +0 -0
  83. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/tests/test_environment.py +0 -0
  84. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/tests/test_json.py +0 -0
  85. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/tests/test_path.py +0 -0
  86. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/tests/test_yaml.py +0 -0
  87. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/tokenization_tools.py +0 -0
  88. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/tools.py +0 -0
  89. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/unicode_tools.py +0 -0
  90. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/version_tools/__init__.py +0 -0
  91. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/version_tools/version_tools.py +0 -0
  92. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/webhook_tools.py +0 -0
  93. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr/tools/yaml_tools.py +0 -0
  94. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr.tools.egg-info/SOURCES.txt +0 -0
  95. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  96. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr.tools.egg-info/entry_points.txt +0 -0
  97. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr.tools.egg-info/requires.txt +51 -51
  98. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/fmtr.tools.egg-info/top_level.txt +0 -0
  99. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/pyproject.toml +0 -0
  100. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/setup.cfg +0 -0
  101. {fmtr_tools-1.3.55 → fmtr_tools-1.3.56}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.55
3
+ Version: 1.3.56
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
@@ -154,68 +154,68 @@ Provides-Extra: db-document
154
154
  Requires-Dist: beanie[odm]; extra == "db-document"
155
155
  Requires-Dist: motor; extra == "db-document"
156
156
  Provides-Extra: all
157
- Requires-Dist: logfire[fastapi]; extra == "all"
158
- Requires-Dist: deepdiff; extra == "all"
159
- Requires-Dist: flet-webview; extra == "all"
160
- Requires-Dist: tokenizers; extra == "all"
161
- Requires-Dist: sre_yield; extra == "all"
162
- Requires-Dist: uvicorn[standard]; extra == "all"
163
- Requires-Dist: bokeh; extra == "all"
164
- Requires-Dist: torchvision; extra == "all"
165
- Requires-Dist: google-api-python-client; extra == "all"
157
+ Requires-Dist: pymupdf4llm; extra == "all"
158
+ Requires-Dist: tabulate; extra == "all"
159
+ Requires-Dist: tinynetrc; extra == "all"
160
+ Requires-Dist: fastapi; extra == "all"
161
+ Requires-Dist: httpx; extra == "all"
162
+ Requires-Dist: yamlscript; extra == "all"
163
+ Requires-Dist: regex; extra == "all"
164
+ Requires-Dist: pyyaml; extra == "all"
165
+ Requires-Dist: odfpy; extra == "all"
166
+ Requires-Dist: logfire; extra == "all"
166
167
  Requires-Dist: torchaudio; extra == "all"
167
- Requires-Dist: pandas; extra == "all"
168
+ Requires-Dist: flet-webview; extra == "all"
169
+ Requires-Dist: logfire[fastapi]; extra == "all"
170
+ Requires-Dist: flet[all]; extra == "all"
171
+ Requires-Dist: pymupdf; extra == "all"
172
+ Requires-Dist: sentence_transformers; extra == "all"
168
173
  Requires-Dist: distributed; extra == "all"
169
- Requires-Dist: setuptools; extra == "all"
174
+ Requires-Dist: logfire[httpx]; extra == "all"
175
+ Requires-Dist: json_repair; extra == "all"
170
176
  Requires-Dist: diskcache; extra == "all"
171
- Requires-Dist: transformers[sentencepiece]; extra == "all"
172
- Requires-Dist: deepmerge; extra == "all"
173
177
  Requires-Dist: motor; extra == "all"
174
- Requires-Dist: appdirs; extra == "all"
175
- Requires-Dist: google-auth-httplib2; extra == "all"
176
- Requires-Dist: tinynetrc; extra == "all"
177
- Requires-Dist: sentence_transformers; extra == "all"
178
+ Requires-Dist: deepdiff; extra == "all"
179
+ Requires-Dist: playwright; extra == "all"
180
+ Requires-Dist: pydantic-extra-types; extra == "all"
181
+ Requires-Dist: torchvision; extra == "all"
182
+ Requires-Dist: tokenizers; extra == "all"
178
183
  Requires-Dist: html2text; extra == "all"
179
- Requires-Dist: openpyxl; extra == "all"
180
- Requires-Dist: google-auth; extra == "all"
181
- Requires-Dist: pymupdf4llm; extra == "all"
182
- Requires-Dist: httpx; extra == "all"
183
- Requires-Dist: fastapi; extra == "all"
184
- Requires-Dist: yamlscript; extra == "all"
185
- Requires-Dist: openai; extra == "all"
186
- Requires-Dist: pymupdf; extra == "all"
184
+ Requires-Dist: google-auth-httplib2; extra == "all"
185
+ Requires-Dist: appdirs; extra == "all"
186
+ Requires-Dist: filetype; extra == "all"
187
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
188
+ Requires-Dist: beanie[odm]; extra == "all"
189
+ Requires-Dist: contexttimer; extra == "all"
187
190
  Requires-Dist: pytest-cov; extra == "all"
188
- Requires-Dist: python-on-whales; extra == "all"
189
- Requires-Dist: Unidecode; extra == "all"
191
+ Requires-Dist: semver; extra == "all"
192
+ Requires-Dist: pycountry; extra == "all"
193
+ Requires-Dist: pydantic-settings; extra == "all"
190
194
  Requires-Dist: dnspython[doh]; extra == "all"
191
- Requires-Dist: logfire; extra == "all"
192
- Requires-Dist: contexttimer; extra == "all"
193
- Requires-Dist: tabulate; extra == "all"
194
- Requires-Dist: odfpy; extra == "all"
195
- Requires-Dist: beanie[odm]; extra == "all"
196
- Requires-Dist: json_repair; extra == "all"
197
- Requires-Dist: flet-video; extra == "all"
198
- Requires-Dist: logfire[httpx]; extra == "all"
195
+ Requires-Dist: deepmerge; extra == "all"
196
+ Requires-Dist: google-auth-oauthlib; extra == "all"
197
+ Requires-Dist: openai; extra == "all"
198
+ Requires-Dist: dask[bag]; extra == "all"
199
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
200
+ Requires-Dist: openpyxl; extra == "all"
199
201
  Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
200
- Requires-Dist: playwright; extra == "all"
201
- Requires-Dist: ollama; extra == "all"
202
- Requires-Dist: httpx_retries; extra == "all"
203
- Requires-Dist: peft; extra == "all"
204
- Requires-Dist: pyyaml; extra == "all"
202
+ Requires-Dist: uvicorn[standard]; extra == "all"
203
+ Requires-Dist: google-api-python-client; extra == "all"
205
204
  Requires-Dist: faker; extra == "all"
206
- Requires-Dist: pycountry; extra == "all"
207
- Requires-Dist: dask[bag]; extra == "all"
208
- Requires-Dist: pydantic-extra-types; extra == "all"
209
205
  Requires-Dist: huggingface_hub; extra == "all"
210
- Requires-Dist: google-auth-oauthlib; extra == "all"
211
- Requires-Dist: pydantic-settings; extra == "all"
212
- Requires-Dist: pydantic; extra == "all"
213
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
214
- Requires-Dist: flet[all]; extra == "all"
215
- Requires-Dist: regex; extra == "all"
206
+ Requires-Dist: sre_yield; extra == "all"
207
+ Requires-Dist: peft; extra == "all"
216
208
  Requires-Dist: cachetools; extra == "all"
217
- Requires-Dist: semver; extra == "all"
218
- Requires-Dist: filetype; extra == "all"
209
+ Requires-Dist: google-auth; extra == "all"
210
+ Requires-Dist: pandas; extra == "all"
211
+ Requires-Dist: Unidecode; extra == "all"
212
+ Requires-Dist: setuptools; extra == "all"
213
+ Requires-Dist: ollama; extra == "all"
214
+ Requires-Dist: flet-video; extra == "all"
215
+ Requires-Dist: httpx_retries; extra == "all"
216
+ Requires-Dist: bokeh; extra == "all"
217
+ Requires-Dist: pydantic; extra == "all"
218
+ Requires-Dist: python-on-whales; extra == "all"
219
219
  Dynamic: author
220
220
  Dynamic: author-email
221
221
  Dynamic: description
@@ -0,0 +1,140 @@
1
+ from typing import Optional
2
+
3
+ import flet as ft
4
+ from flet.core.gesture_detector import TapEvent
5
+
6
+ from fmtr.tools.logging_tools import logger
7
+
8
+
9
+ class SliderSteps(ft.Slider):
10
+ """
11
+
12
+ Slider control using step instead of divisions
13
+
14
+ """
15
+
16
+ def __init__(self, *args, min=10, max=100, step=10, **kwargs):
17
+ self.step = step
18
+ divisions = (max - min) // step
19
+ super().__init__(*args, min=min, max=max, divisions=divisions, **kwargs)
20
+
21
+
22
+ class Cell(ft.DataCell):
23
+ """
24
+
25
+ Context-aware, clickable data cell.
26
+
27
+ """
28
+
29
+ def __init__(self, series, column):
30
+ """
31
+
32
+ Store context
33
+
34
+ """
35
+ self.series = series
36
+ self.column = column
37
+ self.value = series[column]
38
+
39
+ super().__init__(self.gesture_detector)
40
+
41
+ @property
42
+ def text(self):
43
+ """
44
+
45
+ Cell contents text
46
+
47
+ """
48
+ return ft.Text(str(self.value))
49
+
50
+ @property
51
+ def gesture_detector(self):
52
+ """
53
+
54
+ Make arbitrary content clickable
55
+
56
+ """
57
+ return ft.GestureDetector(content=self.text, on_tap=self.click_tap)
58
+
59
+ async def click_tap(self, event: TapEvent):
60
+ """
61
+
62
+ Default cell click behavior — override in subclass if needed
63
+
64
+ """
65
+ value = await self.click(event=event)
66
+ event.page.update()
67
+ return value
68
+
69
+ async def click(self, event: Optional[TapEvent] = None):
70
+ """
71
+
72
+ Default cell click behavior — override in subclass if needed
73
+
74
+ """
75
+ logger.info(f"Clicked {self.column=} {self.series.id=} {self.value=}")
76
+
77
+
78
+ class Row(ft.DataRow):
79
+ """
80
+
81
+ Instantiate a row from a series
82
+
83
+ """
84
+
85
+ TypeCell = Cell
86
+
87
+ def __init__(self, series):
88
+ self.series = series
89
+ cells = [self.TypeCell(series, col) for col in series.index]
90
+ super().__init__(cells)
91
+
92
+
93
+ class Column(ft.DataColumn):
94
+ """
95
+
96
+ Column stub
97
+
98
+ """
99
+
100
+ def __init__(self, col_name: str):
101
+ """
102
+
103
+ Store context
104
+
105
+ """
106
+
107
+ self.col_name = col_name
108
+
109
+ super().__init__(label=self.text)
110
+
111
+ @property
112
+ def text(self):
113
+ """
114
+
115
+ Cell contents text
116
+
117
+ """
118
+ return ft.Text(str(self.col_name))
119
+
120
+
121
+ class Table(ft.DataTable):
122
+ """
123
+
124
+ Dataframe with clickable cells
125
+
126
+ """
127
+
128
+ TypeRow = Row
129
+ TypeColumn = Column
130
+
131
+ def __init__(self, df): # todo move to submodule with tabular deps
132
+ """
133
+
134
+ Set columns/rows using relevant types
135
+
136
+ """
137
+ self.df = df
138
+ columns = [self.TypeColumn(col) for col in df.columns]
139
+ rows = [self.TypeRow(row) for _, row in df.iterrows()]
140
+ super().__init__(columns=columns, rows=rows)
@@ -0,0 +1 @@
1
+ 1.3.56
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.55
3
+ Version: 1.3.56
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
@@ -154,68 +154,68 @@ Provides-Extra: db-document
154
154
  Requires-Dist: beanie[odm]; extra == "db-document"
155
155
  Requires-Dist: motor; extra == "db-document"
156
156
  Provides-Extra: all
157
- Requires-Dist: logfire[fastapi]; extra == "all"
158
- Requires-Dist: deepdiff; extra == "all"
159
- Requires-Dist: flet-webview; extra == "all"
160
- Requires-Dist: tokenizers; extra == "all"
161
- Requires-Dist: sre_yield; extra == "all"
162
- Requires-Dist: uvicorn[standard]; extra == "all"
163
- Requires-Dist: bokeh; extra == "all"
164
- Requires-Dist: torchvision; extra == "all"
165
- Requires-Dist: google-api-python-client; extra == "all"
157
+ Requires-Dist: pymupdf4llm; extra == "all"
158
+ Requires-Dist: tabulate; extra == "all"
159
+ Requires-Dist: tinynetrc; extra == "all"
160
+ Requires-Dist: fastapi; extra == "all"
161
+ Requires-Dist: httpx; extra == "all"
162
+ Requires-Dist: yamlscript; extra == "all"
163
+ Requires-Dist: regex; extra == "all"
164
+ Requires-Dist: pyyaml; extra == "all"
165
+ Requires-Dist: odfpy; extra == "all"
166
+ Requires-Dist: logfire; extra == "all"
166
167
  Requires-Dist: torchaudio; extra == "all"
167
- Requires-Dist: pandas; extra == "all"
168
+ Requires-Dist: flet-webview; extra == "all"
169
+ Requires-Dist: logfire[fastapi]; extra == "all"
170
+ Requires-Dist: flet[all]; extra == "all"
171
+ Requires-Dist: pymupdf; extra == "all"
172
+ Requires-Dist: sentence_transformers; extra == "all"
168
173
  Requires-Dist: distributed; extra == "all"
169
- Requires-Dist: setuptools; extra == "all"
174
+ Requires-Dist: logfire[httpx]; extra == "all"
175
+ Requires-Dist: json_repair; extra == "all"
170
176
  Requires-Dist: diskcache; extra == "all"
171
- Requires-Dist: transformers[sentencepiece]; extra == "all"
172
- Requires-Dist: deepmerge; extra == "all"
173
177
  Requires-Dist: motor; extra == "all"
174
- Requires-Dist: appdirs; extra == "all"
175
- Requires-Dist: google-auth-httplib2; extra == "all"
176
- Requires-Dist: tinynetrc; extra == "all"
177
- Requires-Dist: sentence_transformers; extra == "all"
178
+ Requires-Dist: deepdiff; extra == "all"
179
+ Requires-Dist: playwright; extra == "all"
180
+ Requires-Dist: pydantic-extra-types; extra == "all"
181
+ Requires-Dist: torchvision; extra == "all"
182
+ Requires-Dist: tokenizers; extra == "all"
178
183
  Requires-Dist: html2text; extra == "all"
179
- Requires-Dist: openpyxl; extra == "all"
180
- Requires-Dist: google-auth; extra == "all"
181
- Requires-Dist: pymupdf4llm; extra == "all"
182
- Requires-Dist: httpx; extra == "all"
183
- Requires-Dist: fastapi; extra == "all"
184
- Requires-Dist: yamlscript; extra == "all"
185
- Requires-Dist: openai; extra == "all"
186
- Requires-Dist: pymupdf; extra == "all"
184
+ Requires-Dist: google-auth-httplib2; extra == "all"
185
+ Requires-Dist: appdirs; extra == "all"
186
+ Requires-Dist: filetype; extra == "all"
187
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
188
+ Requires-Dist: beanie[odm]; extra == "all"
189
+ Requires-Dist: contexttimer; extra == "all"
187
190
  Requires-Dist: pytest-cov; extra == "all"
188
- Requires-Dist: python-on-whales; extra == "all"
189
- Requires-Dist: Unidecode; extra == "all"
191
+ Requires-Dist: semver; extra == "all"
192
+ Requires-Dist: pycountry; extra == "all"
193
+ Requires-Dist: pydantic-settings; extra == "all"
190
194
  Requires-Dist: dnspython[doh]; extra == "all"
191
- Requires-Dist: logfire; extra == "all"
192
- Requires-Dist: contexttimer; extra == "all"
193
- Requires-Dist: tabulate; extra == "all"
194
- Requires-Dist: odfpy; extra == "all"
195
- Requires-Dist: beanie[odm]; extra == "all"
196
- Requires-Dist: json_repair; extra == "all"
197
- Requires-Dist: flet-video; extra == "all"
198
- Requires-Dist: logfire[httpx]; extra == "all"
195
+ Requires-Dist: deepmerge; extra == "all"
196
+ Requires-Dist: google-auth-oauthlib; extra == "all"
197
+ Requires-Dist: openai; extra == "all"
198
+ Requires-Dist: dask[bag]; extra == "all"
199
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
200
+ Requires-Dist: openpyxl; extra == "all"
199
201
  Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
200
- Requires-Dist: playwright; extra == "all"
201
- Requires-Dist: ollama; extra == "all"
202
- Requires-Dist: httpx_retries; extra == "all"
203
- Requires-Dist: peft; extra == "all"
204
- Requires-Dist: pyyaml; extra == "all"
202
+ Requires-Dist: uvicorn[standard]; extra == "all"
203
+ Requires-Dist: google-api-python-client; extra == "all"
205
204
  Requires-Dist: faker; extra == "all"
206
- Requires-Dist: pycountry; extra == "all"
207
- Requires-Dist: dask[bag]; extra == "all"
208
- Requires-Dist: pydantic-extra-types; extra == "all"
209
205
  Requires-Dist: huggingface_hub; extra == "all"
210
- Requires-Dist: google-auth-oauthlib; extra == "all"
211
- Requires-Dist: pydantic-settings; extra == "all"
212
- Requires-Dist: pydantic; extra == "all"
213
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
214
- Requires-Dist: flet[all]; extra == "all"
215
- Requires-Dist: regex; extra == "all"
206
+ Requires-Dist: sre_yield; extra == "all"
207
+ Requires-Dist: peft; extra == "all"
216
208
  Requires-Dist: cachetools; extra == "all"
217
- Requires-Dist: semver; extra == "all"
218
- Requires-Dist: filetype; extra == "all"
209
+ Requires-Dist: google-auth; extra == "all"
210
+ Requires-Dist: pandas; extra == "all"
211
+ Requires-Dist: Unidecode; extra == "all"
212
+ Requires-Dist: setuptools; extra == "all"
213
+ Requires-Dist: ollama; extra == "all"
214
+ Requires-Dist: flet-video; extra == "all"
215
+ Requires-Dist: httpx_retries; extra == "all"
216
+ Requires-Dist: bokeh; extra == "all"
217
+ Requires-Dist: pydantic; extra == "all"
218
+ Requires-Dist: python-on-whales; extra == "all"
219
219
  Dynamic: author
220
220
  Dynamic: author-email
221
221
  Dynamic: description
@@ -1,13 +0,0 @@
1
- import flet as ft
2
-
3
- class SliderSteps(ft.Slider):
4
- """
5
-
6
- Slider control using step instead of divisions
7
-
8
- """
9
-
10
- def __init__(self, *args, min=10, max=100, step=10, **kwargs):
11
- self.step = step
12
- divisions = (max - min) // step
13
- super().__init__(*args, min=min, max=max, divisions=divisions, **kwargs)
@@ -1 +0,0 @@
1
- 1.3.55
File without changes
File without changes
@@ -18,68 +18,68 @@ pydantic-ai[logfire,openai]
18
18
  ollama
19
19
 
20
20
  [all]
21
- logfire[fastapi]
22
- deepdiff
23
- flet-webview
24
- tokenizers
25
- sre_yield
26
- uvicorn[standard]
27
- bokeh
28
- torchvision
29
- google-api-python-client
21
+ pymupdf4llm
22
+ tabulate
23
+ tinynetrc
24
+ fastapi
25
+ httpx
26
+ yamlscript
27
+ regex
28
+ pyyaml
29
+ odfpy
30
+ logfire
30
31
  torchaudio
31
- pandas
32
+ flet-webview
33
+ logfire[fastapi]
34
+ flet[all]
35
+ pymupdf
36
+ sentence_transformers
32
37
  distributed
33
- setuptools
38
+ logfire[httpx]
39
+ json_repair
34
40
  diskcache
35
- transformers[sentencepiece]
36
- deepmerge
37
41
  motor
38
- appdirs
39
- google-auth-httplib2
40
- tinynetrc
41
- sentence_transformers
42
+ deepdiff
43
+ playwright
44
+ pydantic-extra-types
45
+ torchvision
46
+ tokenizers
42
47
  html2text
43
- openpyxl
44
- google-auth
45
- pymupdf4llm
46
- httpx
47
- fastapi
48
- yamlscript
49
- openai
50
- pymupdf
48
+ google-auth-httplib2
49
+ appdirs
50
+ filetype
51
+ pydantic-ai[logfire,openai]
52
+ beanie[odm]
53
+ contexttimer
51
54
  pytest-cov
52
- python-on-whales
53
- Unidecode
55
+ semver
56
+ pycountry
57
+ pydantic-settings
54
58
  dnspython[doh]
55
- logfire
56
- contexttimer
57
- tabulate
58
- odfpy
59
- beanie[odm]
60
- json_repair
61
- flet-video
62
- logfire[httpx]
59
+ deepmerge
60
+ google-auth-oauthlib
61
+ openai
62
+ dask[bag]
63
+ transformers[sentencepiece]
64
+ openpyxl
63
65
  pydevd-pycharm~=251.25410.159
64
- playwright
65
- ollama
66
- httpx_retries
67
- peft
68
- pyyaml
66
+ uvicorn[standard]
67
+ google-api-python-client
69
68
  faker
70
- pycountry
71
- dask[bag]
72
- pydantic-extra-types
73
69
  huggingface_hub
74
- google-auth-oauthlib
75
- pydantic-settings
76
- pydantic
77
- pydantic-ai[logfire,openai]
78
- flet[all]
79
- regex
70
+ sre_yield
71
+ peft
80
72
  cachetools
81
- semver
82
- filetype
73
+ google-auth
74
+ pandas
75
+ Unidecode
76
+ setuptools
77
+ ollama
78
+ flet-video
79
+ httpx_retries
80
+ bokeh
81
+ pydantic
82
+ python-on-whales
83
83
 
84
84
  [api]
85
85
  fastapi
File without changes
File without changes
File without changes