fmtr.tools 1.3.44__tar.gz → 1.3.46__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.44 → fmtr_tools-1.3.46}/PKG-INFO +53 -46
  2. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/ai_tools/agentic_tools.py +9 -0
  3. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/interface_tools/interface_tools.py +16 -3
  4. fmtr_tools-1.3.46/fmtr/tools/version +1 -0
  5. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr.tools.egg-info/PKG-INFO +53 -46
  6. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr.tools.egg-info/requires.txt +52 -45
  7. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/setup.py +1 -1
  8. fmtr_tools-1.3.44/fmtr/tools/version +0 -1
  9. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/LICENSE +0 -0
  10. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/README.md +0 -0
  11. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/__init__.py +0 -0
  12. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/ai_tools/__init__.py +0 -0
  13. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  14. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/api_tools.py +0 -0
  15. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/async_tools.py +0 -0
  16. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/augmentation_tools.py +0 -0
  17. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/caching_tools.py +0 -0
  18. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/constants.py +0 -0
  19. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/context_tools.py +0 -0
  20. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/data_modelling_tools.py +0 -0
  21. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/database_tools/__init__.py +0 -0
  22. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/database_tools/document.py +0 -0
  23. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/dataclass_tools.py +0 -0
  24. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/datatype_tools.py +0 -0
  25. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/datetime_tools.py +0 -0
  26. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/debugging_tools.py +0 -0
  27. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/dns_tools/__init__.py +0 -0
  28. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/dns_tools/client.py +0 -0
  29. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/dns_tools/dm.py +0 -0
  30. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/dns_tools/proxy.py +0 -0
  31. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/dns_tools/server.py +0 -0
  32. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/docker_tools.py +0 -0
  33. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/entrypoints/__init__.py +0 -0
  34. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
  35. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/entrypoints/ep_test.py +0 -0
  36. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
  37. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
  38. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/entrypoints/shell_debug.py +0 -0
  39. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/environment_tools.py +0 -0
  40. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/function_tools.py +0 -0
  41. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/google_api_tools.py +0 -0
  42. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/hash_tools.py +0 -0
  43. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/hfh_tools.py +0 -0
  44. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/html_tools.py +0 -0
  45. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/http_tools.py +0 -0
  46. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/import_tools.py +0 -0
  47. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/inherit_tools.py +0 -0
  48. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/inspection_tools.py +0 -0
  49. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/interface_tools/__init__.py +0 -0
  50. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/interface_tools/context.py +0 -0
  51. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/interface_tools/controls.py +0 -0
  52. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/iterator_tools.py +0 -0
  53. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/json_fix_tools.py +0 -0
  54. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/json_tools.py +0 -0
  55. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/logging_tools.py +0 -0
  56. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/merging_tools.py +0 -0
  57. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/metric_tools.py +0 -0
  58. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/name_tools.py +0 -0
  59. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/netrc_tools.py +0 -0
  60. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/openai_tools.py +0 -0
  61. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/packaging_tools.py +0 -0
  62. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/parallel_tools.py +0 -0
  63. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/path_tools/__init__.py +0 -0
  64. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/path_tools/app_path_tools.py +0 -0
  65. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/path_tools/path_tools.py +0 -0
  66. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/path_tools/type_path_tools.py +0 -0
  67. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/pattern_tools.py +0 -0
  68. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/pdf_tools.py +0 -0
  69. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/platform_tools.py +0 -0
  70. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/process_tools.py +0 -0
  71. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/profiling_tools.py +0 -0
  72. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/random_tools.py +0 -0
  73. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/semantic_tools.py +0 -0
  74. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/settings_tools.py +0 -0
  75. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/setup_tools/__init__.py +0 -0
  76. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/setup_tools/setup_tools.py +0 -0
  77. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/spaces_tools.py +0 -0
  78. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/string_tools.py +0 -0
  79. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tabular_tools.py +0 -0
  80. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/__init__.py +0 -0
  81. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/conftest.py +0 -0
  82. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/helpers.py +0 -0
  83. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/test_datatype.py +0 -0
  84. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/test_environment.py +0 -0
  85. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/test_json.py +0 -0
  86. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/test_path.py +0 -0
  87. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tests/test_yaml.py +0 -0
  88. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tokenization_tools.py +0 -0
  89. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/tools.py +0 -0
  90. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/unicode_tools.py +0 -0
  91. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/version_tools/__init__.py +0 -0
  92. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/version_tools/version_tools.py +0 -0
  93. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/webhook_tools.py +0 -0
  94. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr/tools/yaml_tools.py +0 -0
  95. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr.tools.egg-info/SOURCES.txt +0 -0
  96. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  97. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr.tools.egg-info/entry_points.txt +0 -0
  98. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/fmtr.tools.egg-info/top_level.txt +0 -0
  99. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/pyproject.toml +0 -0
  100. {fmtr_tools-1.3.44 → fmtr_tools-1.3.46}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.44
3
+ Version: 1.3.46
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
@@ -48,6 +48,7 @@ Requires-Dist: fastapi; extra == "api"
48
48
  Requires-Dist: uvicorn[standard]; extra == "api"
49
49
  Requires-Dist: logfire; extra == "api"
50
50
  Requires-Dist: pydantic; extra == "api"
51
+ Requires-Dist: pydantic-extra-types; extra == "api"
51
52
  Requires-Dist: logfire[fastapi]; extra == "api"
52
53
  Provides-Extra: ai
53
54
  Requires-Dist: peft; extra == "ai"
@@ -55,13 +56,16 @@ Requires-Dist: transformers[sentencepiece]; extra == "ai"
55
56
  Requires-Dist: torchvision; extra == "ai"
56
57
  Requires-Dist: torchaudio; extra == "ai"
57
58
  Requires-Dist: pydantic; extra == "ai"
59
+ Requires-Dist: pydantic-extra-types; extra == "ai"
58
60
  Provides-Extra: dm
59
61
  Requires-Dist: pydantic; extra == "dm"
62
+ Requires-Dist: pydantic-extra-types; extra == "dm"
60
63
  Provides-Extra: openai-api
61
64
  Requires-Dist: openai; extra == "openai-api"
62
65
  Provides-Extra: ai-client
63
66
  Requires-Dist: logfire; extra == "ai-client"
64
67
  Requires-Dist: pydantic; extra == "ai-client"
68
+ Requires-Dist: pydantic-extra-types; extra == "ai-client"
65
69
  Requires-Dist: openai; extra == "ai-client"
66
70
  Requires-Dist: pydantic-ai[logfire,openai]; extra == "ai-client"
67
71
  Requires-Dist: ollama; extra == "ai-client"
@@ -97,12 +101,14 @@ Requires-Dist: cachetools; extra == "caching"
97
101
  Provides-Extra: pdf
98
102
  Requires-Dist: pymupdf; extra == "pdf"
99
103
  Requires-Dist: pydantic; extra == "pdf"
104
+ Requires-Dist: pydantic-extra-types; extra == "pdf"
100
105
  Requires-Dist: pymupdf4llm; extra == "pdf"
101
106
  Provides-Extra: debug
102
107
  Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "debug"
103
108
  Provides-Extra: sets
104
109
  Requires-Dist: pydantic-settings; extra == "sets"
105
110
  Requires-Dist: pydantic; extra == "sets"
111
+ Requires-Dist: pydantic-extra-types; extra == "sets"
106
112
  Requires-Dist: yamlscript; extra == "sets"
107
113
  Requires-Dist: pyyaml; extra == "sets"
108
114
  Provides-Extra: path-app
@@ -136,64 +142,65 @@ Provides-Extra: db-document
136
142
  Requires-Dist: beanie[odm]; extra == "db-document"
137
143
  Requires-Dist: motor; extra == "db-document"
138
144
  Provides-Extra: all
139
- Requires-Dist: sre_yield; extra == "all"
140
- Requires-Dist: yamlscript; extra == "all"
141
- Requires-Dist: pyyaml; extra == "all"
142
- Requires-Dist: flet-webview; extra == "all"
143
- Requires-Dist: peft; extra == "all"
144
- Requires-Dist: playwright; extra == "all"
145
- Requires-Dist: httpx_retries; extra == "all"
146
- Requires-Dist: pydantic; extra == "all"
145
+ Requires-Dist: torchaudio; extra == "all"
146
+ Requires-Dist: google-auth; extra == "all"
147
+ Requires-Dist: ollama; extra == "all"
148
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
149
+ Requires-Dist: setuptools; extra == "all"
147
150
  Requires-Dist: flet[all]; extra == "all"
151
+ Requires-Dist: dnspython[doh]; extra == "all"
152
+ Requires-Dist: flet-video; extra == "all"
153
+ Requires-Dist: motor; extra == "all"
148
154
  Requires-Dist: httpx; extra == "all"
149
- Requires-Dist: beanie[odm]; extra == "all"
150
- Requires-Dist: openai; extra == "all"
155
+ Requires-Dist: pydantic; extra == "all"
156
+ Requires-Dist: Unidecode; extra == "all"
157
+ Requires-Dist: huggingface_hub; extra == "all"
158
+ Requires-Dist: pymupdf4llm; extra == "all"
159
+ Requires-Dist: appdirs; extra == "all"
160
+ Requires-Dist: distributed; extra == "all"
161
+ Requires-Dist: playwright; extra == "all"
151
162
  Requires-Dist: cachetools; extra == "all"
152
- Requires-Dist: pymupdf; extra == "all"
153
- Requires-Dist: fastapi; extra == "all"
154
- Requires-Dist: json_repair; extra == "all"
155
- Requires-Dist: deepmerge; extra == "all"
156
- Requires-Dist: ollama; extra == "all"
157
- Requires-Dist: pydantic-settings; extra == "all"
163
+ Requires-Dist: openai; extra == "all"
164
+ Requires-Dist: logfire; extra == "all"
158
165
  Requires-Dist: faker; extra == "all"
159
- Requires-Dist: uvicorn[standard]; extra == "all"
160
- Requires-Dist: bokeh; extra == "all"
161
- Requires-Dist: distributed; extra == "all"
162
- Requires-Dist: semver; extra == "all"
163
- Requires-Dist: appdirs; extra == "all"
166
+ Requires-Dist: logfire[fastapi]; extra == "all"
167
+ Requires-Dist: google-auth-oauthlib; extra == "all"
168
+ Requires-Dist: pydantic-extra-types; extra == "all"
164
169
  Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
170
+ Requires-Dist: deepmerge; extra == "all"
171
+ Requires-Dist: tabulate; extra == "all"
165
172
  Requires-Dist: dask[bag]; extra == "all"
173
+ Requires-Dist: torchvision; extra == "all"
174
+ Requires-Dist: peft; extra == "all"
175
+ Requires-Dist: json_repair; extra == "all"
176
+ Requires-Dist: openpyxl; extra == "all"
177
+ Requires-Dist: google-auth-httplib2; extra == "all"
178
+ Requires-Dist: tokenizers; extra == "all"
179
+ Requires-Dist: flet-webview; extra == "all"
166
180
  Requires-Dist: diskcache; extra == "all"
181
+ Requires-Dist: fastapi; extra == "all"
182
+ Requires-Dist: docker; extra == "all"
183
+ Requires-Dist: pyyaml; extra == "all"
184
+ Requires-Dist: google-api-python-client; extra == "all"
185
+ Requires-Dist: pytest-cov; extra == "all"
186
+ Requires-Dist: semver; extra == "all"
167
187
  Requires-Dist: tinynetrc; extra == "all"
168
- Requires-Dist: tokenizers; extra == "all"
169
- Requires-Dist: setuptools; extra == "all"
188
+ Requires-Dist: uvicorn[standard]; extra == "all"
170
189
  Requires-Dist: html2text; extra == "all"
190
+ Requires-Dist: sre_yield; extra == "all"
191
+ Requires-Dist: pydantic-settings; extra == "all"
192
+ Requires-Dist: filetype; extra == "all"
193
+ Requires-Dist: pandas; extra == "all"
194
+ Requires-Dist: httpx_retries; extra == "all"
171
195
  Requires-Dist: transformers[sentencepiece]; extra == "all"
172
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
196
+ Requires-Dist: beanie[odm]; extra == "all"
197
+ Requires-Dist: pymupdf; extra == "all"
198
+ Requires-Dist: contexttimer; extra == "all"
173
199
  Requires-Dist: sentence_transformers; extra == "all"
174
- Requires-Dist: motor; extra == "all"
175
- Requires-Dist: pytest-cov; extra == "all"
176
- Requires-Dist: docker; extra == "all"
177
- Requires-Dist: logfire; extra == "all"
178
- Requires-Dist: openpyxl; extra == "all"
179
- Requires-Dist: tabulate; extra == "all"
200
+ Requires-Dist: bokeh; extra == "all"
180
201
  Requires-Dist: regex; extra == "all"
181
- Requires-Dist: google-api-python-client; extra == "all"
202
+ Requires-Dist: yamlscript; extra == "all"
182
203
  Requires-Dist: logfire[httpx]; extra == "all"
183
- Requires-Dist: torchaudio; extra == "all"
184
- Requires-Dist: torchvision; extra == "all"
185
- Requires-Dist: google-auth-oauthlib; extra == "all"
186
- Requires-Dist: google-auth-httplib2; extra == "all"
187
- Requires-Dist: filetype; extra == "all"
188
- Requires-Dist: huggingface_hub; extra == "all"
189
- Requires-Dist: logfire[fastapi]; extra == "all"
190
- Requires-Dist: pymupdf4llm; extra == "all"
191
- Requires-Dist: contexttimer; extra == "all"
192
- Requires-Dist: Unidecode; extra == "all"
193
- Requires-Dist: google-auth; extra == "all"
194
- Requires-Dist: flet-video; extra == "all"
195
- Requires-Dist: dnspython[doh]; extra == "all"
196
- Requires-Dist: pandas; extra == "all"
197
204
  Dynamic: author
198
205
  Dynamic: author-email
199
206
  Dynamic: description
@@ -132,6 +132,15 @@ class Task:
132
132
  """
133
133
  self.history = []
134
134
 
135
+ @property
136
+ def tool_schema(self):
137
+ """
138
+
139
+ Impossible to find otherwise.
140
+
141
+ """
142
+ return self.agent._output_toolset
143
+
135
144
  def __repr__(self):
136
145
  """
137
146
 
@@ -2,7 +2,7 @@ import flet as ft
2
2
  from flet.core.types import AppView
3
3
  from flet.core.view import View
4
4
  from functools import cached_property
5
- from typing import TypeVar, Generic, Type
5
+ from typing import TypeVar, Generic, Type, Self
6
6
 
7
7
  from fmtr.tools import environment_tools
8
8
  from fmtr.tools.constants import Constants
@@ -86,7 +86,7 @@ class Interface(Generic[T], ft.Column):
86
86
  super().__init__(*args, **kwargs, scroll=self.SCROLL)
87
87
 
88
88
  @classmethod
89
- def render(cls, page: ft.Page):
89
+ async def render(cls, page: ft.Page):
90
90
  """
91
91
 
92
92
  Interface entry point. Set relevant callbacks, and add instantiated self to page views
@@ -97,7 +97,9 @@ class Interface(Generic[T], ft.Column):
97
97
  page.theme = cls.get_theme()
98
98
  page.views.clear()
99
99
  context = cls.TypeContext(page=page)
100
- self = cls(context)
100
+
101
+ self = await cls.create(context)
102
+
101
103
  view = self.view
102
104
  if not view:
103
105
  view = self
@@ -107,6 +109,17 @@ class Interface(Generic[T], ft.Column):
107
109
 
108
110
  page.go(cls.ROUTE_ROOT)
109
111
 
112
+ @classmethod
113
+ async def create(cls, context: T) -> Self:
114
+ """
115
+
116
+ Overridable async interface constructor.
117
+
118
+ """
119
+ self = cls(context)
120
+ return self
121
+
122
+
110
123
  @cached_property
111
124
  def view(self):
112
125
  """
@@ -0,0 +1 @@
1
+ 1.3.46
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.44
3
+ Version: 1.3.46
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
@@ -48,6 +48,7 @@ Requires-Dist: fastapi; extra == "api"
48
48
  Requires-Dist: uvicorn[standard]; extra == "api"
49
49
  Requires-Dist: logfire; extra == "api"
50
50
  Requires-Dist: pydantic; extra == "api"
51
+ Requires-Dist: pydantic-extra-types; extra == "api"
51
52
  Requires-Dist: logfire[fastapi]; extra == "api"
52
53
  Provides-Extra: ai
53
54
  Requires-Dist: peft; extra == "ai"
@@ -55,13 +56,16 @@ Requires-Dist: transformers[sentencepiece]; extra == "ai"
55
56
  Requires-Dist: torchvision; extra == "ai"
56
57
  Requires-Dist: torchaudio; extra == "ai"
57
58
  Requires-Dist: pydantic; extra == "ai"
59
+ Requires-Dist: pydantic-extra-types; extra == "ai"
58
60
  Provides-Extra: dm
59
61
  Requires-Dist: pydantic; extra == "dm"
62
+ Requires-Dist: pydantic-extra-types; extra == "dm"
60
63
  Provides-Extra: openai-api
61
64
  Requires-Dist: openai; extra == "openai-api"
62
65
  Provides-Extra: ai-client
63
66
  Requires-Dist: logfire; extra == "ai-client"
64
67
  Requires-Dist: pydantic; extra == "ai-client"
68
+ Requires-Dist: pydantic-extra-types; extra == "ai-client"
65
69
  Requires-Dist: openai; extra == "ai-client"
66
70
  Requires-Dist: pydantic-ai[logfire,openai]; extra == "ai-client"
67
71
  Requires-Dist: ollama; extra == "ai-client"
@@ -97,12 +101,14 @@ Requires-Dist: cachetools; extra == "caching"
97
101
  Provides-Extra: pdf
98
102
  Requires-Dist: pymupdf; extra == "pdf"
99
103
  Requires-Dist: pydantic; extra == "pdf"
104
+ Requires-Dist: pydantic-extra-types; extra == "pdf"
100
105
  Requires-Dist: pymupdf4llm; extra == "pdf"
101
106
  Provides-Extra: debug
102
107
  Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "debug"
103
108
  Provides-Extra: sets
104
109
  Requires-Dist: pydantic-settings; extra == "sets"
105
110
  Requires-Dist: pydantic; extra == "sets"
111
+ Requires-Dist: pydantic-extra-types; extra == "sets"
106
112
  Requires-Dist: yamlscript; extra == "sets"
107
113
  Requires-Dist: pyyaml; extra == "sets"
108
114
  Provides-Extra: path-app
@@ -136,64 +142,65 @@ Provides-Extra: db-document
136
142
  Requires-Dist: beanie[odm]; extra == "db-document"
137
143
  Requires-Dist: motor; extra == "db-document"
138
144
  Provides-Extra: all
139
- Requires-Dist: sre_yield; extra == "all"
140
- Requires-Dist: yamlscript; extra == "all"
141
- Requires-Dist: pyyaml; extra == "all"
142
- Requires-Dist: flet-webview; extra == "all"
143
- Requires-Dist: peft; extra == "all"
144
- Requires-Dist: playwright; extra == "all"
145
- Requires-Dist: httpx_retries; extra == "all"
146
- Requires-Dist: pydantic; extra == "all"
145
+ Requires-Dist: torchaudio; extra == "all"
146
+ Requires-Dist: google-auth; extra == "all"
147
+ Requires-Dist: ollama; extra == "all"
148
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
149
+ Requires-Dist: setuptools; extra == "all"
147
150
  Requires-Dist: flet[all]; extra == "all"
151
+ Requires-Dist: dnspython[doh]; extra == "all"
152
+ Requires-Dist: flet-video; extra == "all"
153
+ Requires-Dist: motor; extra == "all"
148
154
  Requires-Dist: httpx; extra == "all"
149
- Requires-Dist: beanie[odm]; extra == "all"
150
- Requires-Dist: openai; extra == "all"
155
+ Requires-Dist: pydantic; extra == "all"
156
+ Requires-Dist: Unidecode; extra == "all"
157
+ Requires-Dist: huggingface_hub; extra == "all"
158
+ Requires-Dist: pymupdf4llm; extra == "all"
159
+ Requires-Dist: appdirs; extra == "all"
160
+ Requires-Dist: distributed; extra == "all"
161
+ Requires-Dist: playwright; extra == "all"
151
162
  Requires-Dist: cachetools; extra == "all"
152
- Requires-Dist: pymupdf; extra == "all"
153
- Requires-Dist: fastapi; extra == "all"
154
- Requires-Dist: json_repair; extra == "all"
155
- Requires-Dist: deepmerge; extra == "all"
156
- Requires-Dist: ollama; extra == "all"
157
- Requires-Dist: pydantic-settings; extra == "all"
163
+ Requires-Dist: openai; extra == "all"
164
+ Requires-Dist: logfire; extra == "all"
158
165
  Requires-Dist: faker; extra == "all"
159
- Requires-Dist: uvicorn[standard]; extra == "all"
160
- Requires-Dist: bokeh; extra == "all"
161
- Requires-Dist: distributed; extra == "all"
162
- Requires-Dist: semver; extra == "all"
163
- Requires-Dist: appdirs; extra == "all"
166
+ Requires-Dist: logfire[fastapi]; extra == "all"
167
+ Requires-Dist: google-auth-oauthlib; extra == "all"
168
+ Requires-Dist: pydantic-extra-types; extra == "all"
164
169
  Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
170
+ Requires-Dist: deepmerge; extra == "all"
171
+ Requires-Dist: tabulate; extra == "all"
165
172
  Requires-Dist: dask[bag]; extra == "all"
173
+ Requires-Dist: torchvision; extra == "all"
174
+ Requires-Dist: peft; extra == "all"
175
+ Requires-Dist: json_repair; extra == "all"
176
+ Requires-Dist: openpyxl; extra == "all"
177
+ Requires-Dist: google-auth-httplib2; extra == "all"
178
+ Requires-Dist: tokenizers; extra == "all"
179
+ Requires-Dist: flet-webview; extra == "all"
166
180
  Requires-Dist: diskcache; extra == "all"
181
+ Requires-Dist: fastapi; extra == "all"
182
+ Requires-Dist: docker; extra == "all"
183
+ Requires-Dist: pyyaml; extra == "all"
184
+ Requires-Dist: google-api-python-client; extra == "all"
185
+ Requires-Dist: pytest-cov; extra == "all"
186
+ Requires-Dist: semver; extra == "all"
167
187
  Requires-Dist: tinynetrc; extra == "all"
168
- Requires-Dist: tokenizers; extra == "all"
169
- Requires-Dist: setuptools; extra == "all"
188
+ Requires-Dist: uvicorn[standard]; extra == "all"
170
189
  Requires-Dist: html2text; extra == "all"
190
+ Requires-Dist: sre_yield; extra == "all"
191
+ Requires-Dist: pydantic-settings; extra == "all"
192
+ Requires-Dist: filetype; extra == "all"
193
+ Requires-Dist: pandas; extra == "all"
194
+ Requires-Dist: httpx_retries; extra == "all"
171
195
  Requires-Dist: transformers[sentencepiece]; extra == "all"
172
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
196
+ Requires-Dist: beanie[odm]; extra == "all"
197
+ Requires-Dist: pymupdf; extra == "all"
198
+ Requires-Dist: contexttimer; extra == "all"
173
199
  Requires-Dist: sentence_transformers; extra == "all"
174
- Requires-Dist: motor; extra == "all"
175
- Requires-Dist: pytest-cov; extra == "all"
176
- Requires-Dist: docker; extra == "all"
177
- Requires-Dist: logfire; extra == "all"
178
- Requires-Dist: openpyxl; extra == "all"
179
- Requires-Dist: tabulate; extra == "all"
200
+ Requires-Dist: bokeh; extra == "all"
180
201
  Requires-Dist: regex; extra == "all"
181
- Requires-Dist: google-api-python-client; extra == "all"
202
+ Requires-Dist: yamlscript; extra == "all"
182
203
  Requires-Dist: logfire[httpx]; extra == "all"
183
- Requires-Dist: torchaudio; extra == "all"
184
- Requires-Dist: torchvision; extra == "all"
185
- Requires-Dist: google-auth-oauthlib; extra == "all"
186
- Requires-Dist: google-auth-httplib2; extra == "all"
187
- Requires-Dist: filetype; extra == "all"
188
- Requires-Dist: huggingface_hub; extra == "all"
189
- Requires-Dist: logfire[fastapi]; extra == "all"
190
- Requires-Dist: pymupdf4llm; extra == "all"
191
- Requires-Dist: contexttimer; extra == "all"
192
- Requires-Dist: Unidecode; extra == "all"
193
- Requires-Dist: google-auth; extra == "all"
194
- Requires-Dist: flet-video; extra == "all"
195
- Requires-Dist: dnspython[doh]; extra == "all"
196
- Requires-Dist: pandas; extra == "all"
197
204
  Dynamic: author
198
205
  Dynamic: author-email
199
206
  Dynamic: description
@@ -5,79 +5,83 @@ transformers[sentencepiece]
5
5
  torchvision
6
6
  torchaudio
7
7
  pydantic
8
+ pydantic-extra-types
8
9
 
9
10
  [ai.client]
10
11
  logfire
11
12
  pydantic
13
+ pydantic-extra-types
12
14
  openai
13
15
  pydantic-ai[logfire,openai]
14
16
  ollama
15
17
 
16
18
  [all]
17
- sre_yield
18
- yamlscript
19
- pyyaml
20
- flet-webview
21
- peft
22
- playwright
23
- httpx_retries
24
- pydantic
19
+ torchaudio
20
+ google-auth
21
+ ollama
22
+ pydevd-pycharm~=251.25410.159
23
+ setuptools
25
24
  flet[all]
25
+ dnspython[doh]
26
+ flet-video
27
+ motor
26
28
  httpx
27
- beanie[odm]
28
- openai
29
+ pydantic
30
+ Unidecode
31
+ huggingface_hub
32
+ pymupdf4llm
33
+ appdirs
34
+ distributed
35
+ playwright
29
36
  cachetools
30
- pymupdf
31
- fastapi
32
- json_repair
33
- deepmerge
34
- ollama
35
- pydantic-settings
37
+ openai
38
+ logfire
36
39
  faker
37
- uvicorn[standard]
38
- bokeh
39
- distributed
40
- semver
41
- appdirs
40
+ logfire[fastapi]
41
+ google-auth-oauthlib
42
+ pydantic-extra-types
42
43
  pydantic-ai[logfire,openai]
44
+ deepmerge
45
+ tabulate
43
46
  dask[bag]
47
+ torchvision
48
+ peft
49
+ json_repair
50
+ openpyxl
51
+ google-auth-httplib2
52
+ tokenizers
53
+ flet-webview
44
54
  diskcache
55
+ fastapi
56
+ docker
57
+ pyyaml
58
+ google-api-python-client
59
+ pytest-cov
60
+ semver
45
61
  tinynetrc
46
- tokenizers
47
- setuptools
62
+ uvicorn[standard]
48
63
  html2text
64
+ sre_yield
65
+ pydantic-settings
66
+ filetype
67
+ pandas
68
+ httpx_retries
49
69
  transformers[sentencepiece]
50
- pydevd-pycharm~=251.25410.159
70
+ beanie[odm]
71
+ pymupdf
72
+ contexttimer
51
73
  sentence_transformers
52
- motor
53
- pytest-cov
54
- docker
55
- logfire
56
- openpyxl
57
- tabulate
74
+ bokeh
58
75
  regex
59
- google-api-python-client
76
+ yamlscript
60
77
  logfire[httpx]
61
- torchaudio
62
- torchvision
63
- google-auth-oauthlib
64
- google-auth-httplib2
65
- filetype
66
- huggingface_hub
67
- logfire[fastapi]
68
- pymupdf4llm
69
- contexttimer
70
- Unidecode
71
- google-auth
72
- flet-video
73
- dnspython[doh]
74
- pandas
75
78
 
76
79
  [api]
77
80
  fastapi
78
81
  uvicorn[standard]
79
82
  logfire
80
83
  pydantic
84
+ pydantic-extra-types
81
85
  logfire[fastapi]
82
86
 
83
87
  [augmentation]
@@ -102,6 +106,7 @@ pydevd-pycharm~=251.25410.159
102
106
 
103
107
  [dm]
104
108
  pydantic
109
+ pydantic-extra-types
105
110
 
106
111
  [dns]
107
112
  dnspython[doh]
@@ -173,6 +178,7 @@ regex
173
178
  [pdf]
174
179
  pymupdf
175
180
  pydantic
181
+ pydantic-extra-types
176
182
  pymupdf4llm
177
183
 
178
184
  [process]
@@ -190,6 +196,7 @@ openpyxl
190
196
  [sets]
191
197
  pydantic-settings
192
198
  pydantic
199
+ pydantic-extra-types
193
200
  yamlscript
194
201
  pyyaml
195
202
 
@@ -20,7 +20,7 @@ DEPENDENCIES = {
20
20
  'merging': ['deepmerge'],
21
21
  'api': ['fastapi', 'uvicorn[standard]', 'logging', 'dm', 'logfire[fastapi]'],
22
22
  'ai': ['peft', 'transformers[sentencepiece]', 'torchvision', 'torchaudio', 'dm'],
23
- 'dm': ['pydantic'],
23
+ 'dm': ['pydantic', 'pydantic-extra-types'],
24
24
  'openai.api': ['openai'],
25
25
  'ai.client': ['logging', 'dm', 'openai.api', 'pydantic-ai[logfire,openai]', 'ollama'],
26
26
  'json-fix': ['json_repair'],
@@ -1 +0,0 @@
1
- 1.3.44
File without changes
File without changes
File without changes
File without changes