fmtr.tools 1.3.23__tar.gz → 1.3.25__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 (93) hide show
  1. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/PKG-INFO +43 -43
  2. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/__init__.py +1 -5
  3. fmtr_tools-1.3.25/fmtr/tools/interface_tools/__init__.py +7 -0
  4. fmtr_tools-1.3.25/fmtr/tools/interface_tools/controls.py +73 -0
  5. {fmtr_tools-1.3.23/fmtr/tools → fmtr_tools-1.3.25/fmtr/tools/interface_tools}/interface_tools.py +28 -5
  6. fmtr_tools-1.3.25/fmtr/tools/version +1 -0
  7. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr.tools.egg-info/PKG-INFO +43 -43
  8. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr.tools.egg-info/SOURCES.txt +6 -2
  9. fmtr_tools-1.3.23/fmtr/tools/version +0 -1
  10. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/LICENSE +0 -0
  11. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/README.md +0 -0
  12. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/ai_tools/__init__.py +0 -0
  13. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
  14. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  15. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/api_tools.py +0 -0
  16. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/async_tools.py +0 -0
  17. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/augmentation_tools.py +0 -0
  18. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/caching_tools.py +0 -0
  19. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/constants.py +0 -0
  20. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/data_modelling_tools.py +0 -0
  21. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/dataclass_tools.py +0 -0
  22. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/datatype_tools.py +0 -0
  23. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/debugging_tools.py +0 -0
  24. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/dns_tools/__init__.py +0 -0
  25. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/dns_tools/client.py +0 -0
  26. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/dns_tools/dm.py +0 -0
  27. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/dns_tools/proxy.py +0 -0
  28. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/dns_tools/server.py +0 -0
  29. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/docker_tools.py +0 -0
  30. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/entrypoints/__init__.py +0 -0
  31. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
  32. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/entrypoints/ep_test.py +0 -0
  33. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
  34. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
  35. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/entrypoints/shell_debug.py +0 -0
  36. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/environment_tools.py +0 -0
  37. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/function_tools.py +0 -0
  38. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/google_api_tools.py +0 -0
  39. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/hash_tools.py +0 -0
  40. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/hfh_tools.py +0 -0
  41. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/html_tools.py +0 -0
  42. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/http_tools.py +0 -0
  43. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/import_tools.py +0 -0
  44. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/inspection_tools.py +0 -0
  45. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/iterator_tools.py +0 -0
  46. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/json_fix_tools.py +0 -0
  47. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/json_tools.py +0 -0
  48. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/logging_tools.py +0 -0
  49. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/merging_tools.py +0 -0
  50. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/metric_tools.py +0 -0
  51. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/name_tools.py +0 -0
  52. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/netrc_tools.py +0 -0
  53. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/openai_tools.py +0 -0
  54. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/packaging_tools.py +0 -0
  55. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/parallel_tools.py +0 -0
  56. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/path_tools/__init__.py +0 -0
  57. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/path_tools/app_path_tools.py +0 -0
  58. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/path_tools/path_tools.py +0 -0
  59. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/path_tools/type_path_tools.py +0 -0
  60. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/pattern_tools.py +0 -0
  61. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/pdf_tools.py +0 -0
  62. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/platform_tools.py +0 -0
  63. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/process_tools.py +0 -0
  64. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/profiling_tools.py +0 -0
  65. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/random_tools.py +0 -0
  66. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/semantic_tools.py +0 -0
  67. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/settings_tools.py +0 -0
  68. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/setup_tools/__init__.py +0 -0
  69. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/setup_tools/setup_tools.py +0 -0
  70. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/spaces_tools.py +0 -0
  71. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/string_tools.py +0 -0
  72. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/tabular_tools.py +0 -0
  73. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/tests/__init__.py +0 -0
  74. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/tests/conftest.py +0 -0
  75. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/tests/helpers.py +0 -0
  76. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/tests/test_datatype.py +0 -0
  77. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/tests/test_environment.py +0 -0
  78. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/tests/test_json.py +0 -0
  79. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/tests/test_path.py +0 -0
  80. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/tests/test_yaml.py +0 -0
  81. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/tokenization_tools.py +0 -0
  82. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/tools.py +0 -0
  83. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/unicode_tools.py +0 -0
  84. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/version_tools/__init__.py +0 -0
  85. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/version_tools/version_tools.py +0 -0
  86. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr/tools/yaml_tools.py +0 -0
  87. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  88. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr.tools.egg-info/entry_points.txt +0 -0
  89. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr.tools.egg-info/requires.txt +42 -42
  90. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/fmtr.tools.egg-info/top_level.txt +0 -0
  91. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/pyproject.toml +0 -0
  92. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/setup.cfg +0 -0
  93. {fmtr_tools-1.3.23 → fmtr_tools-1.3.25}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.23
3
+ Version: 1.3.25
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
@@ -126,61 +126,61 @@ Requires-Dist: logfire[httpx]; extra == "http"
126
126
  Provides-Extra: setup
127
127
  Requires-Dist: setuptools; extra == "setup"
128
128
  Provides-Extra: all
129
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
130
- Requires-Dist: semver; extra == "all"
131
- Requires-Dist: deepmerge; extra == "all"
132
- Requires-Dist: distributed; extra == "all"
133
- Requires-Dist: flet-webview; extra == "all"
134
- Requires-Dist: cachetools; extra == "all"
135
- Requires-Dist: tabulate; extra == "all"
129
+ Requires-Dist: sre_yield; extra == "all"
130
+ Requires-Dist: filetype; extra == "all"
136
131
  Requires-Dist: diskcache; extra == "all"
137
- Requires-Dist: tinynetrc; extra == "all"
138
- Requires-Dist: pymupdf; extra == "all"
139
- Requires-Dist: flet[all]; extra == "all"
140
- Requires-Dist: html2text; extra == "all"
132
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
133
+ Requires-Dist: google-api-python-client; extra == "all"
141
134
  Requires-Dist: logfire[httpx]; extra == "all"
142
- Requires-Dist: tokenizers; extra == "all"
143
- Requires-Dist: openai; extra == "all"
144
135
  Requires-Dist: transformers[sentencepiece]; extra == "all"
145
- Requires-Dist: pymupdf4llm; extra == "all"
146
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
147
- Requires-Dist: torchaudio; extra == "all"
148
- Requires-Dist: logfire; extra == "all"
149
- Requires-Dist: docker; extra == "all"
136
+ Requires-Dist: cachetools; extra == "all"
137
+ Requires-Dist: logfire[fastapi]; extra == "all"
150
138
  Requires-Dist: regex; extra == "all"
151
- Requires-Dist: huggingface_hub; extra == "all"
139
+ Requires-Dist: torchvision; extra == "all"
152
140
  Requires-Dist: pytest-cov; extra == "all"
153
- Requires-Dist: fastapi; extra == "all"
154
- Requires-Dist: pandas; extra == "all"
155
141
  Requires-Dist: setuptools; extra == "all"
156
- Requires-Dist: dask[bag]; extra == "all"
157
- Requires-Dist: contexttimer; extra == "all"
158
- Requires-Dist: google-auth-httplib2; extra == "all"
159
- Requires-Dist: faker; extra == "all"
142
+ Requires-Dist: peft; extra == "all"
143
+ Requires-Dist: Unidecode; extra == "all"
144
+ Requires-Dist: httpx_retries; extra == "all"
145
+ Requires-Dist: uvicorn[standard]; extra == "all"
160
146
  Requires-Dist: google-auth-oauthlib; extra == "all"
161
- Requires-Dist: openpyxl; extra == "all"
162
- Requires-Dist: filetype; extra == "all"
163
- Requires-Dist: sre_yield; extra == "all"
164
- Requires-Dist: yamlscript; extra == "all"
165
- Requires-Dist: google-api-python-client; extra == "all"
166
147
  Requires-Dist: json_repair; extra == "all"
167
- Requires-Dist: logfire[fastapi]; extra == "all"
168
- Requires-Dist: dnspython[doh]; extra == "all"
169
- Requires-Dist: appdirs; extra == "all"
148
+ Requires-Dist: pydantic-settings; extra == "all"
170
149
  Requires-Dist: httpx; extra == "all"
171
- Requires-Dist: sentence_transformers; extra == "all"
150
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
151
+ Requires-Dist: tokenizers; extra == "all"
152
+ Requires-Dist: deepmerge; extra == "all"
153
+ Requires-Dist: dask[bag]; extra == "all"
172
154
  Requires-Dist: google-auth; extra == "all"
173
- Requires-Dist: pydantic-settings; extra == "all"
155
+ Requires-Dist: fastapi; extra == "all"
156
+ Requires-Dist: openpyxl; extra == "all"
157
+ Requires-Dist: tabulate; extra == "all"
158
+ Requires-Dist: faker; extra == "all"
159
+ Requires-Dist: tinynetrc; extra == "all"
160
+ Requires-Dist: flet-video; extra == "all"
161
+ Requires-Dist: flet[all]; extra == "all"
162
+ Requires-Dist: pymupdf; extra == "all"
163
+ Requires-Dist: logfire; extra == "all"
164
+ Requires-Dist: yamlscript; extra == "all"
174
165
  Requires-Dist: bokeh; extra == "all"
166
+ Requires-Dist: google-auth-httplib2; extra == "all"
167
+ Requires-Dist: contexttimer; extra == "all"
175
168
  Requires-Dist: ollama; extra == "all"
176
- Requires-Dist: torchvision; extra == "all"
177
- Requires-Dist: peft; extra == "all"
178
- Requires-Dist: uvicorn[standard]; extra == "all"
179
- Requires-Dist: httpx_retries; extra == "all"
180
- Requires-Dist: flet-video; extra == "all"
181
- Requires-Dist: pydantic; extra == "all"
182
169
  Requires-Dist: pyyaml; extra == "all"
183
- Requires-Dist: Unidecode; extra == "all"
170
+ Requires-Dist: torchaudio; extra == "all"
171
+ Requires-Dist: appdirs; extra == "all"
172
+ Requires-Dist: html2text; extra == "all"
173
+ Requires-Dist: semver; extra == "all"
174
+ Requires-Dist: pydantic; extra == "all"
175
+ Requires-Dist: distributed; extra == "all"
176
+ Requires-Dist: flet-webview; extra == "all"
177
+ Requires-Dist: huggingface_hub; extra == "all"
178
+ Requires-Dist: pymupdf4llm; extra == "all"
179
+ Requires-Dist: openai; extra == "all"
180
+ Requires-Dist: sentence_transformers; extra == "all"
181
+ Requires-Dist: pandas; extra == "all"
182
+ Requires-Dist: dnspython[doh]; extra == "all"
183
+ Requires-Dist: docker; extra == "all"
184
184
  Dynamic: author
185
185
  Dynamic: author-email
186
186
  Dynamic: description
@@ -18,6 +18,7 @@ import fmtr.tools.setup_tools as setup
18
18
  import fmtr.tools.string_tools as string
19
19
  from fmtr.tools import ai_tools as ai
20
20
  from fmtr.tools import dns_tools as dns
21
+ from fmtr.tools import interface_tools as interface
21
22
  from fmtr.tools import version_tools as version
22
23
  from fmtr.tools.constants import Constants
23
24
  from fmtr.tools.import_tools import MissingExtraMockModule
@@ -120,11 +121,6 @@ try:
120
121
  except ImportError as exception:
121
122
  html = MissingExtraMockModule('html', exception)
122
123
 
123
- try:
124
- from fmtr.tools import interface_tools as interface
125
- except ImportError as exception:
126
- interface = MissingExtraMockModule('interface', exception)
127
-
128
124
  try:
129
125
  from fmtr.tools import openai_tools as openai
130
126
  except ImportError as exception:
@@ -0,0 +1,7 @@
1
+ from fmtr.tools.import_tools import MissingExtraMockModule
2
+
3
+ try:
4
+ from fmtr.tools.interface_tools.interface_tools import Interface, update
5
+ from fmtr.tools.interface_tools import controls
6
+ except ImportError as exception:
7
+ Interface = update = controls = MissingExtraMockModule('interface', exception)
@@ -0,0 +1,73 @@
1
+ import flet as ft
2
+
3
+
4
+ class ContextRing(ft.ProgressRing):
5
+ """
6
+
7
+ Context manager progress ring.
8
+
9
+ """
10
+
11
+ def __init__(self, *args, **kwargs):
12
+ """
13
+
14
+ Start out not visible.
15
+
16
+ """
17
+ super().__init__(*args, **kwargs, visible=False)
18
+
19
+ def start(self):
20
+ """
21
+
22
+ Update to visible when in context.
23
+
24
+ """
25
+ self.visible = True
26
+ self.page.update()
27
+
28
+ def stop(self):
29
+ """
30
+
31
+ Update to not visible when exiting context.
32
+
33
+ """
34
+ self.visible = False
35
+ self.page.update()
36
+
37
+ def context(self, func):
38
+ """
39
+
40
+ Context manager decorator.
41
+
42
+ """
43
+
44
+ def wrapped(*args, **kwargs):
45
+ with self:
46
+ func(*args, **kwargs)
47
+
48
+ return wrapped
49
+
50
+ def __enter__(self):
51
+ self.start()
52
+ return self
53
+
54
+ def __exit__(self, exc_type, exc_val, exc_tb):
55
+ self.stop()
56
+
57
+
58
+ class ProgressButton(ft.Button):
59
+ """
60
+
61
+ Button with progress ring.
62
+
63
+ """
64
+
65
+ def __init__(self, *args, on_click=None, **kwargs):
66
+ """
67
+
68
+ Run on_click in run context manager
69
+
70
+ """
71
+ self.ring = ContextRing()
72
+ super().__init__(*args, content=self.ring, on_click=self.ring.context(on_click), **kwargs)
73
+ self.context = self.ring.context
@@ -5,6 +5,19 @@ from flet.core.view import View
5
5
  from fmtr.tools.logging_tools import logger
6
6
 
7
7
 
8
+ def update(func):
9
+ """
10
+
11
+ Page update decorator
12
+
13
+ """
14
+
15
+ def wrapped(*args, **kwargs):
16
+ func(*args, **kwargs)
17
+ func.__self__.page.update()
18
+
19
+ return wrapped
20
+
8
21
  class Interface(ft.Column):
9
22
  """
10
23
 
@@ -19,8 +32,6 @@ class Interface(ft.Column):
19
32
  PATH_ASSETS = None
20
33
  ROUTE_ROOT = '/'
21
34
 
22
- THEME = ft.Theme(color_scheme=ft.ColorScheme(primary=ft.Colors.PINK))
23
-
24
35
  @classmethod
25
36
  def render(cls, page: ft.Page):
26
37
  """
@@ -29,7 +40,7 @@ class Interface(ft.Column):
29
40
 
30
41
  """
31
42
  if not page.on_route_change:
32
- page.theme = cls.THEME
43
+ page.theme = cls.get_theme()
33
44
  page.views.clear()
34
45
  page.views.append(cls())
35
46
 
@@ -72,8 +83,20 @@ class Interface(ft.Column):
72
83
  logger.info(f"Launching {cls.TITLE} at {url}")
73
84
  ft.app(cls.render, view=cls.APPVIEW, host=cls.HOST, port=cls.PORT, assets_dir=cls.PATH_ASSETS)
74
85
 
86
+ @classmethod
87
+ def get_theme(self):
88
+ """
89
+
90
+ Overridable theme definition
91
+
92
+ """
93
+ text_style = ft.TextStyle(size=20)
94
+ theme = ft.Theme(
95
+ text_theme=ft.TextTheme(body_large=text_style),
96
+ )
97
+ return theme
75
98
 
76
- class Test(ft.Column):
99
+ class Test(Interface):
77
100
  """
78
101
 
79
102
  Simple test interface.
@@ -86,4 +109,4 @@ class Test(ft.Column):
86
109
  super().__init__(controls=controls)
87
110
 
88
111
  if __name__ == "__main__":
89
- Interface.launch()
112
+ Test.launch()
@@ -0,0 +1 @@
1
+ 1.3.25
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.23
3
+ Version: 1.3.25
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
@@ -126,61 +126,61 @@ Requires-Dist: logfire[httpx]; extra == "http"
126
126
  Provides-Extra: setup
127
127
  Requires-Dist: setuptools; extra == "setup"
128
128
  Provides-Extra: all
129
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
130
- Requires-Dist: semver; extra == "all"
131
- Requires-Dist: deepmerge; extra == "all"
132
- Requires-Dist: distributed; extra == "all"
133
- Requires-Dist: flet-webview; extra == "all"
134
- Requires-Dist: cachetools; extra == "all"
135
- Requires-Dist: tabulate; extra == "all"
129
+ Requires-Dist: sre_yield; extra == "all"
130
+ Requires-Dist: filetype; extra == "all"
136
131
  Requires-Dist: diskcache; extra == "all"
137
- Requires-Dist: tinynetrc; extra == "all"
138
- Requires-Dist: pymupdf; extra == "all"
139
- Requires-Dist: flet[all]; extra == "all"
140
- Requires-Dist: html2text; extra == "all"
132
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
133
+ Requires-Dist: google-api-python-client; extra == "all"
141
134
  Requires-Dist: logfire[httpx]; extra == "all"
142
- Requires-Dist: tokenizers; extra == "all"
143
- Requires-Dist: openai; extra == "all"
144
135
  Requires-Dist: transformers[sentencepiece]; extra == "all"
145
- Requires-Dist: pymupdf4llm; extra == "all"
146
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
147
- Requires-Dist: torchaudio; extra == "all"
148
- Requires-Dist: logfire; extra == "all"
149
- Requires-Dist: docker; extra == "all"
136
+ Requires-Dist: cachetools; extra == "all"
137
+ Requires-Dist: logfire[fastapi]; extra == "all"
150
138
  Requires-Dist: regex; extra == "all"
151
- Requires-Dist: huggingface_hub; extra == "all"
139
+ Requires-Dist: torchvision; extra == "all"
152
140
  Requires-Dist: pytest-cov; extra == "all"
153
- Requires-Dist: fastapi; extra == "all"
154
- Requires-Dist: pandas; extra == "all"
155
141
  Requires-Dist: setuptools; extra == "all"
156
- Requires-Dist: dask[bag]; extra == "all"
157
- Requires-Dist: contexttimer; extra == "all"
158
- Requires-Dist: google-auth-httplib2; extra == "all"
159
- Requires-Dist: faker; extra == "all"
142
+ Requires-Dist: peft; extra == "all"
143
+ Requires-Dist: Unidecode; extra == "all"
144
+ Requires-Dist: httpx_retries; extra == "all"
145
+ Requires-Dist: uvicorn[standard]; extra == "all"
160
146
  Requires-Dist: google-auth-oauthlib; extra == "all"
161
- Requires-Dist: openpyxl; extra == "all"
162
- Requires-Dist: filetype; extra == "all"
163
- Requires-Dist: sre_yield; extra == "all"
164
- Requires-Dist: yamlscript; extra == "all"
165
- Requires-Dist: google-api-python-client; extra == "all"
166
147
  Requires-Dist: json_repair; extra == "all"
167
- Requires-Dist: logfire[fastapi]; extra == "all"
168
- Requires-Dist: dnspython[doh]; extra == "all"
169
- Requires-Dist: appdirs; extra == "all"
148
+ Requires-Dist: pydantic-settings; extra == "all"
170
149
  Requires-Dist: httpx; extra == "all"
171
- Requires-Dist: sentence_transformers; extra == "all"
150
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
151
+ Requires-Dist: tokenizers; extra == "all"
152
+ Requires-Dist: deepmerge; extra == "all"
153
+ Requires-Dist: dask[bag]; extra == "all"
172
154
  Requires-Dist: google-auth; extra == "all"
173
- Requires-Dist: pydantic-settings; extra == "all"
155
+ Requires-Dist: fastapi; extra == "all"
156
+ Requires-Dist: openpyxl; extra == "all"
157
+ Requires-Dist: tabulate; extra == "all"
158
+ Requires-Dist: faker; extra == "all"
159
+ Requires-Dist: tinynetrc; extra == "all"
160
+ Requires-Dist: flet-video; extra == "all"
161
+ Requires-Dist: flet[all]; extra == "all"
162
+ Requires-Dist: pymupdf; extra == "all"
163
+ Requires-Dist: logfire; extra == "all"
164
+ Requires-Dist: yamlscript; extra == "all"
174
165
  Requires-Dist: bokeh; extra == "all"
166
+ Requires-Dist: google-auth-httplib2; extra == "all"
167
+ Requires-Dist: contexttimer; extra == "all"
175
168
  Requires-Dist: ollama; extra == "all"
176
- Requires-Dist: torchvision; extra == "all"
177
- Requires-Dist: peft; extra == "all"
178
- Requires-Dist: uvicorn[standard]; extra == "all"
179
- Requires-Dist: httpx_retries; extra == "all"
180
- Requires-Dist: flet-video; extra == "all"
181
- Requires-Dist: pydantic; extra == "all"
182
169
  Requires-Dist: pyyaml; extra == "all"
183
- Requires-Dist: Unidecode; extra == "all"
170
+ Requires-Dist: torchaudio; extra == "all"
171
+ Requires-Dist: appdirs; extra == "all"
172
+ Requires-Dist: html2text; extra == "all"
173
+ Requires-Dist: semver; extra == "all"
174
+ Requires-Dist: pydantic; extra == "all"
175
+ Requires-Dist: distributed; extra == "all"
176
+ Requires-Dist: flet-webview; extra == "all"
177
+ Requires-Dist: huggingface_hub; extra == "all"
178
+ Requires-Dist: pymupdf4llm; extra == "all"
179
+ Requires-Dist: openai; extra == "all"
180
+ Requires-Dist: sentence_transformers; extra == "all"
181
+ Requires-Dist: pandas; extra == "all"
182
+ Requires-Dist: dnspython[doh]; extra == "all"
183
+ Requires-Dist: docker; extra == "all"
184
184
  Dynamic: author
185
185
  Dynamic: author-email
186
186
  Dynamic: description
@@ -22,7 +22,6 @@ setup.py
22
22
  ./fmtr/tools/http_tools.py
23
23
  ./fmtr/tools/import_tools.py
24
24
  ./fmtr/tools/inspection_tools.py
25
- ./fmtr/tools/interface_tools.py
26
25
  ./fmtr/tools/iterator_tools.py
27
26
  ./fmtr/tools/json_fix_tools.py
28
27
  ./fmtr/tools/json_tools.py
@@ -64,6 +63,9 @@ setup.py
64
63
  ./fmtr/tools/entrypoints/install_yamlscript.py
65
64
  ./fmtr/tools/entrypoints/remote_debug_test.py
66
65
  ./fmtr/tools/entrypoints/shell_debug.py
66
+ ./fmtr/tools/interface_tools/__init__.py
67
+ ./fmtr/tools/interface_tools/controls.py
68
+ ./fmtr/tools/interface_tools/interface_tools.py
67
69
  ./fmtr/tools/path_tools/__init__.py
68
70
  ./fmtr/tools/path_tools/app_path_tools.py
69
71
  ./fmtr/tools/path_tools/path_tools.py
@@ -106,7 +108,6 @@ fmtr/tools/html_tools.py
106
108
  fmtr/tools/http_tools.py
107
109
  fmtr/tools/import_tools.py
108
110
  fmtr/tools/inspection_tools.py
109
- fmtr/tools/interface_tools.py
110
111
  fmtr/tools/iterator_tools.py
111
112
  fmtr/tools/json_fix_tools.py
112
113
  fmtr/tools/json_tools.py
@@ -148,6 +149,9 @@ fmtr/tools/entrypoints/ep_test.py
148
149
  fmtr/tools/entrypoints/install_yamlscript.py
149
150
  fmtr/tools/entrypoints/remote_debug_test.py
150
151
  fmtr/tools/entrypoints/shell_debug.py
152
+ fmtr/tools/interface_tools/__init__.py
153
+ fmtr/tools/interface_tools/controls.py
154
+ fmtr/tools/interface_tools/interface_tools.py
151
155
  fmtr/tools/path_tools/__init__.py
152
156
  fmtr/tools/path_tools/app_path_tools.py
153
157
  fmtr/tools/path_tools/path_tools.py
@@ -1 +0,0 @@
1
- 1.3.23
File without changes
File without changes
@@ -14,61 +14,61 @@ pydantic-ai[logfire,openai]
14
14
  ollama
15
15
 
16
16
  [all]
17
- pydantic-ai[logfire,openai]
18
- semver
19
- deepmerge
20
- distributed
21
- flet-webview
22
- cachetools
23
- tabulate
17
+ sre_yield
18
+ filetype
24
19
  diskcache
25
- tinynetrc
26
- pymupdf
27
- flet[all]
28
- html2text
20
+ pydevd-pycharm~=251.25410.159
21
+ google-api-python-client
29
22
  logfire[httpx]
30
- tokenizers
31
- openai
32
23
  transformers[sentencepiece]
33
- pymupdf4llm
34
- pydevd-pycharm~=251.25410.159
35
- torchaudio
36
- logfire
37
- docker
24
+ cachetools
25
+ logfire[fastapi]
38
26
  regex
39
- huggingface_hub
27
+ torchvision
40
28
  pytest-cov
41
- fastapi
42
- pandas
43
29
  setuptools
44
- dask[bag]
45
- contexttimer
46
- google-auth-httplib2
47
- faker
30
+ peft
31
+ Unidecode
32
+ httpx_retries
33
+ uvicorn[standard]
48
34
  google-auth-oauthlib
49
- openpyxl
50
- filetype
51
- sre_yield
52
- yamlscript
53
- google-api-python-client
54
35
  json_repair
55
- logfire[fastapi]
56
- dnspython[doh]
57
- appdirs
36
+ pydantic-settings
58
37
  httpx
59
- sentence_transformers
38
+ pydantic-ai[logfire,openai]
39
+ tokenizers
40
+ deepmerge
41
+ dask[bag]
60
42
  google-auth
61
- pydantic-settings
43
+ fastapi
44
+ openpyxl
45
+ tabulate
46
+ faker
47
+ tinynetrc
48
+ flet-video
49
+ flet[all]
50
+ pymupdf
51
+ logfire
52
+ yamlscript
62
53
  bokeh
54
+ google-auth-httplib2
55
+ contexttimer
63
56
  ollama
64
- torchvision
65
- peft
66
- uvicorn[standard]
67
- httpx_retries
68
- flet-video
69
- pydantic
70
57
  pyyaml
71
- Unidecode
58
+ torchaudio
59
+ appdirs
60
+ html2text
61
+ semver
62
+ pydantic
63
+ distributed
64
+ flet-webview
65
+ huggingface_hub
66
+ pymupdf4llm
67
+ openai
68
+ sentence_transformers
69
+ pandas
70
+ dnspython[doh]
71
+ docker
72
72
 
73
73
  [api]
74
74
  fastapi
File without changes
File without changes
File without changes