fmtr.tools 1.3.26__tar.gz → 1.3.27__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.
Files changed (94) hide show
  1. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/PKG-INFO +43 -43
  2. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/constants.py +2 -0
  3. fmtr_tools-1.3.27/fmtr/tools/interface_tools/controls.py +137 -0
  4. fmtr_tools-1.3.27/fmtr/tools/version +1 -0
  5. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr.tools.egg-info/PKG-INFO +43 -43
  6. fmtr_tools-1.3.26/fmtr/tools/interface_tools/controls.py +0 -86
  7. fmtr_tools-1.3.26/fmtr/tools/version +0 -1
  8. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/LICENSE +0 -0
  9. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/README.md +0 -0
  10. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/__init__.py +0 -0
  11. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/ai_tools/__init__.py +0 -0
  12. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
  13. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  14. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/api_tools.py +0 -0
  15. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/async_tools.py +0 -0
  16. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/augmentation_tools.py +0 -0
  17. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/caching_tools.py +0 -0
  18. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/data_modelling_tools.py +0 -0
  19. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/dataclass_tools.py +0 -0
  20. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/datatype_tools.py +0 -0
  21. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/debugging_tools.py +0 -0
  22. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/dns_tools/__init__.py +0 -0
  23. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/dns_tools/client.py +0 -0
  24. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/dns_tools/dm.py +0 -0
  25. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/dns_tools/proxy.py +0 -0
  26. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/dns_tools/server.py +0 -0
  27. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/docker_tools.py +0 -0
  28. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/entrypoints/__init__.py +0 -0
  29. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
  30. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/entrypoints/ep_test.py +0 -0
  31. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
  32. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
  33. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/entrypoints/shell_debug.py +0 -0
  34. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/environment_tools.py +0 -0
  35. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/function_tools.py +0 -0
  36. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/google_api_tools.py +0 -0
  37. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/hash_tools.py +0 -0
  38. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/hfh_tools.py +0 -0
  39. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/html_tools.py +0 -0
  40. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/http_tools.py +0 -0
  41. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/import_tools.py +0 -0
  42. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/inspection_tools.py +0 -0
  43. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/interface_tools/__init__.py +0 -0
  44. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/interface_tools/interface_tools.py +0 -0
  45. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/iterator_tools.py +0 -0
  46. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/json_fix_tools.py +0 -0
  47. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/json_tools.py +0 -0
  48. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/logging_tools.py +0 -0
  49. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/merging_tools.py +0 -0
  50. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/metric_tools.py +0 -0
  51. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/name_tools.py +0 -0
  52. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/netrc_tools.py +0 -0
  53. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/openai_tools.py +0 -0
  54. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/packaging_tools.py +0 -0
  55. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/parallel_tools.py +0 -0
  56. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/path_tools/__init__.py +0 -0
  57. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/path_tools/app_path_tools.py +0 -0
  58. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/path_tools/path_tools.py +0 -0
  59. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/path_tools/type_path_tools.py +0 -0
  60. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/pattern_tools.py +0 -0
  61. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/pdf_tools.py +0 -0
  62. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/platform_tools.py +0 -0
  63. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/process_tools.py +0 -0
  64. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/profiling_tools.py +0 -0
  65. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/random_tools.py +0 -0
  66. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/semantic_tools.py +0 -0
  67. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/settings_tools.py +0 -0
  68. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/setup_tools/__init__.py +0 -0
  69. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/setup_tools/setup_tools.py +0 -0
  70. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/spaces_tools.py +0 -0
  71. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/string_tools.py +0 -0
  72. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/tabular_tools.py +0 -0
  73. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/tests/__init__.py +0 -0
  74. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/tests/conftest.py +0 -0
  75. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/tests/helpers.py +0 -0
  76. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/tests/test_datatype.py +0 -0
  77. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/tests/test_environment.py +0 -0
  78. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/tests/test_json.py +0 -0
  79. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/tests/test_path.py +0 -0
  80. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/tests/test_yaml.py +0 -0
  81. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/tokenization_tools.py +0 -0
  82. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/tools.py +0 -0
  83. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/unicode_tools.py +0 -0
  84. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/version_tools/__init__.py +0 -0
  85. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/version_tools/version_tools.py +0 -0
  86. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr/tools/yaml_tools.py +0 -0
  87. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr.tools.egg-info/SOURCES.txt +0 -0
  88. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  89. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr.tools.egg-info/entry_points.txt +0 -0
  90. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr.tools.egg-info/requires.txt +42 -42
  91. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/fmtr.tools.egg-info/top_level.txt +0 -0
  92. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/pyproject.toml +0 -0
  93. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/setup.cfg +0 -0
  94. {fmtr_tools-1.3.26 → fmtr_tools-1.3.27}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.26
3
+ Version: 1.3.27
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: cachetools; extra == "all"
130
- Requires-Dist: json_repair; extra == "all"
131
- Requires-Dist: Unidecode; extra == "all"
132
- Requires-Dist: setuptools; extra == "all"
129
+ Requires-Dist: contexttimer; extra == "all"
130
+ Requires-Dist: semver; extra == "all"
131
+ Requires-Dist: httpx_retries; extra == "all"
133
132
  Requires-Dist: yamlscript; extra == "all"
134
- Requires-Dist: pymupdf4llm; extra == "all"
135
- Requires-Dist: openai; extra == "all"
136
- Requires-Dist: openpyxl; extra == "all"
137
- Requires-Dist: sre_yield; extra == "all"
138
- Requires-Dist: logfire[fastapi]; extra == "all"
139
- Requires-Dist: peft; extra == "all"
140
- Requires-Dist: httpx; extra == "all"
141
- Requires-Dist: docker; extra == "all"
142
- Requires-Dist: google-auth; extra == "all"
143
- Requires-Dist: diskcache; extra == "all"
144
- Requires-Dist: faker; extra == "all"
133
+ Requires-Dist: pyyaml; extra == "all"
145
134
  Requires-Dist: dask[bag]; extra == "all"
135
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
136
+ Requires-Dist: google-auth; extra == "all"
146
137
  Requires-Dist: google-api-python-client; extra == "all"
147
- Requires-Dist: pydantic-settings; extra == "all"
148
- Requires-Dist: semver; extra == "all"
149
- Requires-Dist: tinynetrc; extra == "all"
150
- Requires-Dist: ollama; extra == "all"
151
- Requires-Dist: flet-video; extra == "all"
138
+ Requires-Dist: docker; extra == "all"
139
+ Requires-Dist: flet[all]; extra == "all"
152
140
  Requires-Dist: distributed; extra == "all"
153
- Requires-Dist: pydantic; extra == "all"
154
- Requires-Dist: html2text; extra == "all"
155
- Requires-Dist: appdirs; extra == "all"
156
- Requires-Dist: pytest-cov; extra == "all"
157
141
  Requires-Dist: deepmerge; extra == "all"
142
+ Requires-Dist: regex; extra == "all"
143
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
144
+ Requires-Dist: openai; extra == "all"
145
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
146
+ Requires-Dist: torchvision; extra == "all"
147
+ Requires-Dist: pandas; extra == "all"
148
+ Requires-Dist: bokeh; extra == "all"
158
149
  Requires-Dist: fastapi; extra == "all"
150
+ Requires-Dist: cachetools; extra == "all"
151
+ Requires-Dist: pytest-cov; extra == "all"
152
+ Requires-Dist: peft; extra == "all"
153
+ Requires-Dist: pydantic-settings; extra == "all"
154
+ Requires-Dist: openpyxl; extra == "all"
155
+ Requires-Dist: google-auth-httplib2; extra == "all"
156
+ Requires-Dist: torchaudio; extra == "all"
157
+ Requires-Dist: pydantic; extra == "all"
158
+ Requires-Dist: sre_yield; extra == "all"
159
+ Requires-Dist: appdirs; extra == "all"
160
+ Requires-Dist: huggingface_hub; extra == "all"
161
+ Requires-Dist: tinynetrc; extra == "all"
159
162
  Requires-Dist: flet-webview; extra == "all"
160
- Requires-Dist: tabulate; extra == "all"
161
- Requires-Dist: pyyaml; extra == "all"
162
- Requires-Dist: contexttimer; extra == "all"
163
+ Requires-Dist: pymupdf; extra == "all"
163
164
  Requires-Dist: filetype; extra == "all"
165
+ Requires-Dist: dnspython[doh]; extra == "all"
166
+ Requires-Dist: pymupdf4llm; extra == "all"
164
167
  Requires-Dist: logfire; extra == "all"
165
- Requires-Dist: flet[all]; extra == "all"
166
168
  Requires-Dist: google-auth-oauthlib; extra == "all"
167
- Requires-Dist: bokeh; extra == "all"
168
- Requires-Dist: dnspython[doh]; extra == "all"
169
+ Requires-Dist: tokenizers; extra == "all"
170
+ Requires-Dist: ollama; extra == "all"
171
+ Requires-Dist: diskcache; extra == "all"
172
+ Requires-Dist: faker; extra == "all"
173
+ Requires-Dist: logfire[fastapi]; extra == "all"
174
+ Requires-Dist: setuptools; extra == "all"
169
175
  Requires-Dist: logfire[httpx]; extra == "all"
170
- Requires-Dist: torchvision; extra == "all"
171
- Requires-Dist: pymupdf; extra == "all"
176
+ Requires-Dist: tabulate; extra == "all"
172
177
  Requires-Dist: sentence_transformers; extra == "all"
173
- Requires-Dist: torchaudio; extra == "all"
174
- Requires-Dist: google-auth-httplib2; extra == "all"
178
+ Requires-Dist: html2text; extra == "all"
179
+ Requires-Dist: flet-video; extra == "all"
180
+ Requires-Dist: json_repair; extra == "all"
181
+ Requires-Dist: httpx; extra == "all"
182
+ Requires-Dist: Unidecode; extra == "all"
175
183
  Requires-Dist: uvicorn[standard]; extra == "all"
176
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
177
- Requires-Dist: regex; extra == "all"
178
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
179
- Requires-Dist: pandas; extra == "all"
180
- Requires-Dist: transformers[sentencepiece]; extra == "all"
181
- Requires-Dist: tokenizers; extra == "all"
182
- Requires-Dist: huggingface_hub; extra == "all"
183
- Requires-Dist: httpx_retries; extra == "all"
184
184
  Dynamic: author
185
185
  Dynamic: author-email
186
186
  Dynamic: description
@@ -49,3 +49,5 @@ class Constants:
49
49
  PRODUCTION = "production"
50
50
 
51
51
  INFRA = 'infra'
52
+
53
+ PROMPT_NOT_SPECIFIED = '[None Specified]'
@@ -0,0 +1,137 @@
1
+ import inspect
2
+
3
+ import flet as ft
4
+
5
+
6
+ class ContextBase:
7
+ """
8
+
9
+ A mixin base that can be used as both a synchronous and asynchronous context manager,
10
+ or as a decorator to wrap synchronous or asynchronous functions.
11
+ The control becomes visible when entering the context or invoking the wrapped function,
12
+ and is hidden again when exiting.
13
+
14
+ """
15
+
16
+ def start(self):
17
+ """
18
+
19
+ Show the control and update the page.
20
+ """
21
+
22
+ self.visible = True
23
+ self.page.update()
24
+
25
+ def stop(self):
26
+ """
27
+
28
+ Hide the control and update the page.
29
+
30
+ """
31
+ self.visible = False
32
+ self.page.update()
33
+
34
+ def context(self, func):
35
+ """
36
+
37
+ Decorator that wraps a synchronous or asynchronous function.
38
+ While the function runs, the control is visible.
39
+
40
+ """
41
+ if inspect.iscoroutinefunction(func):
42
+ async def async_wrapped(*args, **kwargs):
43
+ async with self:
44
+ return await func(*args, **kwargs)
45
+
46
+ return async_wrapped
47
+ else:
48
+ def sync_wrapped(*args, **kwargs):
49
+ with self:
50
+ return func(*args, **kwargs)
51
+
52
+ return sync_wrapped
53
+
54
+ def __enter__(self):
55
+ """
56
+
57
+ Enter the control context (sync).
58
+
59
+ """
60
+ self.start()
61
+ return self
62
+
63
+ def __exit__(self, exc_type, exc_val, exc_tb):
64
+ """
65
+
66
+ Exit the control context (sync).
67
+
68
+ """
69
+ self.stop()
70
+
71
+ async def __aenter__(self):
72
+ """
73
+
74
+ Enter the control context (async).
75
+ """
76
+
77
+ result = self.start()
78
+ if inspect.isawaitable(result):
79
+ await result
80
+ return self
81
+
82
+ async def __aexit__(self, exc_type, exc_val, exc_tb):
83
+ """
84
+
85
+ Exit the control context (async).
86
+ """
87
+
88
+ result = self.stop()
89
+ if inspect.isawaitable(result):
90
+ await result
91
+
92
+
93
+ class ContextRing(ft.ProgressRing, ContextBase):
94
+ """
95
+
96
+ A progress ring as a context manager.
97
+
98
+ """
99
+
100
+ def __init__(self, *args, **kwargs):
101
+ """
102
+
103
+ Initialize the progress ring as hidden by default.
104
+
105
+ """
106
+ super().__init__(*args, **kwargs, visible=False)
107
+
108
+ class ProgressButton(ft.Button):
109
+ """
110
+
111
+ Button containing a progress ring.
112
+
113
+ """
114
+
115
+ def __init__(self, *args, on_click=None, ring: ContextRing = None, **kwargs):
116
+ """
117
+
118
+ Run on_click in run context manager
119
+
120
+ """
121
+ self.ring = ring or ContextRing()
122
+
123
+ super().__init__(*args, content=self.ring, on_click=self.ring.context(on_click), **kwargs)
124
+ self.context = self.ring.context
125
+
126
+
127
+ class SliderSteps(ft.Slider):
128
+ """
129
+
130
+ Slider control using step instead of divisions
131
+
132
+ """
133
+
134
+ def __init__(self, *args, min=10, max=100, step=10, **kwargs):
135
+ self.step = step
136
+ divisions = (max - min) // step
137
+ super().__init__(*args, min=min, max=max, divisions=divisions, **kwargs)
@@ -0,0 +1 @@
1
+ 1.3.27
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.26
3
+ Version: 1.3.27
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: cachetools; extra == "all"
130
- Requires-Dist: json_repair; extra == "all"
131
- Requires-Dist: Unidecode; extra == "all"
132
- Requires-Dist: setuptools; extra == "all"
129
+ Requires-Dist: contexttimer; extra == "all"
130
+ Requires-Dist: semver; extra == "all"
131
+ Requires-Dist: httpx_retries; extra == "all"
133
132
  Requires-Dist: yamlscript; extra == "all"
134
- Requires-Dist: pymupdf4llm; extra == "all"
135
- Requires-Dist: openai; extra == "all"
136
- Requires-Dist: openpyxl; extra == "all"
137
- Requires-Dist: sre_yield; extra == "all"
138
- Requires-Dist: logfire[fastapi]; extra == "all"
139
- Requires-Dist: peft; extra == "all"
140
- Requires-Dist: httpx; extra == "all"
141
- Requires-Dist: docker; extra == "all"
142
- Requires-Dist: google-auth; extra == "all"
143
- Requires-Dist: diskcache; extra == "all"
144
- Requires-Dist: faker; extra == "all"
133
+ Requires-Dist: pyyaml; extra == "all"
145
134
  Requires-Dist: dask[bag]; extra == "all"
135
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
136
+ Requires-Dist: google-auth; extra == "all"
146
137
  Requires-Dist: google-api-python-client; extra == "all"
147
- Requires-Dist: pydantic-settings; extra == "all"
148
- Requires-Dist: semver; extra == "all"
149
- Requires-Dist: tinynetrc; extra == "all"
150
- Requires-Dist: ollama; extra == "all"
151
- Requires-Dist: flet-video; extra == "all"
138
+ Requires-Dist: docker; extra == "all"
139
+ Requires-Dist: flet[all]; extra == "all"
152
140
  Requires-Dist: distributed; extra == "all"
153
- Requires-Dist: pydantic; extra == "all"
154
- Requires-Dist: html2text; extra == "all"
155
- Requires-Dist: appdirs; extra == "all"
156
- Requires-Dist: pytest-cov; extra == "all"
157
141
  Requires-Dist: deepmerge; extra == "all"
142
+ Requires-Dist: regex; extra == "all"
143
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
144
+ Requires-Dist: openai; extra == "all"
145
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
146
+ Requires-Dist: torchvision; extra == "all"
147
+ Requires-Dist: pandas; extra == "all"
148
+ Requires-Dist: bokeh; extra == "all"
158
149
  Requires-Dist: fastapi; extra == "all"
150
+ Requires-Dist: cachetools; extra == "all"
151
+ Requires-Dist: pytest-cov; extra == "all"
152
+ Requires-Dist: peft; extra == "all"
153
+ Requires-Dist: pydantic-settings; extra == "all"
154
+ Requires-Dist: openpyxl; extra == "all"
155
+ Requires-Dist: google-auth-httplib2; extra == "all"
156
+ Requires-Dist: torchaudio; extra == "all"
157
+ Requires-Dist: pydantic; extra == "all"
158
+ Requires-Dist: sre_yield; extra == "all"
159
+ Requires-Dist: appdirs; extra == "all"
160
+ Requires-Dist: huggingface_hub; extra == "all"
161
+ Requires-Dist: tinynetrc; extra == "all"
159
162
  Requires-Dist: flet-webview; extra == "all"
160
- Requires-Dist: tabulate; extra == "all"
161
- Requires-Dist: pyyaml; extra == "all"
162
- Requires-Dist: contexttimer; extra == "all"
163
+ Requires-Dist: pymupdf; extra == "all"
163
164
  Requires-Dist: filetype; extra == "all"
165
+ Requires-Dist: dnspython[doh]; extra == "all"
166
+ Requires-Dist: pymupdf4llm; extra == "all"
164
167
  Requires-Dist: logfire; extra == "all"
165
- Requires-Dist: flet[all]; extra == "all"
166
168
  Requires-Dist: google-auth-oauthlib; extra == "all"
167
- Requires-Dist: bokeh; extra == "all"
168
- Requires-Dist: dnspython[doh]; extra == "all"
169
+ Requires-Dist: tokenizers; extra == "all"
170
+ Requires-Dist: ollama; extra == "all"
171
+ Requires-Dist: diskcache; extra == "all"
172
+ Requires-Dist: faker; extra == "all"
173
+ Requires-Dist: logfire[fastapi]; extra == "all"
174
+ Requires-Dist: setuptools; extra == "all"
169
175
  Requires-Dist: logfire[httpx]; extra == "all"
170
- Requires-Dist: torchvision; extra == "all"
171
- Requires-Dist: pymupdf; extra == "all"
176
+ Requires-Dist: tabulate; extra == "all"
172
177
  Requires-Dist: sentence_transformers; extra == "all"
173
- Requires-Dist: torchaudio; extra == "all"
174
- Requires-Dist: google-auth-httplib2; extra == "all"
178
+ Requires-Dist: html2text; extra == "all"
179
+ Requires-Dist: flet-video; extra == "all"
180
+ Requires-Dist: json_repair; extra == "all"
181
+ Requires-Dist: httpx; extra == "all"
182
+ Requires-Dist: Unidecode; extra == "all"
175
183
  Requires-Dist: uvicorn[standard]; extra == "all"
176
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
177
- Requires-Dist: regex; extra == "all"
178
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
179
- Requires-Dist: pandas; extra == "all"
180
- Requires-Dist: transformers[sentencepiece]; extra == "all"
181
- Requires-Dist: tokenizers; extra == "all"
182
- Requires-Dist: huggingface_hub; extra == "all"
183
- Requires-Dist: httpx_retries; extra == "all"
184
184
  Dynamic: author
185
185
  Dynamic: author-email
186
186
  Dynamic: description
@@ -1,86 +0,0 @@
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
74
-
75
-
76
- class SliderSteps(ft.Slider):
77
- """
78
-
79
- Slider control using step instead of divisions
80
-
81
- """
82
-
83
- def __init__(self, *args, min=10, max=100, step=10, **kwargs):
84
- self.step = step
85
- divisions = (max - min) // step
86
- super().__init__(*args, min=min, max=max, divisions=divisions, **kwargs)
@@ -1 +0,0 @@
1
- 1.3.26
File without changes
File without changes
@@ -14,61 +14,61 @@ pydantic-ai[logfire,openai]
14
14
  ollama
15
15
 
16
16
  [all]
17
- cachetools
18
- json_repair
19
- Unidecode
20
- setuptools
17
+ contexttimer
18
+ semver
19
+ httpx_retries
21
20
  yamlscript
22
- pymupdf4llm
23
- openai
24
- openpyxl
25
- sre_yield
26
- logfire[fastapi]
27
- peft
28
- httpx
29
- docker
30
- google-auth
31
- diskcache
32
- faker
21
+ pyyaml
33
22
  dask[bag]
23
+ pydantic-ai[logfire,openai]
24
+ google-auth
34
25
  google-api-python-client
35
- pydantic-settings
36
- semver
37
- tinynetrc
38
- ollama
39
- flet-video
26
+ docker
27
+ flet[all]
40
28
  distributed
41
- pydantic
42
- html2text
43
- appdirs
44
- pytest-cov
45
29
  deepmerge
30
+ regex
31
+ transformers[sentencepiece]
32
+ openai
33
+ pydevd-pycharm~=251.25410.159
34
+ torchvision
35
+ pandas
36
+ bokeh
46
37
  fastapi
38
+ cachetools
39
+ pytest-cov
40
+ peft
41
+ pydantic-settings
42
+ openpyxl
43
+ google-auth-httplib2
44
+ torchaudio
45
+ pydantic
46
+ sre_yield
47
+ appdirs
48
+ huggingface_hub
49
+ tinynetrc
47
50
  flet-webview
48
- tabulate
49
- pyyaml
50
- contexttimer
51
+ pymupdf
51
52
  filetype
53
+ dnspython[doh]
54
+ pymupdf4llm
52
55
  logfire
53
- flet[all]
54
56
  google-auth-oauthlib
55
- bokeh
56
- dnspython[doh]
57
+ tokenizers
58
+ ollama
59
+ diskcache
60
+ faker
61
+ logfire[fastapi]
62
+ setuptools
57
63
  logfire[httpx]
58
- torchvision
59
- pymupdf
64
+ tabulate
60
65
  sentence_transformers
61
- torchaudio
62
- google-auth-httplib2
66
+ html2text
67
+ flet-video
68
+ json_repair
69
+ httpx
70
+ Unidecode
63
71
  uvicorn[standard]
64
- pydantic-ai[logfire,openai]
65
- regex
66
- pydevd-pycharm~=251.25410.159
67
- pandas
68
- transformers[sentencepiece]
69
- tokenizers
70
- huggingface_hub
71
- httpx_retries
72
72
 
73
73
  [api]
74
74
  fastapi
File without changes
File without changes
File without changes