fmtr.tools 1.1.1__py3-none-any.whl → 1.4.37__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.
- fmtr/tools/__init__.py +86 -52
- fmtr/tools/ai_tools/__init__.py +2 -2
- fmtr/tools/ai_tools/agentic_tools.py +151 -32
- fmtr/tools/ai_tools/inference_tools.py +2 -1
- fmtr/tools/api_tools.py +73 -12
- fmtr/tools/async_tools.py +4 -0
- fmtr/tools/av_tools.py +7 -0
- fmtr/tools/caching_tools.py +101 -3
- fmtr/tools/constants.py +41 -0
- fmtr/tools/context_tools.py +23 -0
- fmtr/tools/data_modelling_tools.py +227 -14
- fmtr/tools/database_tools/__init__.py +6 -0
- fmtr/tools/database_tools/document.py +51 -0
- fmtr/tools/datatype_tools.py +22 -2
- fmtr/tools/datetime_tools.py +12 -0
- fmtr/tools/debugging_tools.py +60 -1
- fmtr/tools/dns_tools/__init__.py +7 -0
- fmtr/tools/dns_tools/client.py +97 -0
- fmtr/tools/dns_tools/dm.py +257 -0
- fmtr/tools/dns_tools/proxy.py +66 -0
- fmtr/tools/dns_tools/server.py +138 -0
- fmtr/tools/docker_tools/__init__.py +6 -0
- fmtr/tools/entrypoints/__init__.py +0 -0
- fmtr/tools/entrypoints/cache_hfh.py +3 -0
- fmtr/tools/entrypoints/ep_test.py +2 -0
- fmtr/tools/entrypoints/install_yamlscript.py +8 -0
- fmtr/tools/{console_script_tools.py → entrypoints/remote_debug_test.py} +1 -6
- fmtr/tools/entrypoints/shell_debug.py +8 -0
- fmtr/tools/environment_tools.py +3 -2
- fmtr/tools/function_tools.py +77 -1
- fmtr/tools/google_api_tools.py +15 -4
- fmtr/tools/ha_tools/__init__.py +8 -0
- fmtr/tools/ha_tools/constants.py +9 -0
- fmtr/tools/ha_tools/core.py +16 -0
- fmtr/tools/ha_tools/supervisor.py +16 -0
- fmtr/tools/ha_tools/utils.py +46 -0
- fmtr/tools/http_tools.py +52 -0
- fmtr/tools/inherit_tools.py +27 -0
- fmtr/tools/interface_tools/__init__.py +8 -0
- fmtr/tools/interface_tools/context.py +13 -0
- fmtr/tools/interface_tools/controls.py +354 -0
- fmtr/tools/interface_tools/interface_tools.py +189 -0
- fmtr/tools/iterator_tools.py +122 -1
- fmtr/tools/logging_tools.py +99 -18
- fmtr/tools/mqtt_tools.py +89 -0
- fmtr/tools/networking_tools.py +73 -0
- fmtr/tools/packaging_tools.py +14 -0
- fmtr/tools/path_tools/__init__.py +12 -0
- fmtr/tools/path_tools/app_path_tools.py +40 -0
- fmtr/tools/{path_tools.py → path_tools/path_tools.py} +217 -14
- fmtr/tools/path_tools/type_path_tools.py +3 -0
- fmtr/tools/pattern_tools.py +277 -0
- fmtr/tools/pdf_tools.py +39 -1
- fmtr/tools/settings_tools.py +27 -6
- fmtr/tools/setup_tools/__init__.py +8 -0
- fmtr/tools/setup_tools/setup_tools.py +481 -0
- fmtr/tools/string_tools.py +92 -13
- fmtr/tools/tabular_tools.py +61 -0
- fmtr/tools/tools.py +27 -2
- fmtr/tools/version +1 -1
- fmtr/tools/version_tools/__init__.py +12 -0
- fmtr/tools/version_tools/version_tools.py +51 -0
- fmtr/tools/webhook_tools.py +17 -0
- fmtr/tools/yaml_tools.py +64 -5
- fmtr/tools/youtube_tools.py +128 -0
- fmtr_tools-1.4.37.data/scripts/add-service +14 -0
- fmtr_tools-1.4.37.data/scripts/add-user-path +8 -0
- fmtr_tools-1.4.37.data/scripts/apt-headless +23 -0
- fmtr_tools-1.4.37.data/scripts/compose-update +10 -0
- fmtr_tools-1.4.37.data/scripts/docker-sandbox +43 -0
- fmtr_tools-1.4.37.data/scripts/docker-sandbox-init +23 -0
- fmtr_tools-1.4.37.data/scripts/docs-deploy +6 -0
- fmtr_tools-1.4.37.data/scripts/docs-serve +5 -0
- fmtr_tools-1.4.37.data/scripts/download +9 -0
- fmtr_tools-1.4.37.data/scripts/fmtr-test-script +3 -0
- fmtr_tools-1.4.37.data/scripts/ftu +3 -0
- fmtr_tools-1.4.37.data/scripts/ha-addon-launch +16 -0
- fmtr_tools-1.4.37.data/scripts/install-browser +8 -0
- fmtr_tools-1.4.37.data/scripts/parse-args +43 -0
- fmtr_tools-1.4.37.data/scripts/set-password +5 -0
- fmtr_tools-1.4.37.data/scripts/snips-install +14 -0
- fmtr_tools-1.4.37.data/scripts/ssh-auth +28 -0
- fmtr_tools-1.4.37.data/scripts/ssh-serve +15 -0
- fmtr_tools-1.4.37.data/scripts/vlc-tn +10 -0
- fmtr_tools-1.4.37.data/scripts/vm-launch +17 -0
- {fmtr_tools-1.1.1.dist-info → fmtr_tools-1.4.37.dist-info}/METADATA +178 -54
- fmtr_tools-1.4.37.dist-info/RECORD +122 -0
- {fmtr_tools-1.1.1.dist-info → fmtr_tools-1.4.37.dist-info}/WHEEL +1 -1
- fmtr_tools-1.4.37.dist-info/entry_points.txt +6 -0
- fmtr_tools-1.4.37.dist-info/top_level.txt +1 -0
- fmtr/tools/docker_tools.py +0 -30
- fmtr/tools/interface_tools.py +0 -64
- fmtr/tools/version_tools.py +0 -62
- fmtr_tools-1.1.1.dist-info/RECORD +0 -65
- fmtr_tools-1.1.1.dist-info/entry_points.txt +0 -3
- fmtr_tools-1.1.1.dist-info/top_level.txt +0 -2
- {fmtr_tools-1.1.1.dist-info → fmtr_tools-1.4.37.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.37
|
|
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
|
|
@@ -8,56 +8,26 @@ Author-email: innovative.fowler@mask.pro.fmtr.dev
|
|
|
8
8
|
License: Copyright © 2025 Frontmatter. All rights reserved.
|
|
9
9
|
Description-Content-Type: text/markdown
|
|
10
10
|
License-File: LICENSE
|
|
11
|
+
Provides-Extra: dev
|
|
12
|
+
Requires-Dist: logfire; extra == "dev"
|
|
13
|
+
Requires-Dist: semver; extra == "dev"
|
|
14
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "dev"
|
|
15
|
+
Requires-Dist: pydantic-settings; extra == "dev"
|
|
16
|
+
Requires-Dist: pydantic; extra == "dev"
|
|
17
|
+
Requires-Dist: pydantic-extra-types; extra == "dev"
|
|
18
|
+
Requires-Dist: pycountry; extra == "dev"
|
|
19
|
+
Requires-Dist: yamlscript; extra == "dev"
|
|
20
|
+
Requires-Dist: pyyaml; extra == "dev"
|
|
21
|
+
Requires-Dist: yamlscript; extra == "dev"
|
|
22
|
+
Requires-Dist: pyyaml; extra == "dev"
|
|
23
|
+
Requires-Dist: beanie[odm]; extra == "dev"
|
|
11
24
|
Provides-Extra: test
|
|
12
|
-
Requires-Dist: peft; extra == "test"
|
|
13
|
-
Requires-Dist: flet-webview; extra == "test"
|
|
14
|
-
Requires-Dist: html2text; extra == "test"
|
|
15
|
-
Requires-Dist: deepmerge; extra == "test"
|
|
16
|
-
Requires-Dist: tabulate; extra == "test"
|
|
17
|
-
Requires-Dist: torchvision; extra == "test"
|
|
18
|
-
Requires-Dist: pandas; extra == "test"
|
|
19
|
-
Requires-Dist: distributed; extra == "test"
|
|
20
|
-
Requires-Dist: google-api-python-client; extra == "test"
|
|
21
|
-
Requires-Dist: semver; extra == "test"
|
|
22
|
-
Requires-Dist: pymupdf; extra == "test"
|
|
23
|
-
Requires-Dist: openpyxl; extra == "test"
|
|
24
|
-
Requires-Dist: google-auth; extra == "test"
|
|
25
|
-
Requires-Dist: logfire; extra == "test"
|
|
26
|
-
Requires-Dist: pymupdf4llm; extra == "test"
|
|
27
|
-
Requires-Dist: sentence_transformers; extra == "test"
|
|
28
|
-
Requires-Dist: tinynetrc; extra == "test"
|
|
29
|
-
Requires-Dist: torchaudio; extra == "test"
|
|
30
|
-
Requires-Dist: google-auth-httplib2; extra == "test"
|
|
31
|
-
Requires-Dist: flet-video; extra == "test"
|
|
32
|
-
Requires-Dist: Unidecode; extra == "test"
|
|
33
|
-
Requires-Dist: uvicorn; extra == "test"
|
|
34
|
-
Requires-Dist: pyyaml; extra == "test"
|
|
35
|
-
Requires-Dist: transformers[sentencepiece]; extra == "test"
|
|
36
|
-
Requires-Dist: pydantic-settings; extra == "test"
|
|
37
|
-
Requires-Dist: openai; extra == "test"
|
|
38
|
-
Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
|
|
39
|
-
Requires-Dist: pydantic; extra == "test"
|
|
40
|
-
Requires-Dist: sre_yield; extra == "test"
|
|
41
|
-
Requires-Dist: dask[bag]; extra == "test"
|
|
42
|
-
Requires-Dist: tokenizers; extra == "test"
|
|
43
|
-
Requires-Dist: huggingface_hub; extra == "test"
|
|
44
25
|
Requires-Dist: pytest-cov; extra == "test"
|
|
45
|
-
Requires-Dist: diskcache; extra == "test"
|
|
46
|
-
Requires-Dist: json_repair; extra == "test"
|
|
47
|
-
Requires-Dist: ollama; extra == "test"
|
|
48
|
-
Requires-Dist: bokeh; extra == "test"
|
|
49
|
-
Requires-Dist: google-auth-oauthlib; extra == "test"
|
|
50
|
-
Requires-Dist: contexttimer; extra == "test"
|
|
51
|
-
Requires-Dist: flet[all]; extra == "test"
|
|
52
|
-
Requires-Dist: pydevd-pycharm; extra == "test"
|
|
53
|
-
Requires-Dist: faker; extra == "test"
|
|
54
|
-
Requires-Dist: docker; extra == "test"
|
|
55
|
-
Requires-Dist: fastapi; extra == "test"
|
|
56
26
|
Provides-Extra: yaml
|
|
27
|
+
Requires-Dist: yamlscript; extra == "yaml"
|
|
57
28
|
Requires-Dist: pyyaml; extra == "yaml"
|
|
58
29
|
Provides-Extra: logging
|
|
59
30
|
Requires-Dist: logfire; extra == "logging"
|
|
60
|
-
Requires-Dist: semver; extra == "logging"
|
|
61
31
|
Provides-Extra: parallel
|
|
62
32
|
Requires-Dist: dask[bag]; extra == "parallel"
|
|
63
33
|
Requires-Dist: distributed; extra == "parallel"
|
|
@@ -69,15 +39,15 @@ Requires-Dist: faker; extra == "augmentation"
|
|
|
69
39
|
Requires-Dist: sre_yield; extra == "augmentation"
|
|
70
40
|
Provides-Extra: process
|
|
71
41
|
Requires-Dist: logfire; extra == "process"
|
|
72
|
-
Requires-Dist: semver; extra == "process"
|
|
73
42
|
Provides-Extra: profiling
|
|
74
43
|
Requires-Dist: contexttimer; extra == "profiling"
|
|
75
|
-
Provides-Extra: docker-
|
|
76
|
-
Requires-Dist:
|
|
44
|
+
Provides-Extra: docker-client
|
|
45
|
+
Requires-Dist: python-on-whales; extra == "docker-client"
|
|
77
46
|
Provides-Extra: unicode
|
|
78
47
|
Requires-Dist: Unidecode; extra == "unicode"
|
|
79
48
|
Provides-Extra: version
|
|
80
|
-
|
|
49
|
+
Provides-Extra: version-dev
|
|
50
|
+
Requires-Dist: semver; extra == "version-dev"
|
|
81
51
|
Provides-Extra: spaces
|
|
82
52
|
Requires-Dist: tinynetrc; extra == "spaces"
|
|
83
53
|
Provides-Extra: netrc
|
|
@@ -88,24 +58,31 @@ Provides-Extra: merging
|
|
|
88
58
|
Requires-Dist: deepmerge; extra == "merging"
|
|
89
59
|
Provides-Extra: api
|
|
90
60
|
Requires-Dist: fastapi; extra == "api"
|
|
91
|
-
Requires-Dist: uvicorn; extra == "api"
|
|
61
|
+
Requires-Dist: uvicorn[standard]; extra == "api"
|
|
92
62
|
Requires-Dist: logfire; extra == "api"
|
|
93
|
-
Requires-Dist: semver; extra == "api"
|
|
94
63
|
Requires-Dist: pydantic; extra == "api"
|
|
64
|
+
Requires-Dist: pydantic-extra-types; extra == "api"
|
|
65
|
+
Requires-Dist: pycountry; extra == "api"
|
|
66
|
+
Requires-Dist: logfire[fastapi]; extra == "api"
|
|
95
67
|
Provides-Extra: ai
|
|
96
68
|
Requires-Dist: peft; extra == "ai"
|
|
97
69
|
Requires-Dist: transformers[sentencepiece]; extra == "ai"
|
|
98
70
|
Requires-Dist: torchvision; extra == "ai"
|
|
99
71
|
Requires-Dist: torchaudio; extra == "ai"
|
|
100
72
|
Requires-Dist: pydantic; extra == "ai"
|
|
73
|
+
Requires-Dist: pydantic-extra-types; extra == "ai"
|
|
74
|
+
Requires-Dist: pycountry; extra == "ai"
|
|
101
75
|
Provides-Extra: dm
|
|
102
76
|
Requires-Dist: pydantic; extra == "dm"
|
|
77
|
+
Requires-Dist: pydantic-extra-types; extra == "dm"
|
|
78
|
+
Requires-Dist: pycountry; extra == "dm"
|
|
103
79
|
Provides-Extra: openai-api
|
|
104
80
|
Requires-Dist: openai; extra == "openai-api"
|
|
105
81
|
Provides-Extra: ai-client
|
|
106
82
|
Requires-Dist: logfire; extra == "ai-client"
|
|
107
|
-
Requires-Dist: semver; extra == "ai-client"
|
|
108
83
|
Requires-Dist: pydantic; extra == "ai-client"
|
|
84
|
+
Requires-Dist: pydantic-extra-types; extra == "ai-client"
|
|
85
|
+
Requires-Dist: pycountry; extra == "ai-client"
|
|
109
86
|
Requires-Dist: openai; extra == "ai-client"
|
|
110
87
|
Requires-Dist: pydantic-ai[logfire,openai]; extra == "ai-client"
|
|
111
88
|
Requires-Dist: ollama; extra == "ai-client"
|
|
@@ -116,21 +93,26 @@ Requires-Dist: sentence_transformers; extra == "semantic"
|
|
|
116
93
|
Requires-Dist: pandas; extra == "semantic"
|
|
117
94
|
Requires-Dist: tabulate; extra == "semantic"
|
|
118
95
|
Requires-Dist: openpyxl; extra == "semantic"
|
|
96
|
+
Requires-Dist: odfpy; extra == "semantic"
|
|
97
|
+
Requires-Dist: deepdiff; extra == "semantic"
|
|
119
98
|
Provides-Extra: metric
|
|
120
99
|
Requires-Dist: pandas; extra == "metric"
|
|
121
100
|
Requires-Dist: tabulate; extra == "metric"
|
|
122
101
|
Requires-Dist: openpyxl; extra == "metric"
|
|
102
|
+
Requires-Dist: odfpy; extra == "metric"
|
|
103
|
+
Requires-Dist: deepdiff; extra == "metric"
|
|
123
104
|
Provides-Extra: tabular
|
|
124
105
|
Requires-Dist: pandas; extra == "tabular"
|
|
125
106
|
Requires-Dist: tabulate; extra == "tabular"
|
|
126
107
|
Requires-Dist: openpyxl; extra == "tabular"
|
|
108
|
+
Requires-Dist: odfpy; extra == "tabular"
|
|
109
|
+
Requires-Dist: deepdiff; extra == "tabular"
|
|
127
110
|
Provides-Extra: html
|
|
128
111
|
Requires-Dist: html2text; extra == "html"
|
|
129
112
|
Provides-Extra: interface
|
|
130
113
|
Requires-Dist: flet[all]; extra == "interface"
|
|
131
114
|
Requires-Dist: flet-video; extra == "interface"
|
|
132
115
|
Requires-Dist: flet-webview; extra == "interface"
|
|
133
|
-
Requires-Dist: pydantic; extra == "interface"
|
|
134
116
|
Provides-Extra: google-api
|
|
135
117
|
Requires-Dist: google-auth; extra == "google-api"
|
|
136
118
|
Requires-Dist: google-auth-oauthlib; extra == "google-api"
|
|
@@ -138,15 +120,155 @@ Requires-Dist: google-auth-httplib2; extra == "google-api"
|
|
|
138
120
|
Requires-Dist: google-api-python-client; extra == "google-api"
|
|
139
121
|
Provides-Extra: caching
|
|
140
122
|
Requires-Dist: diskcache; extra == "caching"
|
|
123
|
+
Requires-Dist: cachetools; extra == "caching"
|
|
141
124
|
Provides-Extra: pdf
|
|
142
125
|
Requires-Dist: pymupdf; extra == "pdf"
|
|
143
126
|
Requires-Dist: pydantic; extra == "pdf"
|
|
127
|
+
Requires-Dist: pydantic-extra-types; extra == "pdf"
|
|
128
|
+
Requires-Dist: pycountry; extra == "pdf"
|
|
144
129
|
Requires-Dist: pymupdf4llm; extra == "pdf"
|
|
145
130
|
Provides-Extra: debug
|
|
146
|
-
Requires-Dist: pydevd-pycharm; extra == "debug"
|
|
131
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "debug"
|
|
147
132
|
Provides-Extra: sets
|
|
148
133
|
Requires-Dist: pydantic-settings; extra == "sets"
|
|
149
134
|
Requires-Dist: pydantic; extra == "sets"
|
|
135
|
+
Requires-Dist: pydantic-extra-types; extra == "sets"
|
|
136
|
+
Requires-Dist: pycountry; extra == "sets"
|
|
137
|
+
Requires-Dist: yamlscript; extra == "sets"
|
|
138
|
+
Requires-Dist: pyyaml; extra == "sets"
|
|
139
|
+
Provides-Extra: path-app
|
|
140
|
+
Requires-Dist: appdirs; extra == "path-app"
|
|
141
|
+
Provides-Extra: path-type
|
|
142
|
+
Requires-Dist: filetype; extra == "path-type"
|
|
143
|
+
Provides-Extra: dns
|
|
144
|
+
Requires-Dist: dnspython[doh]; extra == "dns"
|
|
145
|
+
Requires-Dist: httpx; extra == "dns"
|
|
146
|
+
Requires-Dist: httpx_retries; extra == "dns"
|
|
147
|
+
Requires-Dist: logfire; extra == "dns"
|
|
148
|
+
Requires-Dist: logfire[httpx]; extra == "dns"
|
|
149
|
+
Provides-Extra: patterns
|
|
150
|
+
Requires-Dist: regex; extra == "patterns"
|
|
151
|
+
Provides-Extra: http
|
|
152
|
+
Requires-Dist: httpx; extra == "http"
|
|
153
|
+
Requires-Dist: httpx_retries; extra == "http"
|
|
154
|
+
Requires-Dist: logfire; extra == "http"
|
|
155
|
+
Requires-Dist: logfire[httpx]; extra == "http"
|
|
156
|
+
Provides-Extra: setup
|
|
157
|
+
Requires-Dist: setuptools; extra == "setup"
|
|
158
|
+
Provides-Extra: webhook
|
|
159
|
+
Requires-Dist: httpx; extra == "webhook"
|
|
160
|
+
Requires-Dist: httpx_retries; extra == "webhook"
|
|
161
|
+
Requires-Dist: logfire; extra == "webhook"
|
|
162
|
+
Requires-Dist: logfire[httpx]; extra == "webhook"
|
|
163
|
+
Provides-Extra: browsers
|
|
164
|
+
Requires-Dist: playwright; extra == "browsers"
|
|
165
|
+
Provides-Extra: db
|
|
166
|
+
Provides-Extra: db-document
|
|
167
|
+
Requires-Dist: beanie[odm]; extra == "db-document"
|
|
168
|
+
Provides-Extra: mqtt
|
|
169
|
+
Requires-Dist: aiomqtt; extra == "mqtt"
|
|
170
|
+
Provides-Extra: av
|
|
171
|
+
Requires-Dist: av; extra == "av"
|
|
172
|
+
Provides-Extra: ha
|
|
173
|
+
Requires-Dist: dotenv; extra == "ha"
|
|
174
|
+
Provides-Extra: ha-api
|
|
175
|
+
Requires-Dist: dotenv; extra == "ha-api"
|
|
176
|
+
Requires-Dist: homeassistant_api; extra == "ha-api"
|
|
177
|
+
Requires-Dist: aiohasupervisor; extra == "ha-api"
|
|
178
|
+
Provides-Extra: doc
|
|
179
|
+
Requires-Dist: mkdocs; extra == "doc"
|
|
180
|
+
Requires-Dist: mkdocs-material; extra == "doc"
|
|
181
|
+
Requires-Dist: mkdocstrings[python]; extra == "doc"
|
|
182
|
+
Requires-Dist: mike; extra == "doc"
|
|
183
|
+
Requires-Dist: mkdocs-include-dir-to-nav; extra == "doc"
|
|
184
|
+
Provides-Extra: youtube
|
|
185
|
+
Requires-Dist: pytubefix; extra == "youtube"
|
|
186
|
+
Provides-Extra: deploy
|
|
187
|
+
Requires-Dist: setuptools; extra == "deploy"
|
|
188
|
+
Requires-Dist: mkdocs; extra == "deploy"
|
|
189
|
+
Requires-Dist: mkdocs-material; extra == "deploy"
|
|
190
|
+
Requires-Dist: mkdocstrings[python]; extra == "deploy"
|
|
191
|
+
Requires-Dist: mike; extra == "deploy"
|
|
192
|
+
Requires-Dist: mkdocs-include-dir-to-nav; extra == "deploy"
|
|
193
|
+
Requires-Dist: build; extra == "deploy"
|
|
194
|
+
Requires-Dist: twine; extra == "deploy"
|
|
195
|
+
Requires-Dist: packaging; extra == "deploy"
|
|
196
|
+
Provides-Extra: all
|
|
197
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
198
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
199
|
+
Requires-Dist: huggingface_hub; extra == "all"
|
|
200
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
201
|
+
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
202
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
203
|
+
Requires-Dist: json_repair; extra == "all"
|
|
204
|
+
Requires-Dist: flet-video; extra == "all"
|
|
205
|
+
Requires-Dist: distributed; extra == "all"
|
|
206
|
+
Requires-Dist: flet-webview; extra == "all"
|
|
207
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
208
|
+
Requires-Dist: setuptools; extra == "all"
|
|
209
|
+
Requires-Dist: torchvision; extra == "all"
|
|
210
|
+
Requires-Dist: httpx_retries; extra == "all"
|
|
211
|
+
Requires-Dist: logfire[httpx]; extra == "all"
|
|
212
|
+
Requires-Dist: ollama; extra == "all"
|
|
213
|
+
Requires-Dist: dnspython[doh]; extra == "all"
|
|
214
|
+
Requires-Dist: logfire; extra == "all"
|
|
215
|
+
Requires-Dist: filetype; extra == "all"
|
|
216
|
+
Requires-Dist: aiomqtt; extra == "all"
|
|
217
|
+
Requires-Dist: dask[bag]; extra == "all"
|
|
218
|
+
Requires-Dist: tokenizers; extra == "all"
|
|
219
|
+
Requires-Dist: semver; extra == "all"
|
|
220
|
+
Requires-Dist: aiohasupervisor; extra == "all"
|
|
221
|
+
Requires-Dist: pymupdf; extra == "all"
|
|
222
|
+
Requires-Dist: pytest-cov; extra == "all"
|
|
223
|
+
Requires-Dist: pydantic-settings; extra == "all"
|
|
224
|
+
Requires-Dist: mike; extra == "all"
|
|
225
|
+
Requires-Dist: packaging; extra == "all"
|
|
226
|
+
Requires-Dist: diskcache; extra == "all"
|
|
227
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
228
|
+
Requires-Dist: peft; extra == "all"
|
|
229
|
+
Requires-Dist: torchaudio; extra == "all"
|
|
230
|
+
Requires-Dist: faker; extra == "all"
|
|
231
|
+
Requires-Dist: bokeh; extra == "all"
|
|
232
|
+
Requires-Dist: deepdiff; extra == "all"
|
|
233
|
+
Requires-Dist: python-on-whales; extra == "all"
|
|
234
|
+
Requires-Dist: tabulate; extra == "all"
|
|
235
|
+
Requires-Dist: dotenv; extra == "all"
|
|
236
|
+
Requires-Dist: openai; extra == "all"
|
|
237
|
+
Requires-Dist: pycountry; extra == "all"
|
|
238
|
+
Requires-Dist: odfpy; extra == "all"
|
|
239
|
+
Requires-Dist: homeassistant_api; extra == "all"
|
|
240
|
+
Requires-Dist: sentence_transformers; extra == "all"
|
|
241
|
+
Requires-Dist: mkdocs-include-dir-to-nav; extra == "all"
|
|
242
|
+
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
243
|
+
Requires-Dist: google-auth; extra == "all"
|
|
244
|
+
Requires-Dist: build; extra == "all"
|
|
245
|
+
Requires-Dist: fastapi; extra == "all"
|
|
246
|
+
Requires-Dist: tinynetrc; extra == "all"
|
|
247
|
+
Requires-Dist: av; extra == "all"
|
|
248
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
249
|
+
Requires-Dist: pyyaml; extra == "all"
|
|
250
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
251
|
+
Requires-Dist: appdirs; extra == "all"
|
|
252
|
+
Requires-Dist: html2text; extra == "all"
|
|
253
|
+
Requires-Dist: openpyxl; extra == "all"
|
|
254
|
+
Requires-Dist: mkdocstrings[python]; extra == "all"
|
|
255
|
+
Requires-Dist: regex; extra == "all"
|
|
256
|
+
Requires-Dist: mkdocs; extra == "all"
|
|
257
|
+
Requires-Dist: Unidecode; extra == "all"
|
|
258
|
+
Requires-Dist: pandas; extra == "all"
|
|
259
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
260
|
+
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
261
|
+
Requires-Dist: pytubefix; extra == "all"
|
|
262
|
+
Requires-Dist: flet[all]; extra == "all"
|
|
263
|
+
Requires-Dist: playwright; extra == "all"
|
|
264
|
+
Requires-Dist: pymupdf4llm; extra == "all"
|
|
265
|
+
Requires-Dist: httpx; extra == "all"
|
|
266
|
+
Requires-Dist: mkdocs-material; extra == "all"
|
|
267
|
+
Requires-Dist: beanie[odm]; extra == "all"
|
|
268
|
+
Requires-Dist: twine; extra == "all"
|
|
269
|
+
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
270
|
+
Requires-Dist: pydantic; extra == "all"
|
|
271
|
+
Requires-Dist: cachetools; extra == "all"
|
|
150
272
|
Dynamic: author
|
|
151
273
|
Dynamic: author-email
|
|
152
274
|
Dynamic: description
|
|
@@ -284,6 +406,8 @@ The included modules, plus any extra requirements, are as follows:
|
|
|
284
406
|
-
|
|
285
407
|
`tools.PackagePaths` class for managing canonical package paths, like settings files, artifact directories, version files.
|
|
286
408
|
- Extras: None
|
|
409
|
+
- `tools.AppPaths` Wrapper around `appdirs` for application paths.
|
|
410
|
+
- Extras: `paths.app`
|
|
287
411
|
- `tools.platform`: Detecting if host is WSL, Docker etc.
|
|
288
412
|
- Extras: None
|
|
289
413
|
- `tools.ContextProcess`: Manages a function running in a separate process using a context manager. Provides methods to start, stop, and restart the process, with configurable restart delays. Useful for ensuring clean process management and automatic stopping when the context manager exits.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
fmtr/tools/__init__.py,sha256=RPK4tMye_0jpH8Jjs7HaXfyrK8fb13-Phsrb2a3_US0,6471
|
|
2
|
+
fmtr/tools/api_tools.py,sha256=ltSn66kMH93zgBq5Yobiw9dENdCzduYzPKnVc9IV6yk,3441
|
|
3
|
+
fmtr/tools/async_tools.py,sha256=p6_rJEu8iY5i1MCuq6vHfGv24Ql-rfkW1L6Etsa7kNY,340
|
|
4
|
+
fmtr/tools/augmentation_tools.py,sha256=-6ESbO4CDlKqVOV1J1V6qBeoBMzbFIinkDHRHnCBej0,55
|
|
5
|
+
fmtr/tools/av_tools.py,sha256=0kmhdm0kwIWrAsMSrXl5aLxFFa0e3ypzybDYg9nvF7M,97
|
|
6
|
+
fmtr/tools/caching_tools.py,sha256=74p7m2GLFfeP41LX69wxgfkilxEAoWkMIfFMjKsYpyg,4976
|
|
7
|
+
fmtr/tools/constants.py,sha256=IXow6TDSFVSknOJrL5VcAJsTTmzF6o5FRN7lc_clRtg,2071
|
|
8
|
+
fmtr/tools/context_tools.py,sha256=4UvIHYgLqAh7dXMX9EBrLEpYp81qfzhSVrkffOSAoGA,350
|
|
9
|
+
fmtr/tools/data_modelling_tools.py,sha256=c703EhL2ZIj5iN0wjuohakvUnElRblQhvFSLyfRTWwA,7416
|
|
10
|
+
fmtr/tools/dataclass_tools.py,sha256=0Gt6KeLhtPgubo_2tYkIVqB8oQ91Qzag8OAGZDdjvMU,1209
|
|
11
|
+
fmtr/tools/datatype_tools.py,sha256=V-SeE4fkDJ1rtNha6kJBupJ7lW4t2XOs3bUoSk3RQv0,1989
|
|
12
|
+
fmtr/tools/datetime_tools.py,sha256=L7wmBoQbD9h_pJIL92WQOX32r_vrXgRvE-_0PVPRAGY,232
|
|
13
|
+
fmtr/tools/debugging_tools.py,sha256=q1TXISwOD43uc5RQrXqDSKYbNZh4AiheVmBUfga-EsA,2085
|
|
14
|
+
fmtr/tools/environment_tools.py,sha256=fPMNgITuc8l866i4s6EnXDmi0gc4CmM5EudC8feojK0,1913
|
|
15
|
+
fmtr/tools/function_tools.py,sha256=O1K8HwftXfzrBblNZrj-BhWNbr4poJghrXNr2mFcylI,2831
|
|
16
|
+
fmtr/tools/google_api_tools.py,sha256=QUungBoj5SCaBQnMjn9QpXtWmdNCplbw8ZPK9LXi77U,1691
|
|
17
|
+
fmtr/tools/hash_tools.py,sha256=tr4HXpeT6rRrDk6TvMlRPUSrLRRaov96y128OI2tzsc,729
|
|
18
|
+
fmtr/tools/hfh_tools.py,sha256=DCDIWuWlhtmIGCtp9cLcOTTEw_4yN_NocLX8w5NZsbk,2384
|
|
19
|
+
fmtr/tools/html_tools.py,sha256=0nN8Nz5HtG9bXyApYfHSKEivLlxjsm3Gn6Mg2TK0brI,394
|
|
20
|
+
fmtr/tools/http_tools.py,sha256=nhPL1sfQzUBZ025CdMv_23k8wYkXMQlNG298Q450PLA,985
|
|
21
|
+
fmtr/tools/import_tools.py,sha256=XJmiWLukRncJAcaGReDn4jIz1_IpVBjfYCQHH1hIg7c,588
|
|
22
|
+
fmtr/tools/inherit_tools.py,sha256=gTGL4mRm5RsbFW76s25AbuAJ2vlymbh1c8Q4Hl2uJGU,646
|
|
23
|
+
fmtr/tools/inspection_tools.py,sha256=tLTRvzy9XVomQPi0dfnF_cgwc7KiDVZAr7gPTk4S_bQ,278
|
|
24
|
+
fmtr/tools/iterator_tools.py,sha256=dnweDOKrQZdMb3aSbplPg8_gdpLicrFoVwVOnpeyrDw,3771
|
|
25
|
+
fmtr/tools/json_fix_tools.py,sha256=vNSlswVQnujPmKEqDjFJcO901mjMyv59q3awsT7mlhs,477
|
|
26
|
+
fmtr/tools/json_tools.py,sha256=WkFc5q7oqMtcFejhN1K5zQFULa9TdLOup83Fr0saDRY,348
|
|
27
|
+
fmtr/tools/logging_tools.py,sha256=F8amUNu2xWYez23tMpOqJxp-UcDP421_zG46kBt8B0E,3444
|
|
28
|
+
fmtr/tools/merging_tools.py,sha256=KDxCEFJEQJEwGw1qGKAgR55uUE2X2S5NWLKcfHRmX_k,227
|
|
29
|
+
fmtr/tools/metric_tools.py,sha256=Lvia5CGFRIfrDFA8s37btIfTU5zHbo04cPJdAMtbndQ,272
|
|
30
|
+
fmtr/tools/mqtt_tools.py,sha256=ySUUcOVdRY3Sk1fCjXCpNe5VcllAECzqi4spLg-NR8o,2137
|
|
31
|
+
fmtr/tools/name_tools.py,sha256=5CB_phqhHjl66iI8oLxOGPF2odC1apdul-M8Fv2xBhs,5514
|
|
32
|
+
fmtr/tools/netrc_tools.py,sha256=PpNpz_mWlQi6VHGromKwFfTyLpHUXsd4LY6-OKLCbeI,376
|
|
33
|
+
fmtr/tools/networking_tools.py,sha256=emrJoBBD805arXteSTcDkOrnAllgKA6hkiBBFfD8JYg,1464
|
|
34
|
+
fmtr/tools/openai_tools.py,sha256=6SUgejgzUzmlKKct2_ePXntvMegu3FJgfk9x7aqtqYc,742
|
|
35
|
+
fmtr/tools/packaging_tools.py,sha256=FlgOTnDRHZWQL2iR-wucTsyGEHRE-MlddKL30MPmUqE,253
|
|
36
|
+
fmtr/tools/parallel_tools.py,sha256=QEb_gN1StkxsqYaH4HSjiJX8Y3gpb2uKNsOzG4uFpaM,3071
|
|
37
|
+
fmtr/tools/pattern_tools.py,sha256=VQ5wmZdS-NAlKmQg6KK12ovQIhiiPQVJm55uIXR3Dc4,6659
|
|
38
|
+
fmtr/tools/pdf_tools.py,sha256=6XQCNyytQSnJSc38gdMOFVcPXnPwfOlk6y4QVqmJLp8,4810
|
|
39
|
+
fmtr/tools/platform_tools.py,sha256=7p69CmAHe_sF68Fx9uVhns1k5EewTHTWgUYzkl6ZQKA,308
|
|
40
|
+
fmtr/tools/process_tools.py,sha256=Ysh5Dk2QFBhXQerArjKdt7xZd3JrN5Ho02AaOjH0Nnw,1425
|
|
41
|
+
fmtr/tools/profiling_tools.py,sha256=jpXVjaNKPydTasEQVNXvxzGtMhXPit08AnJddkU8uIc,46
|
|
42
|
+
fmtr/tools/random_tools.py,sha256=4VlQdk5THbR8ka4pZaLbk_ZO_4yy6PF_lHZes_rgenY,2223
|
|
43
|
+
fmtr/tools/semantic_tools.py,sha256=cxY9NSAHWj4nEc6Oj4qA1omR3dWbl2OuH7_PkINc6_E,1386
|
|
44
|
+
fmtr/tools/settings_tools.py,sha256=fkHQ1VTc4s0Ulm9hUGDV6DWOzfeCGJ6VX0rNcxw3464,2599
|
|
45
|
+
fmtr/tools/spaces_tools.py,sha256=D_he3mve6DruB3OPS6QyzqD05ChHnRTb4buViKPe7To,1099
|
|
46
|
+
fmtr/tools/string_tools.py,sha256=ZKHBrl2tui9VjWt7qit4UWbvpuzY6zp5ytiQvhlJVG4,5610
|
|
47
|
+
fmtr/tools/tabular_tools.py,sha256=mw6vOij1Ch-pVAyHMPtm5zj__ULZN_TKeBYOfj33wFM,1634
|
|
48
|
+
fmtr/tools/tokenization_tools.py,sha256=me-IBzSLyNYejLybwjO9CNB6Mj2NYfKPaOVThXyaGNg,4268
|
|
49
|
+
fmtr/tools/tools.py,sha256=sLMXk8juOL8_n_D776cJ-kzjyMHqFI_fctDEjy6PIKs,1115
|
|
50
|
+
fmtr/tools/unicode_tools.py,sha256=yS_9wpu8ogNoiIL7s1G_8bETFFO_YQlo4LNPv1NLDeY,52
|
|
51
|
+
fmtr/tools/version,sha256=Xp4FNom2jzlPk0gOc5UnCGbGlm-HVfZHCd_1__O5YpI,6
|
|
52
|
+
fmtr/tools/webhook_tools.py,sha256=q3pVJ1NCem2SrMuFcLxiWd7DibFs7Q-uGtojfXd3Qcg,380
|
|
53
|
+
fmtr/tools/yaml_tools.py,sha256=CxS1YLu2zJyt6ovqspzbIBK_M0wJjRVG2kvTmkVRtcE,1846
|
|
54
|
+
fmtr/tools/youtube_tools.py,sha256=siGdgsuOIR87oHFK2tt7oRniPedT2ugDNEvX4MX_ap8,3180
|
|
55
|
+
fmtr/tools/ai_tools/__init__.py,sha256=O8VRlPnnQCncg2ZZ2l_VdWLJf4jkKH6dkZFVbv6o7IM,388
|
|
56
|
+
fmtr/tools/ai_tools/agentic_tools.py,sha256=Zj6WcbDc1yLFi3raTSD0BeOkWR3l5RmmccFYGx8-0XE,5534
|
|
57
|
+
fmtr/tools/ai_tools/inference_tools.py,sha256=2UP2gXEyOJUjyyV6zmFIYmIxUsh1rXkRH0IbFvr2bRs,11908
|
|
58
|
+
fmtr/tools/database_tools/__init__.py,sha256=-YXEs3P4nwg7hdvALpaW4K2Pg9FIc49rD53smqnBgT4,221
|
|
59
|
+
fmtr/tools/database_tools/document.py,sha256=wn1JPqFiplRx16qUgOs2tWtEZGaT4L99CTjp_MhpjqY,1198
|
|
60
|
+
fmtr/tools/dns_tools/__init__.py,sha256=HP0Qcwyi1C6vBH_ejuWrGJOWdp-GZ_cmH-QofjD6Mmg,266
|
|
61
|
+
fmtr/tools/dns_tools/client.py,sha256=IBbd7Xgx9ExTn_EPoL7ts9JfXokHHuOiD9m4K6tl1Q0,2817
|
|
62
|
+
fmtr/tools/dns_tools/dm.py,sha256=Lp1HaF7rpVtL_Ji4Bd32B29105H9ZKQ8AcVj_AB7nsA,6678
|
|
63
|
+
fmtr/tools/dns_tools/proxy.py,sha256=gCWfH1pyWjj8xnJ8Pm4id7bsBWqcar3dQ9PeP5XjRXY,1624
|
|
64
|
+
fmtr/tools/dns_tools/server.py,sha256=_Y5w5bGHhBI32fYWl-SmnOALAw_eF9fEbmrOqqgzSq8,4263
|
|
65
|
+
fmtr/tools/docker_tools/__init__.py,sha256=NzUFbOX3eQCJ9ex0YL7xZPKLb65HngvZCBRTz839A8Y,222
|
|
66
|
+
fmtr/tools/entrypoints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
+
fmtr/tools/entrypoints/cache_hfh.py,sha256=fQNs4J9twQuZH_Yj98-oOvEX7-LrSUP3kO8nzw2HrHs,60
|
|
68
|
+
fmtr/tools/entrypoints/ep_test.py,sha256=B8HfWISfSgw_xVX475CbJGh_QnpOe9MH65H8qGjTWbY,46
|
|
69
|
+
fmtr/tools/entrypoints/install_yamlscript.py,sha256=D9-QET4uPkwMvOBQJAgzn1fYb7Z7VAgZzFdHSAXc3Qc,116
|
|
70
|
+
fmtr/tools/entrypoints/remote_debug_test.py,sha256=wmKg9o2pQq7eqeHmaO8oviujNgtnsCVEXOdXLIcQWs4,123
|
|
71
|
+
fmtr/tools/entrypoints/shell_debug.py,sha256=0No3tAg9Ri4_vvSlQCUtAY-11HR0nE45i0VVtiAViwY,106
|
|
72
|
+
fmtr/tools/ha_tools/__init__.py,sha256=aHXaEjAXhxFbatU6P07qDgf1gA2I2SnJYk8m-laOX70,323
|
|
73
|
+
fmtr/tools/ha_tools/constants.py,sha256=_W_X9NCjW40MofUFwOpUokOUTlxOv7wOqv5pttJUDiQ,346
|
|
74
|
+
fmtr/tools/ha_tools/core.py,sha256=q0iRuTlv71I9_UrNsuAAEdCBZCa4VmuW3WvVBG-vJRM,424
|
|
75
|
+
fmtr/tools/ha_tools/supervisor.py,sha256=t3m0J7vaveWKefRSoB-_Rum9QmHFi9MRVqZ5dx7ABC4,437
|
|
76
|
+
fmtr/tools/ha_tools/utils.py,sha256=tI-GJp2AIDOwTZ30hzMYaofJ5LckZsdCmbhOjKoV95s,1220
|
|
77
|
+
fmtr/tools/interface_tools/__init__.py,sha256=_bgZRTqmygtYM75o6_zyQRhT_XZnDERZEHmsYVrzyxw,393
|
|
78
|
+
fmtr/tools/interface_tools/context.py,sha256=VpoR_ZCndDbwS0AzIPKi1hB2QckwJU5dJqAJavF3mqk,151
|
|
79
|
+
fmtr/tools/interface_tools/controls.py,sha256=8cI7Jq4SsxRUD1CFVwQRAr4Ci6GSqyfQ5RDZqmPId2w,7673
|
|
80
|
+
fmtr/tools/interface_tools/interface_tools.py,sha256=jSRwpdHqOTmNLndE-wFqTQdkT4z2BBdclSxmvs11FnU,4400
|
|
81
|
+
fmtr/tools/path_tools/__init__.py,sha256=6KE0XnFNoEGGxjA1rzFXHHJz_xdAsqYOIpbWhgWVUA8,465
|
|
82
|
+
fmtr/tools/path_tools/app_path_tools.py,sha256=JrJvtTDd_gkCKcZtBCDTMktsM77PZwGV_hzQX0g5GU8,1722
|
|
83
|
+
fmtr/tools/path_tools/path_tools.py,sha256=uHquWrtJTzMH-0_i1Zv5JYWOM653G0PT1RynxTjI4DY,10230
|
|
84
|
+
fmtr/tools/path_tools/type_path_tools.py,sha256=Zgs-ek-GXRKDIlVDGdg3muB0PIxTg2ba0NeHw6y8FWQ,40
|
|
85
|
+
fmtr/tools/setup_tools/__init__.py,sha256=Ro_Qj3Xndv8Z68DeWPI7c6X-aWKsdDm0KcX_k1xDhgE,394
|
|
86
|
+
fmtr/tools/setup_tools/setup_tools.py,sha256=X1_NwLLSvpIoNhvenByOqQy-NxkGJTCG4U7-eagxcb0,11613
|
|
87
|
+
fmtr/tools/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
88
|
+
fmtr/tools/tests/conftest.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
89
|
+
fmtr/tools/tests/helpers.py,sha256=N5sf9YoZV93a7tf_UxpLeyQ9vp6Ec0teNIimFDvc054,1091
|
|
90
|
+
fmtr/tools/tests/test_datatype.py,sha256=C04m_qFuDT239K1OyYzBQ3ImNtR-5l5kKH4GUrRM9kQ,790
|
|
91
|
+
fmtr/tools/tests/test_environment.py,sha256=iHaiMQfECYZPkPKwfuIZV9uHuWe3aE-p_dN_PWmmhnA,2167
|
|
92
|
+
fmtr/tools/tests/test_json.py,sha256=IeSP4ziPvRcmS8kq7k9tHonC9rN5YYq9GSNT2ul6Msk,287
|
|
93
|
+
fmtr/tools/tests/test_path.py,sha256=AkZQa6_8BQ-VaCyL_J-iKmdf2ZaM-xFYR37Kun3k4_g,2188
|
|
94
|
+
fmtr/tools/tests/test_yaml.py,sha256=jc0TwwKu9eC0LvFGNMERdgBue591xwLxYXFbtsRwXVM,287
|
|
95
|
+
fmtr/tools/version_tools/__init__.py,sha256=cjE6nO6AoVOUp3RwgTbqL9wiw8J1l2pHJOz6Gn6bxjA,326
|
|
96
|
+
fmtr/tools/version_tools/version_tools.py,sha256=Hcc6yferZS1hHbugRTdiHhSNmXEEG0hjCiTTXKna-YY,1127
|
|
97
|
+
fmtr_tools-1.4.37.data/scripts/add-service,sha256=H75Ar4s6_Vdqd9Cr3UIMlSX49mz-Gr2KW6oA6lnrOHM,290
|
|
98
|
+
fmtr_tools-1.4.37.data/scripts/add-user-path,sha256=yFeTqid65bzEh6h1QITM7VAXvmJpCXIuSgx7UNZ_rNs,179
|
|
99
|
+
fmtr_tools-1.4.37.data/scripts/apt-headless,sha256=UgiAS_HNWvt8VSrZHLZEnUsccIKTBLfnFvK0jLtCtQM,476
|
|
100
|
+
fmtr_tools-1.4.37.data/scripts/compose-update,sha256=57hbBPyKzaZA784KPjSzP02ONAxMbasbDIeWzTtXLzE,373
|
|
101
|
+
fmtr_tools-1.4.37.data/scripts/docker-sandbox,sha256=hdVTZJ55e0mXgJOL2_DzimhvIZOao2AZVgVNoy9nG-s,1006
|
|
102
|
+
fmtr_tools-1.4.37.data/scripts/docker-sandbox-init,sha256=rWoAS7BpmHiEvKtoa9K3iUHq1GOm2d7BvVFmxkzbrz4,521
|
|
103
|
+
fmtr_tools-1.4.37.data/scripts/docs-deploy,sha256=1hRVLYHiIiWS87vos6Gh4RM6jbLEX7Ed7qtPJtGNSAk,79
|
|
104
|
+
fmtr_tools-1.4.37.data/scripts/docs-serve,sha256=991oeXnSW4xXY-4lYb6SfMQAqsyHF7D1la3JHDyiTm8,97
|
|
105
|
+
fmtr_tools-1.4.37.data/scripts/download,sha256=-0wRlrAhtdLNJDOXe5VLEMZVT-jcoTHCeY81gyL9Yi4,183
|
|
106
|
+
fmtr_tools-1.4.37.data/scripts/fmtr-test-script,sha256=pnw2O9DmxpKZgUqZCSj_Ns4De2cO3TgkdMqDuDBK43I,35
|
|
107
|
+
fmtr_tools-1.4.37.data/scripts/ftu,sha256=LLiSWiHW99wT8C3fJazyLSi78vyD_ULcD3CaSjDfR9U,45
|
|
108
|
+
fmtr_tools-1.4.37.data/scripts/ha-addon-launch,sha256=ZH42DhRvJK_YCiLyZrq3IWT6K-LedDJCXwPO193Ibrw,463
|
|
109
|
+
fmtr_tools-1.4.37.data/scripts/install-browser,sha256=fYUCBNlh6AqSitclIZaj6WzdMyGpxvrMcrXVsnyOxEY,259
|
|
110
|
+
fmtr_tools-1.4.37.data/scripts/parse-args,sha256=usIyri0EndDmdpR6lfJVJdGdTNqZHLpneeOOYrkejNw,822
|
|
111
|
+
fmtr_tools-1.4.37.data/scripts/set-password,sha256=1RXgEE2bWFhDFd3VGuxjXv4STEBxj7yQXxuTRxj5dFM,88
|
|
112
|
+
fmtr_tools-1.4.37.data/scripts/snips-install,sha256=fpWDjbU4AisJpQf-UGESRrigYM7zajNEMmzmzM1vQiU,325
|
|
113
|
+
fmtr_tools-1.4.37.data/scripts/ssh-auth,sha256=grW_Rk68yuiomPd_kPuoTnWAOnfrcBAuIFLn5DZTD0Y,531
|
|
114
|
+
fmtr_tools-1.4.37.data/scripts/ssh-serve,sha256=ZI4Ar5eL771xk0DVjoNsVKaKVPtL9S0GNYyGiptI5Is,435
|
|
115
|
+
fmtr_tools-1.4.37.data/scripts/vlc-tn,sha256=4JBMACTqN5u5eH9SSuf-SLqdacX_tN8MeXOqYA-2rrE,273
|
|
116
|
+
fmtr_tools-1.4.37.data/scripts/vm-launch,sha256=RhQxKaTryX4xj8edRpdxhh3yMIoOgqX_SUI6okMa-JU,527
|
|
117
|
+
fmtr_tools-1.4.37.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
|
|
118
|
+
fmtr_tools-1.4.37.dist-info/METADATA,sha256=byzFOQUakbhGQpelFJ72umE-70nq54GgaxIFssqRX5E,19600
|
|
119
|
+
fmtr_tools-1.4.37.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
120
|
+
fmtr_tools-1.4.37.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
|
|
121
|
+
fmtr_tools-1.4.37.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
|
|
122
|
+
fmtr_tools-1.4.37.dist-info/RECORD,,
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
[console_scripts]
|
|
2
|
+
fmtr-tools-cache-hfh = fmtr.tools.entrypoints.cache_hfh:main
|
|
3
|
+
fmtr-tools-ep-test = fmtr.tools.entrypoints.ep_test:main
|
|
4
|
+
fmtr-tools-install-yamlscript = fmtr.tools.entrypoints.install_yamlscript:main
|
|
5
|
+
fmtr-tools-remote-debug-test = fmtr.tools.entrypoints.remote_debug_test:main
|
|
6
|
+
fmtr-tools-shell-debug = fmtr.tools.entrypoints.shell_debug:main
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
fmtr
|
fmtr/tools/docker_tools.py
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import contextlib
|
|
2
|
-
import docker
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
@contextlib.contextmanager
|
|
6
|
-
def Container(image, ports=None, name=None, **kwargs):
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
Run a Docker container in a context manager
|
|
10
|
-
|
|
11
|
-
"""
|
|
12
|
-
client = docker.from_env()
|
|
13
|
-
|
|
14
|
-
try:
|
|
15
|
-
container = client.containers.get(name)
|
|
16
|
-
container.stop()
|
|
17
|
-
container.remove()
|
|
18
|
-
except docker.errors.NotFound:
|
|
19
|
-
pass
|
|
20
|
-
|
|
21
|
-
ports = {f'{port}/tcp': port for port in ports}
|
|
22
|
-
container = client.containers.run(image, ports=ports, detach=True, name=name, **kwargs)
|
|
23
|
-
|
|
24
|
-
try:
|
|
25
|
-
yield container
|
|
26
|
-
finally:
|
|
27
|
-
container.stop()
|
|
28
|
-
container.remove()
|
|
29
|
-
|
|
30
|
-
|
fmtr/tools/interface_tools.py
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import flet as ft
|
|
2
|
-
from flet.core.event import Event
|
|
3
|
-
from flet.core.types import AppView
|
|
4
|
-
from flet.core.view import View
|
|
5
|
-
|
|
6
|
-
from fmtr.tools.logging_tools import logger
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class Interface:
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
Simple interface base class.
|
|
13
|
-
|
|
14
|
-
"""
|
|
15
|
-
TITLE = 'Base Interface'
|
|
16
|
-
HOST = '0.0.0.0'
|
|
17
|
-
PORT = 8080
|
|
18
|
-
APPVIEW = AppView.WEB_BROWSER
|
|
19
|
-
PATH_ASSETS = None
|
|
20
|
-
ROUTE_ROOT = '/'
|
|
21
|
-
|
|
22
|
-
def render(self, page: ft.Page):
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
Interface entry point.
|
|
26
|
-
|
|
27
|
-
"""
|
|
28
|
-
|
|
29
|
-
if not page.on_route_change:
|
|
30
|
-
page.on_route_change = lambda e, page=page: self.route(page, e)
|
|
31
|
-
page.on_view_pop = lambda view, page=page: self.pop(page, view)
|
|
32
|
-
|
|
33
|
-
page.go(self.ROUTE_ROOT)
|
|
34
|
-
|
|
35
|
-
def route(self, page: ft.Page, event: Event):
|
|
36
|
-
"""
|
|
37
|
-
|
|
38
|
-
Overridable router.
|
|
39
|
-
|
|
40
|
-
"""
|
|
41
|
-
raise NotImplementedError
|
|
42
|
-
|
|
43
|
-
def pop(self, page: ft.Page, view: View):
|
|
44
|
-
"""
|
|
45
|
-
|
|
46
|
-
Overridable view pop.
|
|
47
|
-
|
|
48
|
-
"""
|
|
49
|
-
raise NotImplementedError
|
|
50
|
-
|
|
51
|
-
@classmethod
|
|
52
|
-
def launch(cls):
|
|
53
|
-
"""
|
|
54
|
-
|
|
55
|
-
Initialise self and launch.
|
|
56
|
-
|
|
57
|
-
"""
|
|
58
|
-
self = cls()
|
|
59
|
-
logger.info(f"Launching {self.TITLE} at http://{self.HOST}:{self.PORT}")
|
|
60
|
-
ft.app(self.render, view=self.APPVIEW, host=self.HOST, port=self.PORT, assets_dir=self.PATH_ASSETS)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if __name__ == "__main__":
|
|
64
|
-
Interface.launch()
|
fmtr/tools/version_tools.py
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
from fmtr.tools.import_tools import MissingExtraMockModule
|
|
2
|
-
from fmtr.tools.inspection_tools import get_call_path
|
|
3
|
-
|
|
4
|
-
try:
|
|
5
|
-
import semver
|
|
6
|
-
|
|
7
|
-
semver = semver
|
|
8
|
-
parse = semver.VersionInfo.parse
|
|
9
|
-
except ImportError as exception:
|
|
10
|
-
# Special case to allow module import.
|
|
11
|
-
# Should be slit out into separate version.dev subpackage
|
|
12
|
-
parse = MissingExtraMockModule('version', exception)
|
|
13
|
-
semver = MissingExtraMockModule('version', exception)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def read() -> str:
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
Read a generic version file from the calling package path.
|
|
20
|
-
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
path = get_call_path(offset=2).parent / 'version'
|
|
24
|
-
return read_path(path)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def read_path(path) -> str:
|
|
28
|
-
"""
|
|
29
|
-
|
|
30
|
-
Read in version from specified path
|
|
31
|
-
|
|
32
|
-
"""
|
|
33
|
-
from fmtr.tools.tools import Constants
|
|
34
|
-
text = path.read_text(encoding=Constants.ENCODING).strip()
|
|
35
|
-
|
|
36
|
-
text = get(text)
|
|
37
|
-
return text
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def get(text) -> str:
|
|
41
|
-
"""
|
|
42
|
-
|
|
43
|
-
Optionally add dev build info to raw version string.
|
|
44
|
-
|
|
45
|
-
"""
|
|
46
|
-
import os
|
|
47
|
-
from fmtr.tools import datatype_tools
|
|
48
|
-
|
|
49
|
-
is_dev = datatype_tools.to_bool(os.getenv('FMTR_DEV', default=False))
|
|
50
|
-
|
|
51
|
-
if is_dev:
|
|
52
|
-
import datetime
|
|
53
|
-
from fmtr.tools.tools import Constants
|
|
54
|
-
|
|
55
|
-
timestamp = datetime.datetime.now(datetime.timezone.utc).strftime(Constants.DATETIME_SEMVER_BUILD_FORMAT)
|
|
56
|
-
|
|
57
|
-
version = parse(text)
|
|
58
|
-
version = version.bump_patch()
|
|
59
|
-
version = version.replace(prerelease='dev', build=timestamp)
|
|
60
|
-
text = str(version)
|
|
61
|
-
|
|
62
|
-
return text
|