fmtr.tools 1.3.44__py3-none-any.whl → 1.3.46__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.

@@ -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
  """
fmtr/tools/version CHANGED
@@ -1 +1 @@
1
- 1.3.44
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: pydantic; extra == "all"
140
- Requires-Dist: cachetools; extra == "all"
141
- Requires-Dist: filetype; extra == "all"
142
- Requires-Dist: dask[bag]; extra == "all"
143
- Requires-Dist: httpx; extra == "all"
144
- Requires-Dist: peft; extra == "all"
145
- Requires-Dist: deepmerge; extra == "all"
146
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
147
- Requires-Dist: torchaudio; extra == "all"
148
- Requires-Dist: google-auth-oauthlib; extra == "all"
149
- Requires-Dist: logfire[httpx]; extra == "all"
145
+ Requires-Dist: docker; extra == "all"
150
146
  Requires-Dist: google-auth-httplib2; extra == "all"
151
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
152
- Requires-Dist: transformers[sentencepiece]; extra == "all"
153
- Requires-Dist: dnspython[doh]; extra == "all"
154
- Requires-Dist: flet-webview; extra == "all"
147
+ Requires-Dist: logfire[httpx]; extra == "all"
155
148
  Requires-Dist: uvicorn[standard]; extra == "all"
156
- Requires-Dist: pytest-cov; extra == "all"
157
- Requires-Dist: httpx_retries; extra == "all"
158
- Requires-Dist: flet[all]; extra == "all"
159
- Requires-Dist: Unidecode; extra == "all"
149
+ Requires-Dist: pymupdf; extra == "all"
160
150
  Requires-Dist: openpyxl; extra == "all"
161
- Requires-Dist: ollama; extra == "all"
162
- Requires-Dist: json_repair; extra == "all"
151
+ Requires-Dist: diskcache; extra == "all"
152
+ Requires-Dist: beanie[odm]; extra == "all"
153
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
163
154
  Requires-Dist: appdirs; extra == "all"
164
- Requires-Dist: distributed; extra == "all"
165
- Requires-Dist: contexttimer; extra == "all"
166
- Requires-Dist: regex; extra == "all"
155
+ Requires-Dist: json_repair; extra == "all"
156
+ Requires-Dist: pymupdf4llm; extra == "all"
157
+ Requires-Dist: flet[all]; extra == "all"
158
+ Requires-Dist: semver; extra == "all"
159
+ Requires-Dist: google-auth; extra == "all"
160
+ Requires-Dist: flet-video; extra == "all"
161
+ Requires-Dist: pydantic-settings; extra == "all"
162
+ Requires-Dist: httpx; extra == "all"
163
+ Requires-Dist: torchaudio; extra == "all"
164
+ Requires-Dist: torchvision; extra == "all"
165
+ Requires-Dist: httpx_retries; extra == "all"
167
166
  Requires-Dist: faker; extra == "all"
168
- Requires-Dist: diskcache; extra == "all"
167
+ Requires-Dist: logfire; extra == "all"
168
+ Requires-Dist: google-api-python-client; extra == "all"
169
+ Requires-Dist: huggingface_hub; extra == "all"
170
+ Requires-Dist: dask[bag]; extra == "all"
169
171
  Requires-Dist: bokeh; extra == "all"
170
- Requires-Dist: setuptools; extra == "all"
171
- Requires-Dist: semver; extra == "all"
172
172
  Requires-Dist: tokenizers; extra == "all"
173
- Requires-Dist: pydantic-settings; extra == "all"
174
- Requires-Dist: motor; extra == "all"
175
- Requires-Dist: logfire[fastapi]; extra == "all"
176
- Requires-Dist: tabulate; extra == "all"
177
173
  Requires-Dist: sre_yield; extra == "all"
178
- Requires-Dist: beanie[odm]; extra == "all"
179
- Requires-Dist: html2text; extra == "all"
180
- Requires-Dist: tinynetrc; extra == "all"
181
- Requires-Dist: huggingface_hub; extra == "all"
182
- Requires-Dist: fastapi; extra == "all"
183
- Requires-Dist: google-auth; extra == "all"
184
- Requires-Dist: playwright; extra == "all"
185
- Requires-Dist: openai; extra == "all"
186
- Requires-Dist: sentence_transformers; extra == "all"
174
+ Requires-Dist: Unidecode; extra == "all"
175
+ Requires-Dist: ollama; extra == "all"
187
176
  Requires-Dist: yamlscript; extra == "all"
188
- Requires-Dist: torchvision; extra == "all"
177
+ Requires-Dist: peft; extra == "all"
178
+ Requires-Dist: sentence_transformers; extra == "all"
179
+ Requires-Dist: pydantic; extra == "all"
189
180
  Requires-Dist: pandas; extra == "all"
190
- Requires-Dist: pymupdf4llm; extra == "all"
191
- Requires-Dist: logfire; extra == "all"
192
- Requires-Dist: google-api-python-client; extra == "all"
193
- Requires-Dist: flet-video; extra == "all"
181
+ Requires-Dist: playwright; extra == "all"
182
+ Requires-Dist: html2text; extra == "all"
183
+ Requires-Dist: google-auth-oauthlib; extra == "all"
184
+ Requires-Dist: logfire[fastapi]; extra == "all"
185
+ Requires-Dist: pytest-cov; extra == "all"
186
+ Requires-Dist: openai; extra == "all"
187
+ Requires-Dist: tabulate; extra == "all"
188
+ Requires-Dist: filetype; extra == "all"
189
+ Requires-Dist: flet-webview; extra == "all"
190
+ Requires-Dist: dnspython[doh]; extra == "all"
191
+ Requires-Dist: distributed; extra == "all"
192
+ Requires-Dist: cachetools; extra == "all"
193
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
194
+ Requires-Dist: motor; extra == "all"
195
+ Requires-Dist: regex; extra == "all"
196
+ Requires-Dist: setuptools; extra == "all"
194
197
  Requires-Dist: pyyaml; extra == "all"
195
- Requires-Dist: docker; extra == "all"
196
- Requires-Dist: pymupdf; extra == "all"
198
+ Requires-Dist: deepmerge; extra == "all"
199
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
200
+ Requires-Dist: tinynetrc; extra == "all"
201
+ Requires-Dist: contexttimer; extra == "all"
202
+ Requires-Dist: fastapi; extra == "all"
203
+ Requires-Dist: pydantic-extra-types; extra == "all"
197
204
  Dynamic: author
198
205
  Dynamic: author-email
199
206
  Dynamic: description
@@ -46,11 +46,11 @@ fmtr/tools/tabular_tools.py,sha256=tpIpZzYku1HcJrHZJL6BC39LmN3WUWVhFbK2N7nDVmE,1
46
46
  fmtr/tools/tokenization_tools.py,sha256=me-IBzSLyNYejLybwjO9CNB6Mj2NYfKPaOVThXyaGNg,4268
47
47
  fmtr/tools/tools.py,sha256=CAsApa1YwVdNE6H66Vjivs_mXYvOas3rh7fPELAnTpk,795
48
48
  fmtr/tools/unicode_tools.py,sha256=yS_9wpu8ogNoiIL7s1G_8bETFFO_YQlo4LNPv1NLDeY,52
49
- fmtr/tools/version,sha256=uaOSf8iXcHUWYaRBswiwreX6CIytCFIYgFC7iunaEbE,6
49
+ fmtr/tools/version,sha256=u_E8FWzkTNa1j-0kSs9iKvsk35QEXeTaFz7vhDiYkyg,6
50
50
  fmtr/tools/webhook_tools.py,sha256=q3pVJ1NCem2SrMuFcLxiWd7DibFs7Q-uGtojfXd3Qcg,380
51
51
  fmtr/tools/yaml_tools.py,sha256=Bhhyd6GQVKO72Lp8ky7bAUjIB_65Hdh0Q45SKIEe6S8,1901
52
52
  fmtr/tools/ai_tools/__init__.py,sha256=O8VRlPnnQCncg2ZZ2l_VdWLJf4jkKH6dkZFVbv6o7IM,388
53
- fmtr/tools/ai_tools/agentic_tools.py,sha256=-6q9Cp8WUbLu9AmS5SI5R8qtWMp1Ky4rFXMtfLvcQ7A,4791
53
+ fmtr/tools/ai_tools/agentic_tools.py,sha256=aLejbLSmftXQpxnt1Kgia9UcCmj108U1pqOiAUI6l_I,4939
54
54
  fmtr/tools/ai_tools/inference_tools.py,sha256=2UP2gXEyOJUjyyV6zmFIYmIxUsh1rXkRH0IbFvr2bRs,11908
55
55
  fmtr/tools/database_tools/__init__.py,sha256=-YXEs3P4nwg7hdvALpaW4K2Pg9FIc49rD53smqnBgT4,221
56
56
  fmtr/tools/database_tools/document.py,sha256=HPNbINknXDa4PwbNm5KzPxMOcnuqTtWbQWU_eXNohKQ,796
@@ -68,7 +68,7 @@ fmtr/tools/entrypoints/shell_debug.py,sha256=0No3tAg9Ri4_vvSlQCUtAY-11HR0nE45i0V
68
68
  fmtr/tools/interface_tools/__init__.py,sha256=qTN0Hd4A65aWQ4wza48xTNiI2aXBZVEyObdQIsMR2Uk,398
69
69
  fmtr/tools/interface_tools/context.py,sha256=VpoR_ZCndDbwS0AzIPKi1hB2QckwJU5dJqAJavF3mqk,151
70
70
  fmtr/tools/interface_tools/controls.py,sha256=oOl0_sZB8fkvYB-9A5yjArfQmFQLMCsVGgRNrJAFJm4,332
71
- fmtr/tools/interface_tools/interface_tools.py,sha256=6cNHBIYNGtLAK16pk3KMrl_ru39OZ_emH7yXtSkvgFE,3998
71
+ fmtr/tools/interface_tools/interface_tools.py,sha256=i1TqP_67pVGiRZotKdVxyH0b5OFwaTZ_5Tf60gip0ts,4214
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
74
74
  fmtr/tools/path_tools/path_tools.py,sha256=eh30PpmH0wopy0wNWuPT84cmXY1EvqsTSDT7AV_GPOY,8034
@@ -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.44.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
89
- fmtr_tools-1.3.44.dist-info/METADATA,sha256=fYZrC9EV5c-Hlmj7ARiTVuo9UuwNwS2FO1VGnwuMqzM,16436
90
- fmtr_tools-1.3.44.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
91
- fmtr_tools-1.3.44.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
92
- fmtr_tools-1.3.44.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
93
- fmtr_tools-1.3.44.dist-info/RECORD,,
88
+ fmtr_tools-1.3.46.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
89
+ fmtr_tools-1.3.46.dist-info/METADATA,sha256=drWUGIRrob9FL3TRPiQulRiIDq1JvD608GHRgiqBb40,16805
90
+ fmtr_tools-1.3.46.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
91
+ fmtr_tools-1.3.46.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
92
+ fmtr_tools-1.3.46.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
93
+ fmtr_tools-1.3.46.dist-info/RECORD,,