fmtr.tools 1.3.81__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.
Files changed (52) hide show
  1. fmtr/tools/__init__.py +19 -1
  2. fmtr/tools/api_tools.py +65 -7
  3. fmtr/tools/async_tools.py +4 -0
  4. fmtr/tools/av_tools.py +7 -0
  5. fmtr/tools/constants.py +9 -1
  6. fmtr/tools/datatype_tools.py +1 -1
  7. fmtr/tools/debugging_tools.py +1 -2
  8. fmtr/tools/environment_tools.py +1 -0
  9. fmtr/tools/ha_tools/__init__.py +8 -0
  10. fmtr/tools/ha_tools/constants.py +9 -0
  11. fmtr/tools/ha_tools/core.py +16 -0
  12. fmtr/tools/ha_tools/supervisor.py +16 -0
  13. fmtr/tools/ha_tools/utils.py +46 -0
  14. fmtr/tools/http_tools.py +30 -4
  15. fmtr/tools/iterator_tools.py +93 -1
  16. fmtr/tools/logging_tools.py +72 -18
  17. fmtr/tools/mqtt_tools.py +89 -0
  18. fmtr/tools/networking_tools.py +73 -0
  19. fmtr/tools/path_tools/__init__.py +1 -1
  20. fmtr/tools/path_tools/path_tools.py +65 -6
  21. fmtr/tools/pattern_tools.py +17 -0
  22. fmtr/tools/settings_tools.py +4 -2
  23. fmtr/tools/setup_tools/setup_tools.py +35 -1
  24. fmtr/tools/version +1 -1
  25. fmtr/tools/yaml_tools.py +1 -3
  26. fmtr/tools/youtube_tools.py +128 -0
  27. fmtr_tools-1.4.37.data/scripts/add-service +14 -0
  28. fmtr_tools-1.4.37.data/scripts/add-user-path +8 -0
  29. fmtr_tools-1.4.37.data/scripts/apt-headless +23 -0
  30. fmtr_tools-1.4.37.data/scripts/compose-update +10 -0
  31. fmtr_tools-1.4.37.data/scripts/docker-sandbox +43 -0
  32. fmtr_tools-1.4.37.data/scripts/docker-sandbox-init +23 -0
  33. fmtr_tools-1.4.37.data/scripts/docs-deploy +6 -0
  34. fmtr_tools-1.4.37.data/scripts/docs-serve +5 -0
  35. fmtr_tools-1.4.37.data/scripts/download +9 -0
  36. fmtr_tools-1.4.37.data/scripts/fmtr-test-script +3 -0
  37. fmtr_tools-1.4.37.data/scripts/ftu +3 -0
  38. fmtr_tools-1.4.37.data/scripts/ha-addon-launch +16 -0
  39. fmtr_tools-1.4.37.data/scripts/install-browser +8 -0
  40. fmtr_tools-1.4.37.data/scripts/parse-args +43 -0
  41. fmtr_tools-1.4.37.data/scripts/set-password +5 -0
  42. fmtr_tools-1.4.37.data/scripts/snips-install +14 -0
  43. fmtr_tools-1.4.37.data/scripts/ssh-auth +28 -0
  44. fmtr_tools-1.4.37.data/scripts/ssh-serve +15 -0
  45. fmtr_tools-1.4.37.data/scripts/vlc-tn +10 -0
  46. fmtr_tools-1.4.37.data/scripts/vm-launch +17 -0
  47. {fmtr_tools-1.3.81.dist-info → fmtr_tools-1.4.37.dist-info}/METADATA +92 -50
  48. {fmtr_tools-1.3.81.dist-info → fmtr_tools-1.4.37.dist-info}/RECORD +52 -23
  49. {fmtr_tools-1.3.81.dist-info → fmtr_tools-1.4.37.dist-info}/WHEEL +0 -0
  50. {fmtr_tools-1.3.81.dist-info → fmtr_tools-1.4.37.dist-info}/entry_points.txt +0 -0
  51. {fmtr_tools-1.3.81.dist-info → fmtr_tools-1.4.37.dist-info}/licenses/LICENSE +0 -0
  52. {fmtr_tools-1.3.81.dist-info → fmtr_tools-1.4.37.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,43 @@
1
+ #!/bin/bash
2
+
3
+ ARGS=() # positional arguments
4
+
5
+ while [ $# -gt 0 ]; do
6
+ case "$1" in
7
+ # --key=value or -k=value
8
+ --*=* | -*=*)
9
+ key=${1%%=*}
10
+ key=${key#--}
11
+ key=${key#-}
12
+ key=$(printf '%s' "$key" | tr 'a-z-' 'A-Z_')
13
+
14
+ val=${1#*=}
15
+ export "$key=$val"
16
+
17
+ unset key val # remove temporary variables
18
+ shift
19
+ ;;
20
+ # --key value or -k value, or boolean flag
21
+ --* | -*)
22
+ key=${1#--}
23
+ key=${key#-}
24
+ key=$(printf '%s' "$key" | tr 'a-z-' 'A-Z_')
25
+
26
+ if [ -n "$2" ] && [[ ! "$2" =~ ^- ]]; then
27
+ val="$2"
28
+ export "$key=$val"
29
+ shift 2
30
+ else
31
+ export "$key=1"
32
+ shift
33
+ fi
34
+
35
+ unset key val # remove temporary variables
36
+ ;;
37
+ # positional arguments
38
+ *)
39
+ ARGS+=("$1")
40
+ shift
41
+ ;;
42
+ esac
43
+ done
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+
3
+ . parse-args "$@"
4
+
5
+ echo "${USERNAME-root}:${PASSWORD-password}" | chpasswd
@@ -0,0 +1,14 @@
1
+ #!/bin/bash
2
+
3
+ . parse-args "$@"
4
+
5
+ DIR="/home/$(whoami)/.local/bin/"
6
+ REPO="snips"
7
+ BRANCH="main"
8
+ URL="https://github.com/${ORG}/${REPO}/archive/refs/heads/${BRANCH}.zip"
9
+
10
+ TMPDIR=$(mktemp -d)
11
+ download --url="$URL" --file=$TMPDIR/snips.zip
12
+ unzip $TMPDIR/snips.zip -d $TMPDIR
13
+ mv "$TMPDIR/${REPO}-${BRANCH}/"* "$DIR"
14
+ rm -rf "$TMPDIR"
@@ -0,0 +1,28 @@
1
+ #!/bin/bash
2
+
3
+ . parse-args "$@"
4
+
5
+ set -e
6
+
7
+ if [ -z "${USERNAME}" ]; then
8
+ echo "Error: --username argument is not set" >&2
9
+ exit 1
10
+ fi
11
+
12
+ SSH_DIR="$HOME/.ssh"
13
+ AUTHORIZED_KEYS="$SSH_DIR/authorized_keys"
14
+
15
+ mkdir -p "$SSH_DIR"
16
+ chmod 700 "$SSH_DIR"
17
+
18
+ TMP_KEYS=$(mktemp)
19
+ curl -fsSL "https://github.com/${USERNAME}.keys" > "$TMP_KEYS"
20
+
21
+ touch "$AUTHORIZED_KEYS"
22
+ chmod 600 "$AUTHORIZED_KEYS"
23
+
24
+ grep -Fvx -f "$AUTHORIZED_KEYS" "$TMP_KEYS" >> "$AUTHORIZED_KEYS"
25
+
26
+ rm "$TMP_KEYS"
27
+
28
+ echo "SSH keys from '${USERNAME}' added to '${AUTHORIZED_KEYS}'"
@@ -0,0 +1,15 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ FMTR_DEV_SSH_PORT=${FMTR_DEV_SSH_PORT:-22}
6
+
7
+ [ -f /home/user/.ssh/ssh_host ] || ssh-keygen -f /home/user/.ssh/ssh_host -N '' -t rsa
8
+
9
+ exec /usr/sbin/sshd -D -e -p "$FMTR_DEV_SSH_PORT" \
10
+ -h /home/user/.ssh/ssh_host \
11
+ -o PasswordAuthentication=no \
12
+ -o PermitRootLogin=prohibit-password \
13
+ -o PubkeyAuthentication=yes \
14
+ -o AuthorizedKeysFile=/home/user/.ssh/authorized_keys \
15
+ -o LogLevel=VERBOSE
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+
3
+ . parse-args "$@"
4
+
5
+ if ! command -v vlc >/dev/null 2>&1; then
6
+ echo "VLC not found. Installing dependencies..."
7
+ sudo apt-headless vlc-bin vlc-plugin-base
8
+ fi
9
+
10
+ vlc -I telnet --telnet-password ${PASSWORD-password} --telnet-host ${HOST-0.0.0.0}:${PORT-4212}
@@ -0,0 +1,17 @@
1
+ #!/bin/bash
2
+
3
+ . parse-args "$@"
4
+
5
+ sudo qemu-system-x86_64 \
6
+ -enable-kvm \
7
+ -m ${GB-12}G \
8
+ -smp ${CPUS-4} \
9
+ -cpu host \
10
+ -machine q35 \
11
+ -drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE_4M.fd \
12
+ -drive if=pflash,format=raw,file=/usr/share/OVMF/OVMF_VARS_4M.fd \
13
+ -drive file=/opt/dev/vm/${NAME-default}/disk.qcow2,format=qcow2,if=virtio,cache=writeback,aio=threads \
14
+ -device virtio-net-pci,netdev=net0 \
15
+ -netdev bridge,id=net0,br=${BR-br0} \
16
+ -display ${DISPLAY_VM-gtk} \
17
+ -serial mon:stdio
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.81
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
@@ -165,68 +165,110 @@ Requires-Dist: playwright; extra == "browsers"
165
165
  Provides-Extra: db
166
166
  Provides-Extra: db-document
167
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"
168
196
  Provides-Extra: all
169
- Requires-Dist: pycountry; extra == "all"
170
- Requires-Dist: httpx; extra == "all"
171
- Requires-Dist: bokeh; extra == "all"
172
- Requires-Dist: httpx_retries; extra == "all"
173
- Requires-Dist: odfpy; extra == "all"
174
- Requires-Dist: faker; extra == "all"
175
- Requires-Dist: Unidecode; extra == "all"
176
- Requires-Dist: pymupdf4llm; extra == "all"
177
- Requires-Dist: cachetools; 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"
178
205
  Requires-Dist: distributed; extra == "all"
179
- Requires-Dist: openpyxl; extra == "all"
180
- Requires-Dist: beanie[odm]; extra == "all"
206
+ Requires-Dist: flet-webview; extra == "all"
207
+ Requires-Dist: google-api-python-client; extra == "all"
208
+ Requires-Dist: setuptools; extra == "all"
181
209
  Requires-Dist: torchvision; extra == "all"
182
- Requires-Dist: torchaudio; extra == "all"
183
- Requires-Dist: pandas; extra == "all"
184
- Requires-Dist: tabulate; extra == "all"
185
- Requires-Dist: pydantic-extra-types; extra == "all"
186
- Requires-Dist: ollama; extra == "all"
187
- Requires-Dist: json_repair; extra == "all"
210
+ Requires-Dist: httpx_retries; extra == "all"
188
211
  Requires-Dist: logfire[httpx]; extra == "all"
189
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
190
- Requires-Dist: peft; 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"
191
218
  Requires-Dist: tokenizers; extra == "all"
192
- Requires-Dist: fastapi; extra == "all"
193
- Requires-Dist: pyyaml; extra == "all"
219
+ Requires-Dist: semver; extra == "all"
220
+ Requires-Dist: aiohasupervisor; extra == "all"
194
221
  Requires-Dist: pymupdf; extra == "all"
195
- Requires-Dist: sre_yield; extra == "all"
222
+ Requires-Dist: pytest-cov; extra == "all"
196
223
  Requires-Dist: pydantic-settings; extra == "all"
197
- Requires-Dist: pydantic; extra == "all"
198
- Requires-Dist: flet[all]; extra == "all"
199
- Requires-Dist: google-auth; extra == "all"
200
- Requires-Dist: google-auth-oauthlib; extra == "all"
201
- Requires-Dist: appdirs; extra == "all"
202
- Requires-Dist: playwright; 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"
203
232
  Requires-Dist: deepdiff; extra == "all"
204
- Requires-Dist: regex; extra == "all"
205
- Requires-Dist: dask[bag]; extra == "all"
206
233
  Requires-Dist: python-on-whales; extra == "all"
207
- Requires-Dist: uvicorn[standard]; extra == "all"
208
- Requires-Dist: pytest-cov; 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"
209
240
  Requires-Dist: sentence_transformers; extra == "all"
241
+ Requires-Dist: mkdocs-include-dir-to-nav; extra == "all"
210
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"
211
248
  Requires-Dist: contexttimer; extra == "all"
212
- Requires-Dist: filetype; extra == "all"
213
- Requires-Dist: dnspython[doh]; extra == "all"
214
- Requires-Dist: diskcache; extra == "all"
215
- Requires-Dist: semver; extra == "all"
216
- Requires-Dist: flet-video; extra == "all"
217
- Requires-Dist: setuptools; extra == "all"
218
- Requires-Dist: transformers[sentencepiece]; extra == "all"
219
- Requires-Dist: google-auth-httplib2; extra == "all"
220
- Requires-Dist: logfire; extra == "all"
221
- Requires-Dist: openai; extra == "all"
222
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
249
+ Requires-Dist: pyyaml; extra == "all"
250
+ Requires-Dist: google-auth-oauthlib; extra == "all"
251
+ Requires-Dist: appdirs; extra == "all"
223
252
  Requires-Dist: html2text; extra == "all"
224
- Requires-Dist: flet-webview; extra == "all"
225
- Requires-Dist: huggingface_hub; extra == "all"
226
- Requires-Dist: google-api-python-client; extra == "all"
227
- Requires-Dist: tinynetrc; extra == "all"
228
- Requires-Dist: deepmerge; extra == "all"
229
- Requires-Dist: yamlscript; 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"
230
272
  Dynamic: author
231
273
  Dynamic: author-email
232
274
  Dynamic: description
@@ -1,53 +1,57 @@
1
- fmtr/tools/__init__.py,sha256=Qh3jGKdC3MMZd7vQvIlrhZ0U7oTcTpBueX39VZwxX4U,5952
2
- fmtr/tools/api_tools.py,sha256=RyZUlTefSQozfl-8feZGauyUkwcFd-jU0KtKHFxHea4,2272
3
- fmtr/tools/async_tools.py,sha256=ewz757WcveQJd-G5SVr2JDOQVbdLGecCgl-tsBGVZz4,284
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
4
  fmtr/tools/augmentation_tools.py,sha256=-6ESbO4CDlKqVOV1J1V6qBeoBMzbFIinkDHRHnCBej0,55
5
+ fmtr/tools/av_tools.py,sha256=0kmhdm0kwIWrAsMSrXl5aLxFFa0e3ypzybDYg9nvF7M,97
5
6
  fmtr/tools/caching_tools.py,sha256=74p7m2GLFfeP41LX69wxgfkilxEAoWkMIfFMjKsYpyg,4976
6
- fmtr/tools/constants.py,sha256=h85mq2JuOsHj-TUKnV0rYTddWFRSRAd4yLyCkpeGjX0,1887
7
+ fmtr/tools/constants.py,sha256=IXow6TDSFVSknOJrL5VcAJsTTmzF6o5FRN7lc_clRtg,2071
7
8
  fmtr/tools/context_tools.py,sha256=4UvIHYgLqAh7dXMX9EBrLEpYp81qfzhSVrkffOSAoGA,350
8
9
  fmtr/tools/data_modelling_tools.py,sha256=c703EhL2ZIj5iN0wjuohakvUnElRblQhvFSLyfRTWwA,7416
9
10
  fmtr/tools/dataclass_tools.py,sha256=0Gt6KeLhtPgubo_2tYkIVqB8oQ91Qzag8OAGZDdjvMU,1209
10
- fmtr/tools/datatype_tools.py,sha256=qFPFrZK70-an4w7H46g8eT5j6Jez--U2XnmFdrQibeE,1983
11
+ fmtr/tools/datatype_tools.py,sha256=V-SeE4fkDJ1rtNha6kJBupJ7lW4t2XOs3bUoSk3RQv0,1989
11
12
  fmtr/tools/datetime_tools.py,sha256=L7wmBoQbD9h_pJIL92WQOX32r_vrXgRvE-_0PVPRAGY,232
12
- fmtr/tools/debugging_tools.py,sha256=_xzqS0V5BpL8d06j-jVQjGgI7T020QsqVXKAKMz7Du8,2082
13
- fmtr/tools/environment_tools.py,sha256=43uqfj1G1bNX0IwKz-NKbu3AbFYSdbBuGN9rlThe030,1845
13
+ fmtr/tools/debugging_tools.py,sha256=q1TXISwOD43uc5RQrXqDSKYbNZh4AiheVmBUfga-EsA,2085
14
+ fmtr/tools/environment_tools.py,sha256=fPMNgITuc8l866i4s6EnXDmi0gc4CmM5EudC8feojK0,1913
14
15
  fmtr/tools/function_tools.py,sha256=O1K8HwftXfzrBblNZrj-BhWNbr4poJghrXNr2mFcylI,2831
15
16
  fmtr/tools/google_api_tools.py,sha256=QUungBoj5SCaBQnMjn9QpXtWmdNCplbw8ZPK9LXi77U,1691
16
17
  fmtr/tools/hash_tools.py,sha256=tr4HXpeT6rRrDk6TvMlRPUSrLRRaov96y128OI2tzsc,729
17
18
  fmtr/tools/hfh_tools.py,sha256=DCDIWuWlhtmIGCtp9cLcOTTEw_4yN_NocLX8w5NZsbk,2384
18
19
  fmtr/tools/html_tools.py,sha256=0nN8Nz5HtG9bXyApYfHSKEivLlxjsm3Gn6Mg2TK0brI,394
19
- fmtr/tools/http_tools.py,sha256=RVwGrBNMyjfbpgAPCSnxEkXfSzXXWARb3ayq981ONQE,464
20
+ fmtr/tools/http_tools.py,sha256=nhPL1sfQzUBZ025CdMv_23k8wYkXMQlNG298Q450PLA,985
20
21
  fmtr/tools/import_tools.py,sha256=XJmiWLukRncJAcaGReDn4jIz1_IpVBjfYCQHH1hIg7c,588
21
22
  fmtr/tools/inherit_tools.py,sha256=gTGL4mRm5RsbFW76s25AbuAJ2vlymbh1c8Q4Hl2uJGU,646
22
23
  fmtr/tools/inspection_tools.py,sha256=tLTRvzy9XVomQPi0dfnF_cgwc7KiDVZAr7gPTk4S_bQ,278
23
- fmtr/tools/iterator_tools.py,sha256=ucsDj-T4YgwRCieFvjBXLfTe4RipL1CJ1_1GOxvEIW8,1816
24
+ fmtr/tools/iterator_tools.py,sha256=dnweDOKrQZdMb3aSbplPg8_gdpLicrFoVwVOnpeyrDw,3771
24
25
  fmtr/tools/json_fix_tools.py,sha256=vNSlswVQnujPmKEqDjFJcO901mjMyv59q3awsT7mlhs,477
25
26
  fmtr/tools/json_tools.py,sha256=WkFc5q7oqMtcFejhN1K5zQFULa9TdLOup83Fr0saDRY,348
26
- fmtr/tools/logging_tools.py,sha256=jZFKnL-7HHOaPkn7F3fT9DyffIgwY-g7SEQ0p1RhzBo,2673
27
+ fmtr/tools/logging_tools.py,sha256=F8amUNu2xWYez23tMpOqJxp-UcDP421_zG46kBt8B0E,3444
27
28
  fmtr/tools/merging_tools.py,sha256=KDxCEFJEQJEwGw1qGKAgR55uUE2X2S5NWLKcfHRmX_k,227
28
29
  fmtr/tools/metric_tools.py,sha256=Lvia5CGFRIfrDFA8s37btIfTU5zHbo04cPJdAMtbndQ,272
30
+ fmtr/tools/mqtt_tools.py,sha256=ySUUcOVdRY3Sk1fCjXCpNe5VcllAECzqi4spLg-NR8o,2137
29
31
  fmtr/tools/name_tools.py,sha256=5CB_phqhHjl66iI8oLxOGPF2odC1apdul-M8Fv2xBhs,5514
30
32
  fmtr/tools/netrc_tools.py,sha256=PpNpz_mWlQi6VHGromKwFfTyLpHUXsd4LY6-OKLCbeI,376
33
+ fmtr/tools/networking_tools.py,sha256=emrJoBBD805arXteSTcDkOrnAllgKA6hkiBBFfD8JYg,1464
31
34
  fmtr/tools/openai_tools.py,sha256=6SUgejgzUzmlKKct2_ePXntvMegu3FJgfk9x7aqtqYc,742
32
35
  fmtr/tools/packaging_tools.py,sha256=FlgOTnDRHZWQL2iR-wucTsyGEHRE-MlddKL30MPmUqE,253
33
36
  fmtr/tools/parallel_tools.py,sha256=QEb_gN1StkxsqYaH4HSjiJX8Y3gpb2uKNsOzG4uFpaM,3071
34
- fmtr/tools/pattern_tools.py,sha256=TTHhOOQdiPz2oDzgTjBlGDZhSPZoHq-LjTNtBQ_BPpo,6357
37
+ fmtr/tools/pattern_tools.py,sha256=VQ5wmZdS-NAlKmQg6KK12ovQIhiiPQVJm55uIXR3Dc4,6659
35
38
  fmtr/tools/pdf_tools.py,sha256=6XQCNyytQSnJSc38gdMOFVcPXnPwfOlk6y4QVqmJLp8,4810
36
39
  fmtr/tools/platform_tools.py,sha256=7p69CmAHe_sF68Fx9uVhns1k5EewTHTWgUYzkl6ZQKA,308
37
40
  fmtr/tools/process_tools.py,sha256=Ysh5Dk2QFBhXQerArjKdt7xZd3JrN5Ho02AaOjH0Nnw,1425
38
41
  fmtr/tools/profiling_tools.py,sha256=jpXVjaNKPydTasEQVNXvxzGtMhXPit08AnJddkU8uIc,46
39
42
  fmtr/tools/random_tools.py,sha256=4VlQdk5THbR8ka4pZaLbk_ZO_4yy6PF_lHZes_rgenY,2223
40
43
  fmtr/tools/semantic_tools.py,sha256=cxY9NSAHWj4nEc6Oj4qA1omR3dWbl2OuH7_PkINc6_E,1386
41
- fmtr/tools/settings_tools.py,sha256=Uq1-Cdzz83I4dmr62K0L4xFUsUqp0uDI9SeYCa6EHc0,2426
44
+ fmtr/tools/settings_tools.py,sha256=fkHQ1VTc4s0Ulm9hUGDV6DWOzfeCGJ6VX0rNcxw3464,2599
42
45
  fmtr/tools/spaces_tools.py,sha256=D_he3mve6DruB3OPS6QyzqD05ChHnRTb4buViKPe7To,1099
43
46
  fmtr/tools/string_tools.py,sha256=ZKHBrl2tui9VjWt7qit4UWbvpuzY6zp5ytiQvhlJVG4,5610
44
47
  fmtr/tools/tabular_tools.py,sha256=mw6vOij1Ch-pVAyHMPtm5zj__ULZN_TKeBYOfj33wFM,1634
45
48
  fmtr/tools/tokenization_tools.py,sha256=me-IBzSLyNYejLybwjO9CNB6Mj2NYfKPaOVThXyaGNg,4268
46
49
  fmtr/tools/tools.py,sha256=sLMXk8juOL8_n_D776cJ-kzjyMHqFI_fctDEjy6PIKs,1115
47
50
  fmtr/tools/unicode_tools.py,sha256=yS_9wpu8ogNoiIL7s1G_8bETFFO_YQlo4LNPv1NLDeY,52
48
- fmtr/tools/version,sha256=3J0Md1fBVomXIzXQrRcnC-9bSI5q8T7FQRVSY_eeRSk,6
51
+ fmtr/tools/version,sha256=Xp4FNom2jzlPk0gOc5UnCGbGlm-HVfZHCd_1__O5YpI,6
49
52
  fmtr/tools/webhook_tools.py,sha256=q3pVJ1NCem2SrMuFcLxiWd7DibFs7Q-uGtojfXd3Qcg,380
50
- fmtr/tools/yaml_tools.py,sha256=Bhhyd6GQVKO72Lp8ky7bAUjIB_65Hdh0Q45SKIEe6S8,1901
53
+ fmtr/tools/yaml_tools.py,sha256=CxS1YLu2zJyt6ovqspzbIBK_M0wJjRVG2kvTmkVRtcE,1846
54
+ fmtr/tools/youtube_tools.py,sha256=siGdgsuOIR87oHFK2tt7oRniPedT2ugDNEvX4MX_ap8,3180
51
55
  fmtr/tools/ai_tools/__init__.py,sha256=O8VRlPnnQCncg2ZZ2l_VdWLJf4jkKH6dkZFVbv6o7IM,388
52
56
  fmtr/tools/ai_tools/agentic_tools.py,sha256=Zj6WcbDc1yLFi3raTSD0BeOkWR3l5RmmccFYGx8-0XE,5534
53
57
  fmtr/tools/ai_tools/inference_tools.py,sha256=2UP2gXEyOJUjyyV6zmFIYmIxUsh1rXkRH0IbFvr2bRs,11908
@@ -65,16 +69,21 @@ fmtr/tools/entrypoints/ep_test.py,sha256=B8HfWISfSgw_xVX475CbJGh_QnpOe9MH65H8qGj
65
69
  fmtr/tools/entrypoints/install_yamlscript.py,sha256=D9-QET4uPkwMvOBQJAgzn1fYb7Z7VAgZzFdHSAXc3Qc,116
66
70
  fmtr/tools/entrypoints/remote_debug_test.py,sha256=wmKg9o2pQq7eqeHmaO8oviujNgtnsCVEXOdXLIcQWs4,123
67
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
68
77
  fmtr/tools/interface_tools/__init__.py,sha256=_bgZRTqmygtYM75o6_zyQRhT_XZnDERZEHmsYVrzyxw,393
69
78
  fmtr/tools/interface_tools/context.py,sha256=VpoR_ZCndDbwS0AzIPKi1hB2QckwJU5dJqAJavF3mqk,151
70
79
  fmtr/tools/interface_tools/controls.py,sha256=8cI7Jq4SsxRUD1CFVwQRAr4Ci6GSqyfQ5RDZqmPId2w,7673
71
80
  fmtr/tools/interface_tools/interface_tools.py,sha256=jSRwpdHqOTmNLndE-wFqTQdkT4z2BBdclSxmvs11FnU,4400
72
- fmtr/tools/path_tools/__init__.py,sha256=XrJXt7Zzo90tYUVksMlDfKkWt775zJ9OSi2NbhnqMDI,459
81
+ fmtr/tools/path_tools/__init__.py,sha256=6KE0XnFNoEGGxjA1rzFXHHJz_xdAsqYOIpbWhgWVUA8,465
73
82
  fmtr/tools/path_tools/app_path_tools.py,sha256=JrJvtTDd_gkCKcZtBCDTMktsM77PZwGV_hzQX0g5GU8,1722
74
- fmtr/tools/path_tools/path_tools.py,sha256=s3RTXsjnr2Ah7vXQGjpGs-4DlWaVGvChu0aTFXX3gsE,8867
83
+ fmtr/tools/path_tools/path_tools.py,sha256=uHquWrtJTzMH-0_i1Zv5JYWOM653G0PT1RynxTjI4DY,10230
75
84
  fmtr/tools/path_tools/type_path_tools.py,sha256=Zgs-ek-GXRKDIlVDGdg3muB0PIxTg2ba0NeHw6y8FWQ,40
76
85
  fmtr/tools/setup_tools/__init__.py,sha256=Ro_Qj3Xndv8Z68DeWPI7c6X-aWKsdDm0KcX_k1xDhgE,394
77
- fmtr/tools/setup_tools/setup_tools.py,sha256=ykW7rAv6ixfXdmLKcPgotenEQ94-NSsdFnDUZqgRbpI,10956
86
+ fmtr/tools/setup_tools/setup_tools.py,sha256=X1_NwLLSvpIoNhvenByOqQy-NxkGJTCG4U7-eagxcb0,11613
78
87
  fmtr/tools/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
88
  fmtr/tools/tests/conftest.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
89
  fmtr/tools/tests/helpers.py,sha256=N5sf9YoZV93a7tf_UxpLeyQ9vp6Ec0teNIimFDvc054,1091
@@ -85,9 +94,29 @@ fmtr/tools/tests/test_path.py,sha256=AkZQa6_8BQ-VaCyL_J-iKmdf2ZaM-xFYR37Kun3k4_g
85
94
  fmtr/tools/tests/test_yaml.py,sha256=jc0TwwKu9eC0LvFGNMERdgBue591xwLxYXFbtsRwXVM,287
86
95
  fmtr/tools/version_tools/__init__.py,sha256=cjE6nO6AoVOUp3RwgTbqL9wiw8J1l2pHJOz6Gn6bxjA,326
87
96
  fmtr/tools/version_tools/version_tools.py,sha256=Hcc6yferZS1hHbugRTdiHhSNmXEEG0hjCiTTXKna-YY,1127
88
- fmtr_tools-1.3.81.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
89
- fmtr_tools-1.3.81.dist-info/METADATA,sha256=O0Sgk3Rn1yYskitfNNvG5HJRW9CpgCz46WZo-p9MYA4,17916
90
- fmtr_tools-1.3.81.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
91
- fmtr_tools-1.3.81.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
92
- fmtr_tools-1.3.81.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
93
- fmtr_tools-1.3.81.dist-info/RECORD,,
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,,