fmtr.tools 1.3.75__py3-none-any.whl → 1.3.77__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.
- fmtr/tools/constants.py +4 -1
- fmtr/tools/data_modelling_tools.py +31 -1
- fmtr/tools/interface_tools/controls.py +70 -4
- fmtr/tools/settings_tools.py +4 -2
- fmtr/tools/setup_tools/setup_tools.py +29 -5
- fmtr/tools/version +1 -1
- {fmtr_tools-1.3.75.dist-info → fmtr_tools-1.3.77.dist-info}/METADATA +49 -52
- {fmtr_tools-1.3.75.dist-info → fmtr_tools-1.3.77.dist-info}/RECORD +12 -12
- {fmtr_tools-1.3.75.dist-info → fmtr_tools-1.3.77.dist-info}/WHEEL +0 -0
- {fmtr_tools-1.3.75.dist-info → fmtr_tools-1.3.77.dist-info}/entry_points.txt +0 -0
- {fmtr_tools-1.3.75.dist-info → fmtr_tools-1.3.77.dist-info}/licenses/LICENSE +0 -0
- {fmtr_tools-1.3.75.dist-info → fmtr_tools-1.3.77.dist-info}/top_level.txt +0 -0
fmtr/tools/constants.py
CHANGED
|
@@ -46,7 +46,10 @@ class Constants:
|
|
|
46
46
|
FILENAME_VERSION = 'version'
|
|
47
47
|
DIR_NAME_HF = 'hf'
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
ENTRYPOINT = 'entrypoint'
|
|
50
|
+
ENTRYPOINTS_DIR = f'{ENTRYPOINT}s'
|
|
51
|
+
ENTRYPOINT_FILE = f'{ENTRYPOINT}.py'
|
|
52
|
+
|
|
50
53
|
PACKAGE_EXCLUDE_DIRS = {'data', 'build', 'dist', '.*', '*egg-info*'}
|
|
51
54
|
INIT_FILENAME = '__init__.py'
|
|
52
55
|
|
|
@@ -182,8 +182,38 @@ class MixinFromJson:
|
|
|
182
182
|
return self
|
|
183
183
|
|
|
184
184
|
|
|
185
|
+
class CliRunMixin:
|
|
186
|
+
"""
|
|
187
|
+
|
|
188
|
+
Mixin only so that it can also be used with Pydantic Settings.
|
|
189
|
+
|
|
190
|
+
TODO Ideally, the run method would be defined on dm.Base and the settings base would just inherit like set.Base(BaseSettings, dm.Base), but this isn't yet tested/could break Fields.
|
|
191
|
+
|
|
192
|
+
"""
|
|
193
|
+
|
|
194
|
+
def run(self):
|
|
195
|
+
"""
|
|
196
|
+
|
|
197
|
+
Behaviour when run as a CLI command, i.e. via Pydantic Settings. Run any subcommands then exit.
|
|
198
|
+
|
|
199
|
+
"""
|
|
200
|
+
|
|
201
|
+
from pydantic_settings import get_subcommand
|
|
202
|
+
|
|
203
|
+
command = get_subcommand(self, is_required=False, cli_exit_on_error=False)
|
|
204
|
+
|
|
205
|
+
if not command:
|
|
206
|
+
return
|
|
207
|
+
|
|
208
|
+
result = command.run()
|
|
209
|
+
if inspect.isawaitable(result):
|
|
210
|
+
import asyncio
|
|
211
|
+
result = asyncio.run(result)
|
|
212
|
+
|
|
213
|
+
raise SystemExit(result)
|
|
214
|
+
|
|
185
215
|
|
|
186
|
-
class Base(BaseModel, MixinFromJson):
|
|
216
|
+
class Base(BaseModel, MixinFromJson, CliRunMixin):
|
|
187
217
|
"""
|
|
188
218
|
|
|
189
219
|
Base model allowing model definition via a list of custom Field objects.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from functools import cached_property
|
|
1
2
|
from typing import Optional
|
|
2
3
|
|
|
3
4
|
import flet as ft
|
|
@@ -127,8 +128,40 @@ class Row(ft.DataRow):
|
|
|
127
128
|
|
|
128
129
|
def __init__(self, series):
|
|
129
130
|
self.series = series
|
|
130
|
-
|
|
131
|
-
|
|
131
|
+
super().__init__(self.cells_controls, color=self.row_color)
|
|
132
|
+
|
|
133
|
+
@cached_property
|
|
134
|
+
def cells_data(self) -> dict[str, list[Cell]]:
|
|
135
|
+
"""
|
|
136
|
+
|
|
137
|
+
Cell controls lookup
|
|
138
|
+
|
|
139
|
+
"""
|
|
140
|
+
data = {}
|
|
141
|
+
for col in self.series.index:
|
|
142
|
+
data.setdefault(col, []).append(self.TypeCell(self.series, col))
|
|
143
|
+
return data
|
|
144
|
+
|
|
145
|
+
@cached_property
|
|
146
|
+
def cells_controls(self) -> list[Cell]:
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
Flat list of controls
|
|
150
|
+
|
|
151
|
+
"""
|
|
152
|
+
controls = []
|
|
153
|
+
for cells in self.cells_data.values():
|
|
154
|
+
for cell in cells:
|
|
155
|
+
controls.append(cell)
|
|
156
|
+
return controls
|
|
157
|
+
|
|
158
|
+
def __getitem__(self, item) -> list[Cell]:
|
|
159
|
+
"""
|
|
160
|
+
|
|
161
|
+
Get cells by column name
|
|
162
|
+
|
|
163
|
+
"""
|
|
164
|
+
return self.cells_data[item]
|
|
132
165
|
|
|
133
166
|
@property
|
|
134
167
|
def row_color(self):
|
|
@@ -195,5 +228,38 @@ class Table(ft.DataTable):
|
|
|
195
228
|
"""
|
|
196
229
|
self.df = df
|
|
197
230
|
columns = [self.TypeColumn(col) for col in df.columns]
|
|
198
|
-
|
|
199
|
-
|
|
231
|
+
super().__init__(columns=columns, rows=self.rows_controls)
|
|
232
|
+
|
|
233
|
+
@cached_property
|
|
234
|
+
def rows_data(self) -> dict[str, list[Row]]:
|
|
235
|
+
"""
|
|
236
|
+
|
|
237
|
+
Row controls lookup
|
|
238
|
+
|
|
239
|
+
"""
|
|
240
|
+
data = {}
|
|
241
|
+
for index, row in self.df.iterrows():
|
|
242
|
+
data.setdefault(index, []).append(self.TypeRow(row))
|
|
243
|
+
return data
|
|
244
|
+
|
|
245
|
+
@cached_property
|
|
246
|
+
def rows_controls(self) -> list[Row]:
|
|
247
|
+
"""
|
|
248
|
+
|
|
249
|
+
Flat list of controls
|
|
250
|
+
|
|
251
|
+
"""
|
|
252
|
+
controls = []
|
|
253
|
+
for rows in self.rows_data.values():
|
|
254
|
+
for row in rows:
|
|
255
|
+
controls.append(row)
|
|
256
|
+
return controls
|
|
257
|
+
|
|
258
|
+
def __getitem__(self, item) -> list[Row]:
|
|
259
|
+
"""
|
|
260
|
+
|
|
261
|
+
Get row by index
|
|
262
|
+
|
|
263
|
+
"""
|
|
264
|
+
|
|
265
|
+
return self.rows_data[item]
|
fmtr/tools/settings_tools.py
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
from pydantic_settings import BaseSettings, PydanticBaseSettingsSource, YamlConfigSettingsSource, EnvSettingsSource, CliSettingsSource
|
|
2
1
|
from typing import ClassVar, Any
|
|
3
2
|
|
|
3
|
+
from pydantic_settings import BaseSettings, PydanticBaseSettingsSource, YamlConfigSettingsSource, EnvSettingsSource, CliSettingsSource
|
|
4
|
+
|
|
5
|
+
from fmtr.tools.data_modelling_tools import CliRunMixin
|
|
4
6
|
from fmtr.tools.path_tools import PackagePaths, Path
|
|
5
7
|
|
|
6
8
|
|
|
@@ -21,7 +23,7 @@ class YamlScriptConfigSettingsSource(YamlConfigSettingsSource):
|
|
|
21
23
|
return data
|
|
22
24
|
|
|
23
25
|
|
|
24
|
-
class Base(BaseSettings):
|
|
26
|
+
class Base(BaseSettings, CliRunMixin):
|
|
25
27
|
"""
|
|
26
28
|
|
|
27
29
|
Base class for settings configuration using Pydantic BaseSettings.
|
|
@@ -88,6 +88,15 @@ class SetupPaths(FromCallerMixin):
|
|
|
88
88
|
return False
|
|
89
89
|
return org
|
|
90
90
|
|
|
91
|
+
@property
|
|
92
|
+
def entrypoint(self) -> Path:
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
Path of base entrypoint module.
|
|
96
|
+
|
|
97
|
+
"""
|
|
98
|
+
return self.path / Constants.ENTRYPOINT_FILE
|
|
99
|
+
|
|
91
100
|
@property
|
|
92
101
|
def entrypoints(self) -> Path:
|
|
93
102
|
"""
|
|
@@ -182,23 +191,38 @@ class Setup(FromCallerMixin):
|
|
|
182
191
|
def console_scripts(self) -> List[str]:
|
|
183
192
|
"""
|
|
184
193
|
|
|
185
|
-
Generate console scripts for any modules in
|
|
194
|
+
Generate console scripts for the `entrypoint` module - and/or any modules in `entrypoints` sub-package.
|
|
186
195
|
|
|
187
196
|
"""
|
|
188
197
|
|
|
189
198
|
if not self.paths.entrypoints.exists():
|
|
190
|
-
|
|
199
|
+
paths_mods = []
|
|
200
|
+
else:
|
|
201
|
+
paths_mods = list(self.paths.entrypoints.iterdir())
|
|
191
202
|
|
|
192
|
-
names_mods = [path.stem for path in
|
|
193
|
-
command_prefix = self.name.replace('.', self.ENTRYPOINT_COMMAND_SEP)
|
|
203
|
+
names_mods = [path.stem for path in paths_mods if path.is_file() and path.name != Constants.INIT_FILENAME]
|
|
194
204
|
command_suffixes = [name_mod.replace(self.ENTRYPOINT_FUNCTION_SEP, self.ENTRYPOINT_COMMAND_SEP) for name_mod in names_mods]
|
|
195
|
-
commands = [f'{
|
|
205
|
+
commands = [f'{self.name_command}-{command_suffix}' for command_suffix in command_suffixes]
|
|
196
206
|
paths = [f'{self.name}.{Constants.ENTRYPOINTS_DIR}.{name_mod}:{self.ENTRYPOINT_FUNC_NAME}' for name_mod in names_mods]
|
|
197
207
|
|
|
208
|
+
if self.paths.entrypoint.exists():
|
|
209
|
+
commands.append(self.name_command)
|
|
210
|
+
path = f'{self.name}.{self.paths.entrypoint.stem}:{self.ENTRYPOINT_FUNC_NAME}'
|
|
211
|
+
paths.append(path)
|
|
212
|
+
|
|
198
213
|
console_scripts = [f'{command} = {path}' for command, path in zip(commands, paths)]
|
|
199
214
|
|
|
200
215
|
return console_scripts
|
|
201
216
|
|
|
217
|
+
@cached_property
|
|
218
|
+
def name_command(self) -> str:
|
|
219
|
+
"""
|
|
220
|
+
|
|
221
|
+
Name as a command, e.g. `fmtr-tools`
|
|
222
|
+
|
|
223
|
+
"""
|
|
224
|
+
return self.name.replace('.', self.ENTRYPOINT_COMMAND_SEP)
|
|
225
|
+
|
|
202
226
|
@property
|
|
203
227
|
def name(self) -> str:
|
|
204
228
|
"""
|
fmtr/tools/version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.3.
|
|
1
|
+
1.3.77
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.77
|
|
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
|
|
@@ -21,7 +21,6 @@ Requires-Dist: pyyaml; extra == "dev"
|
|
|
21
21
|
Requires-Dist: yamlscript; extra == "dev"
|
|
22
22
|
Requires-Dist: pyyaml; extra == "dev"
|
|
23
23
|
Requires-Dist: beanie[odm]; extra == "dev"
|
|
24
|
-
Requires-Dist: motor; extra == "dev"
|
|
25
24
|
Provides-Extra: test
|
|
26
25
|
Requires-Dist: pytest-cov; extra == "test"
|
|
27
26
|
Provides-Extra: yaml
|
|
@@ -166,70 +165,68 @@ Requires-Dist: playwright; extra == "browsers"
|
|
|
166
165
|
Provides-Extra: db
|
|
167
166
|
Provides-Extra: db-document
|
|
168
167
|
Requires-Dist: beanie[odm]; extra == "db-document"
|
|
169
|
-
Requires-Dist: motor; extra == "db-document"
|
|
170
168
|
Provides-Extra: all
|
|
171
|
-
Requires-Dist:
|
|
169
|
+
Requires-Dist: tabulate; extra == "all"
|
|
170
|
+
Requires-Dist: Unidecode; extra == "all"
|
|
171
|
+
Requires-Dist: pycountry; extra == "all"
|
|
172
172
|
Requires-Dist: flet-webview; extra == "all"
|
|
173
|
-
Requires-Dist:
|
|
173
|
+
Requires-Dist: appdirs; extra == "all"
|
|
174
174
|
Requires-Dist: html2text; extra == "all"
|
|
175
|
-
Requires-Dist:
|
|
176
|
-
Requires-Dist:
|
|
175
|
+
Requires-Dist: logfire; extra == "all"
|
|
176
|
+
Requires-Dist: bokeh; extra == "all"
|
|
177
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
177
178
|
Requires-Dist: pytest-cov; extra == "all"
|
|
178
|
-
Requires-Dist:
|
|
179
|
-
Requires-Dist:
|
|
180
|
-
Requires-Dist:
|
|
181
|
-
Requires-Dist:
|
|
182
|
-
Requires-Dist:
|
|
183
|
-
Requires-Dist:
|
|
179
|
+
Requires-Dist: pymupdf; extra == "all"
|
|
180
|
+
Requires-Dist: httpx; extra == "all"
|
|
181
|
+
Requires-Dist: logfire[httpx]; extra == "all"
|
|
182
|
+
Requires-Dist: setuptools; extra == "all"
|
|
183
|
+
Requires-Dist: regex; extra == "all"
|
|
184
|
+
Requires-Dist: python-on-whales; extra == "all"
|
|
185
|
+
Requires-Dist: semver; extra == "all"
|
|
186
|
+
Requires-Dist: pandas; extra == "all"
|
|
184
187
|
Requires-Dist: playwright; extra == "all"
|
|
185
|
-
Requires-Dist: flet[all]; extra == "all"
|
|
186
188
|
Requires-Dist: faker; extra == "all"
|
|
187
|
-
Requires-Dist:
|
|
188
|
-
Requires-Dist:
|
|
189
|
-
Requires-Dist: deepmerge; extra == "all"
|
|
189
|
+
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
190
|
+
Requires-Dist: httpx_retries; extra == "all"
|
|
190
191
|
Requires-Dist: odfpy; extra == "all"
|
|
191
|
-
Requires-Dist: tabulate; extra == "all"
|
|
192
|
-
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
193
|
-
Requires-Dist: semver; extra == "all"
|
|
194
192
|
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
195
|
-
Requires-Dist:
|
|
196
|
-
Requires-Dist:
|
|
197
|
-
Requires-Dist:
|
|
198
|
-
Requires-Dist:
|
|
199
|
-
Requires-Dist:
|
|
200
|
-
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
201
|
-
Requires-Dist: pymupdf; extra == "all"
|
|
202
|
-
Requires-Dist: filetype; extra == "all"
|
|
203
|
-
Requires-Dist: motor; extra == "all"
|
|
204
|
-
Requires-Dist: logfire; extra == "all"
|
|
205
|
-
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
193
|
+
Requires-Dist: pydantic-settings; extra == "all"
|
|
194
|
+
Requires-Dist: pymupdf4llm; extra == "all"
|
|
195
|
+
Requires-Dist: ollama; extra == "all"
|
|
196
|
+
Requires-Dist: pyyaml; extra == "all"
|
|
197
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
206
198
|
Requires-Dist: dask[bag]; extra == "all"
|
|
207
|
-
Requires-Dist:
|
|
208
|
-
Requires-Dist:
|
|
209
|
-
Requires-Dist:
|
|
210
|
-
Requires-Dist:
|
|
199
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
200
|
+
Requires-Dist: deepdiff; extra == "all"
|
|
201
|
+
Requires-Dist: flet[all]; extra == "all"
|
|
202
|
+
Requires-Dist: openai; extra == "all"
|
|
203
|
+
Requires-Dist: dnspython[doh]; extra == "all"
|
|
204
|
+
Requires-Dist: json_repair; extra == "all"
|
|
205
|
+
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
206
|
+
Requires-Dist: pydantic; extra == "all"
|
|
207
|
+
Requires-Dist: flet-video; extra == "all"
|
|
211
208
|
Requires-Dist: sentence_transformers; extra == "all"
|
|
209
|
+
Requires-Dist: google-auth; extra == "all"
|
|
210
|
+
Requires-Dist: filetype; extra == "all"
|
|
211
|
+
Requires-Dist: torchaudio; extra == "all"
|
|
212
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
213
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
214
|
+
Requires-Dist: diskcache; extra == "all"
|
|
215
|
+
Requires-Dist: peft; extra == "all"
|
|
216
|
+
Requires-Dist: fastapi; extra == "all"
|
|
217
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
218
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
219
|
+
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
220
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
221
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
222
|
+
Requires-Dist: cachetools; extra == "all"
|
|
212
223
|
Requires-Dist: huggingface_hub; extra == "all"
|
|
213
|
-
Requires-Dist: httpx; extra == "all"
|
|
214
224
|
Requires-Dist: tinynetrc; extra == "all"
|
|
215
|
-
Requires-Dist:
|
|
216
|
-
Requires-Dist:
|
|
217
|
-
Requires-Dist: torchvision; extra == "all"
|
|
218
|
-
Requires-Dist: pydantic; extra == "all"
|
|
219
|
-
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
225
|
+
Requires-Dist: openpyxl; extra == "all"
|
|
226
|
+
Requires-Dist: beanie[odm]; extra == "all"
|
|
220
227
|
Requires-Dist: distributed; extra == "all"
|
|
221
|
-
Requires-Dist:
|
|
222
|
-
Requires-Dist: deepdiff; extra == "all"
|
|
223
|
-
Requires-Dist: peft; extra == "all"
|
|
228
|
+
Requires-Dist: torchvision; extra == "all"
|
|
224
229
|
Requires-Dist: tokenizers; extra == "all"
|
|
225
|
-
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
226
|
-
Requires-Dist: python-on-whales; extra == "all"
|
|
227
|
-
Requires-Dist: beanie[odm]; extra == "all"
|
|
228
|
-
Requires-Dist: ollama; extra == "all"
|
|
229
|
-
Requires-Dist: torchaudio; extra == "all"
|
|
230
|
-
Requires-Dist: google-api-python-client; extra == "all"
|
|
231
|
-
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
232
|
-
Requires-Dist: pyyaml; extra == "all"
|
|
233
230
|
Dynamic: author
|
|
234
231
|
Dynamic: author-email
|
|
235
232
|
Dynamic: description
|
|
@@ -3,9 +3,9 @@ fmtr/tools/api_tools.py,sha256=RyZUlTefSQozfl-8feZGauyUkwcFd-jU0KtKHFxHea4,2272
|
|
|
3
3
|
fmtr/tools/async_tools.py,sha256=ewz757WcveQJd-G5SVr2JDOQVbdLGecCgl-tsBGVZz4,284
|
|
4
4
|
fmtr/tools/augmentation_tools.py,sha256=-6ESbO4CDlKqVOV1J1V6qBeoBMzbFIinkDHRHnCBej0,55
|
|
5
5
|
fmtr/tools/caching_tools.py,sha256=74p7m2GLFfeP41LX69wxgfkilxEAoWkMIfFMjKsYpyg,4976
|
|
6
|
-
fmtr/tools/constants.py,sha256=
|
|
6
|
+
fmtr/tools/constants.py,sha256=h85mq2JuOsHj-TUKnV0rYTddWFRSRAd4yLyCkpeGjX0,1887
|
|
7
7
|
fmtr/tools/context_tools.py,sha256=4UvIHYgLqAh7dXMX9EBrLEpYp81qfzhSVrkffOSAoGA,350
|
|
8
|
-
fmtr/tools/data_modelling_tools.py,sha256=
|
|
8
|
+
fmtr/tools/data_modelling_tools.py,sha256=c703EhL2ZIj5iN0wjuohakvUnElRblQhvFSLyfRTWwA,7416
|
|
9
9
|
fmtr/tools/dataclass_tools.py,sha256=0Gt6KeLhtPgubo_2tYkIVqB8oQ91Qzag8OAGZDdjvMU,1209
|
|
10
10
|
fmtr/tools/datatype_tools.py,sha256=qFPFrZK70-an4w7H46g8eT5j6Jez--U2XnmFdrQibeE,1983
|
|
11
11
|
fmtr/tools/datetime_tools.py,sha256=L7wmBoQbD9h_pJIL92WQOX32r_vrXgRvE-_0PVPRAGY,232
|
|
@@ -38,14 +38,14 @@ fmtr/tools/process_tools.py,sha256=Ysh5Dk2QFBhXQerArjKdt7xZd3JrN5Ho02AaOjH0Nnw,1
|
|
|
38
38
|
fmtr/tools/profiling_tools.py,sha256=jpXVjaNKPydTasEQVNXvxzGtMhXPit08AnJddkU8uIc,46
|
|
39
39
|
fmtr/tools/random_tools.py,sha256=4VlQdk5THbR8ka4pZaLbk_ZO_4yy6PF_lHZes_rgenY,2223
|
|
40
40
|
fmtr/tools/semantic_tools.py,sha256=cxY9NSAHWj4nEc6Oj4qA1omR3dWbl2OuH7_PkINc6_E,1386
|
|
41
|
-
fmtr/tools/settings_tools.py,sha256=
|
|
41
|
+
fmtr/tools/settings_tools.py,sha256=Uq1-Cdzz83I4dmr62K0L4xFUsUqp0uDI9SeYCa6EHc0,2426
|
|
42
42
|
fmtr/tools/spaces_tools.py,sha256=D_he3mve6DruB3OPS6QyzqD05ChHnRTb4buViKPe7To,1099
|
|
43
43
|
fmtr/tools/string_tools.py,sha256=ZKHBrl2tui9VjWt7qit4UWbvpuzY6zp5ytiQvhlJVG4,5610
|
|
44
44
|
fmtr/tools/tabular_tools.py,sha256=mw6vOij1Ch-pVAyHMPtm5zj__ULZN_TKeBYOfj33wFM,1634
|
|
45
45
|
fmtr/tools/tokenization_tools.py,sha256=me-IBzSLyNYejLybwjO9CNB6Mj2NYfKPaOVThXyaGNg,4268
|
|
46
46
|
fmtr/tools/tools.py,sha256=sLMXk8juOL8_n_D776cJ-kzjyMHqFI_fctDEjy6PIKs,1115
|
|
47
47
|
fmtr/tools/unicode_tools.py,sha256=yS_9wpu8ogNoiIL7s1G_8bETFFO_YQlo4LNPv1NLDeY,52
|
|
48
|
-
fmtr/tools/version,sha256=
|
|
48
|
+
fmtr/tools/version,sha256=na4GGRTt6420NX2ci0UNn8rQr1h_nmfw9KWI9iZSYNE,6
|
|
49
49
|
fmtr/tools/webhook_tools.py,sha256=q3pVJ1NCem2SrMuFcLxiWd7DibFs7Q-uGtojfXd3Qcg,380
|
|
50
50
|
fmtr/tools/yaml_tools.py,sha256=Bhhyd6GQVKO72Lp8ky7bAUjIB_65Hdh0Q45SKIEe6S8,1901
|
|
51
51
|
fmtr/tools/ai_tools/__init__.py,sha256=O8VRlPnnQCncg2ZZ2l_VdWLJf4jkKH6dkZFVbv6o7IM,388
|
|
@@ -67,14 +67,14 @@ fmtr/tools/entrypoints/remote_debug_test.py,sha256=wmKg9o2pQq7eqeHmaO8oviujNgtns
|
|
|
67
67
|
fmtr/tools/entrypoints/shell_debug.py,sha256=0No3tAg9Ri4_vvSlQCUtAY-11HR0nE45i0VVtiAViwY,106
|
|
68
68
|
fmtr/tools/interface_tools/__init__.py,sha256=_bgZRTqmygtYM75o6_zyQRhT_XZnDERZEHmsYVrzyxw,393
|
|
69
69
|
fmtr/tools/interface_tools/context.py,sha256=VpoR_ZCndDbwS0AzIPKi1hB2QckwJU5dJqAJavF3mqk,151
|
|
70
|
-
fmtr/tools/interface_tools/controls.py,sha256=
|
|
70
|
+
fmtr/tools/interface_tools/controls.py,sha256=fsSK74VPdJ9QEo2nAE5Mn0pJOzHbWyWojnQ8Rg7s_Oc,5199
|
|
71
71
|
fmtr/tools/interface_tools/interface_tools.py,sha256=jSRwpdHqOTmNLndE-wFqTQdkT4z2BBdclSxmvs11FnU,4400
|
|
72
72
|
fmtr/tools/path_tools/__init__.py,sha256=XrJXt7Zzo90tYUVksMlDfKkWt775zJ9OSi2NbhnqMDI,459
|
|
73
73
|
fmtr/tools/path_tools/app_path_tools.py,sha256=JrJvtTDd_gkCKcZtBCDTMktsM77PZwGV_hzQX0g5GU8,1722
|
|
74
74
|
fmtr/tools/path_tools/path_tools.py,sha256=s3RTXsjnr2Ah7vXQGjpGs-4DlWaVGvChu0aTFXX3gsE,8867
|
|
75
75
|
fmtr/tools/path_tools/type_path_tools.py,sha256=Zgs-ek-GXRKDIlVDGdg3muB0PIxTg2ba0NeHw6y8FWQ,40
|
|
76
76
|
fmtr/tools/setup_tools/__init__.py,sha256=Ro_Qj3Xndv8Z68DeWPI7c6X-aWKsdDm0KcX_k1xDhgE,394
|
|
77
|
-
fmtr/tools/setup_tools/setup_tools.py,sha256=
|
|
77
|
+
fmtr/tools/setup_tools/setup_tools.py,sha256=ykW7rAv6ixfXdmLKcPgotenEQ94-NSsdFnDUZqgRbpI,10956
|
|
78
78
|
fmtr/tools/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
79
|
fmtr/tools/tests/conftest.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
80
|
fmtr/tools/tests/helpers.py,sha256=N5sf9YoZV93a7tf_UxpLeyQ9vp6Ec0teNIimFDvc054,1091
|
|
@@ -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.
|
|
89
|
-
fmtr_tools-1.3.
|
|
90
|
-
fmtr_tools-1.3.
|
|
91
|
-
fmtr_tools-1.3.
|
|
92
|
-
fmtr_tools-1.3.
|
|
93
|
-
fmtr_tools-1.3.
|
|
88
|
+
fmtr_tools-1.3.77.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
|
|
89
|
+
fmtr_tools-1.3.77.dist-info/METADATA,sha256=hyS9qbFA6ohQeSv_fb31rRWFJvtlMszJx2u3LPH9YwI,17916
|
|
90
|
+
fmtr_tools-1.3.77.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
91
|
+
fmtr_tools-1.3.77.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
|
|
92
|
+
fmtr_tools-1.3.77.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
|
|
93
|
+
fmtr_tools-1.3.77.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|