fmtr.tools 1.3.41__py3-none-any.whl → 1.3.43__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of fmtr.tools might be problematic. Click here for more details.

fmtr/tools/__init__.py CHANGED
@@ -1,4 +1,5 @@
1
1
  import fmtr.tools.async_tools as asyncio
2
+ import fmtr.tools.database_tools as db
2
3
  import fmtr.tools.dataclass_tools as dataclass
3
4
  import fmtr.tools.datatype_tools as datatype
4
5
  import fmtr.tools.environment_tools as env
@@ -18,6 +19,7 @@ import fmtr.tools.random_tools as random
18
19
  import fmtr.tools.setup_tools as setup
19
20
  import fmtr.tools.string_tools as string
20
21
  from fmtr.tools import ai_tools as ai
22
+ from fmtr.tools import datetime_tools as dt
21
23
  from fmtr.tools import dns_tools as dns
22
24
  from fmtr.tools import interface_tools as interface
23
25
  from fmtr.tools import version_tools as version
@@ -30,147 +32,147 @@ from fmtr.tools.setup_tools import Setup, SetupPaths, Dependencies, Tools
30
32
 
31
33
  try:
32
34
  from fmtr.tools import augmentation_tools as augmentation
33
- except ImportError as exception:
35
+ except ModuleNotFoundError as exception:
34
36
  augmentation = MissingExtraMockModule('augmentation', exception)
35
37
 
36
38
  try:
37
39
  from fmtr.tools import yaml_tools as yaml
38
- except ImportError as exception:
40
+ except ModuleNotFoundError as exception:
39
41
  yaml = MissingExtraMockModule('yaml', exception)
40
42
 
41
43
  try:
42
44
  from fmtr.tools import docker_tools as docker
43
45
  from fmtr.tools.docker_tools import Container
44
- except ImportError as exception:
46
+ except ModuleNotFoundError as exception:
45
47
  docker = Container = MissingExtraMockModule('docker.api', exception)
46
48
 
47
49
  try:
48
50
  from fmtr.tools import parallel_tools as parallel
49
- except ImportError as exception:
51
+ except ModuleNotFoundError as exception:
50
52
  parallel = MissingExtraMockModule('parallel', exception)
51
53
 
52
54
  try:
53
55
  from fmtr.tools import profiling_tools as profiling
54
56
  from fmtr.tools.profiling_tools import Timer
55
- except ImportError as exception:
57
+ except ModuleNotFoundError as exception:
56
58
  profiling = Timer = MissingExtraMockModule('profiling', exception)
57
59
 
58
60
  try:
59
61
  import fmtr.tools.process_tools as process
60
62
  from fmtr.tools.process_tools import ContextProcess
61
- except ImportError as exception:
63
+ except ModuleNotFoundError as exception:
62
64
  process = ContextProcess = MissingExtraMockModule('process', exception)
63
65
 
64
66
  try:
65
67
  from fmtr.tools import tokenization_tools as tokenization
66
- except ImportError as exception:
68
+ except ModuleNotFoundError as exception:
67
69
  tokenization = MissingExtraMockModule('tokenization', exception)
68
70
 
69
71
  try:
70
72
  from fmtr.tools import unicode_tools as unicode
71
- except ImportError as exception:
73
+ except ModuleNotFoundError as exception:
72
74
  unicode = MissingExtraMockModule('unicode', exception)
73
75
 
74
76
  try:
75
77
  from fmtr.tools import netrc_tools as netrc
76
- except ImportError as exception:
78
+ except ModuleNotFoundError as exception:
77
79
  netrc = MissingExtraMockModule('netrc', exception)
78
80
 
79
81
  try:
80
82
  from fmtr.tools import spaces_tools as spaces
81
- except ImportError as exception:
83
+ except ModuleNotFoundError as exception:
82
84
  spaces = MissingExtraMockModule('spaces', exception)
83
85
 
84
86
  try:
85
87
  from fmtr.tools import hfh_tools as hfh
86
- except ImportError as exception:
88
+ except ModuleNotFoundError as exception:
87
89
  hfh = MissingExtraMockModule('hfh', exception)
88
90
 
89
91
  try:
90
92
  from fmtr.tools import merging_tools as merging
91
93
  from fmtr.tools.merging_tools import merge
92
- except ImportError as exception:
94
+ except ModuleNotFoundError as exception:
93
95
  merging = merge = MissingExtraMockModule('merging', exception)
94
96
 
95
97
  try:
96
98
  from fmtr.tools import api_tools as api
97
- except ImportError as exception:
99
+ except ModuleNotFoundError as exception:
98
100
  api = MissingExtraMockModule('api', exception)
99
101
 
100
102
  try:
101
103
  from fmtr.tools import data_modelling_tools as dm
102
- except ImportError as exception:
104
+ except ModuleNotFoundError as exception:
103
105
  dm = MissingExtraMockModule('dm', exception)
104
106
 
105
107
  try:
106
108
  from fmtr.tools import json_fix_tools as json_fix
107
- except ImportError as exception:
109
+ except ModuleNotFoundError as exception:
108
110
  json_fix = MissingExtraMockModule('json_fix', exception)
109
111
 
110
112
  try:
111
113
  from fmtr.tools import semantic_tools as semantic
112
- except ImportError as exception:
114
+ except ModuleNotFoundError as exception:
113
115
  semantic = MissingExtraMockModule('semantic', exception)
114
116
 
115
117
  try:
116
118
  from fmtr.tools import metric_tools as metric
117
- except ImportError as exception:
119
+ except ModuleNotFoundError as exception:
118
120
  metric = MissingExtraMockModule('metric', exception)
119
121
 
120
122
  try:
121
123
  from fmtr.tools import html_tools as html
122
- except ImportError as exception:
124
+ except ModuleNotFoundError as exception:
123
125
  html = MissingExtraMockModule('html', exception)
124
126
 
125
127
  try:
126
128
  from fmtr.tools import openai_tools as openai
127
- except ImportError as exception:
129
+ except ModuleNotFoundError as exception:
128
130
  openai = MissingExtraMockModule('openai', exception)
129
131
 
130
132
  try:
131
133
  from fmtr.tools import google_api_tools as google_api
132
- except ImportError as exception:
134
+ except ModuleNotFoundError as exception:
133
135
  google_api = MissingExtraMockModule('google.api', exception)
134
136
 
135
137
  try:
136
138
  from fmtr.tools import caching_tools as caching
137
- except ImportError as exception:
139
+ except ModuleNotFoundError as exception:
138
140
  caching = MissingExtraMockModule('caching', exception)
139
141
 
140
142
  try:
141
143
  from fmtr.tools import pdf_tools as pdf
142
- except ImportError as exception:
144
+ except ModuleNotFoundError as exception:
143
145
  pdf = MissingExtraMockModule('pdf', exception)
144
146
 
145
147
  try:
146
148
  from fmtr.tools import tabular_tools as tabular
147
- except ImportError as exception:
149
+ except ModuleNotFoundError as exception:
148
150
  tabular = MissingExtraMockModule('tabular', exception)
149
151
 
150
152
  try:
151
153
  from fmtr.tools import debugging_tools as debug
152
- except ImportError as exception:
154
+ except ModuleNotFoundError as exception:
153
155
  debug = MissingExtraMockModule('debug', exception)
154
156
 
155
157
  try:
156
158
  from fmtr.tools import settings_tools as sets
157
- except ImportError as exception:
159
+ except ModuleNotFoundError as exception:
158
160
  sets = MissingExtraMockModule('sets', exception)
159
161
 
160
162
  try:
161
163
  from fmtr.tools import pattern_tools as patterns
162
- except ImportError as exception:
164
+ except ModuleNotFoundError as exception:
163
165
  patterns = MissingExtraMockModule('patterns', exception)
164
166
 
165
167
  try:
166
168
  from fmtr.tools import http_tools as http
167
169
  from fmtr.tools.http_tools import Client
168
- except ImportError as exception:
170
+ except ModuleNotFoundError as exception:
169
171
  http = Client = MissingExtraMockModule('http', exception)
170
172
 
171
173
  try:
172
174
  from fmtr.tools import webhook_tools as webhook
173
- except ImportError as exception:
175
+ except ModuleNotFoundError as exception:
174
176
  webhook = MissingExtraMockModule('webhook', exception)
175
177
 
176
178
 
@@ -2,10 +2,10 @@ from fmtr.tools.import_tools import MissingExtraMockModule
2
2
 
3
3
  try:
4
4
  from fmtr.tools.ai_tools import inference_tools as infer
5
- except ImportError as exception:
5
+ except ModuleNotFoundError as exception:
6
6
  infer = MissingExtraMockModule('ai', exception)
7
7
 
8
8
  try:
9
9
  from fmtr.tools.ai_tools import agentic_tools as agentic
10
- except ImportError as exception:
10
+ except ModuleNotFoundError as exception:
11
11
  agentic = MissingExtraMockModule('ai.client', exception)
fmtr/tools/constants.py CHANGED
@@ -32,7 +32,8 @@ class Constants:
32
32
  FMTR_AI_HOST_KEY = 'FMTR_URL_HOST'
33
33
  FMTR_AI_HOST_DEFAULT = 'ai.gex.fmtr.dev'
34
34
 
35
- FMTR_DEV_INTERFACE_URL = 'https://ws.gex.fmtr.dev/'
35
+ FMTR_DEV_HOST = 'ws.gex.fmtr.dev'
36
+ FMTR_DEV_INTERFACE_URL = F'https://{FMTR_DEV_HOST}/'
36
37
 
37
38
  FILENAME_CONFIG = 'settings.yaml'
38
39
  DIR_NAME_REPO = 'repo'
@@ -0,0 +1,6 @@
1
+ from fmtr.tools.import_tools import MissingExtraMockModule
2
+
3
+ try:
4
+ from fmtr.tools.database_tools import document
5
+ except ModuleNotFoundError as exception:
6
+ document = MissingExtraMockModule('db.document', exception)
@@ -0,0 +1,33 @@
1
+ import beanie
2
+ from functools import cached_property
3
+ from motor.motor_asyncio import AsyncIOMotorClient
4
+ from typing import List
5
+
6
+ from fmtr.tools.constants import Constants
7
+
8
+
9
+ class Document(beanie.Document):
10
+ """
11
+
12
+ Document stub.
13
+
14
+ """
15
+
16
+
17
+ class Client:
18
+
19
+ def __init__(self, name, host=Constants.FMTR_DEV_HOST, port=27017, documents: List[beanie.Document] | None = None):
20
+ self.name = name
21
+ self.host = host
22
+ self.port = port
23
+ self.documents = documents
24
+
25
+ self.client = AsyncIOMotorClient(self.uri)
26
+ self.db = self.client[self.name]
27
+
28
+ @cached_property
29
+ def uri(self):
30
+ return f'mongodb://{self.host}:{self.port}'
31
+
32
+ async def connect(self):
33
+ return await beanie.init_beanie(database=self.db, document_models=self.documents)
@@ -0,0 +1,5 @@
1
+ from datetime import datetime, timezone
2
+
3
+
4
+ def now():
5
+ return datetime.now(tz=timezone.utc)
@@ -3,5 +3,5 @@ from fmtr.tools.import_tools import MissingExtraMockModule
3
3
  try:
4
4
  from fmtr.tools.dns_tools import server, client, dm, proxy
5
5
  import dns
6
- except ImportError as exception:
6
+ except ModuleNotFoundError as exception:
7
7
  dns = server = client = dm = proxy = MissingExtraMockModule('dns', exception)
@@ -4,5 +4,5 @@ try:
4
4
  from fmtr.tools.interface_tools.interface_tools import Interface, update, progress
5
5
  from fmtr.tools.interface_tools import controls
6
6
  from fmtr.tools.interface_tools.context import Context
7
- except ImportError as exception:
7
+ except ModuleNotFoundError as exception:
8
8
  Interface = update = progress = controls = MissingExtraMockModule('interface', exception)
@@ -3,10 +3,10 @@ from fmtr.tools.path_tools.path_tools import Path, PackagePaths
3
3
 
4
4
  try:
5
5
  from fmtr.tools.path_tools.app_path_tools import AppPaths
6
- except ImportError as exception:
6
+ except ModuleNotFoundError as exception:
7
7
  AppPaths = MissingExtraMockModule('path.app', exception)
8
8
 
9
9
  try:
10
10
  from fmtr.tools.path_tools.type_path_tools import guess
11
- except ImportError as exception:
11
+ except ModuleNotFoundError as exception:
12
12
  guess = MissingExtraMockModule('path.type', exception)
@@ -4,5 +4,5 @@ from fmtr.tools.setup_tools.setup_tools import Setup, SetupPaths, Dependencies,
4
4
 
5
5
  try:
6
6
  from setuptools import find_namespace_packages, find_packages, setup as setup_setuptools
7
- except ImportError as exception:
7
+ except ModuleNotFoundError as exception:
8
8
  find_namespace_packages = find_packages = setup_setuptools = MissingExtraMockModule('setup', exception)
fmtr/tools/version CHANGED
@@ -1 +1 @@
1
- 1.3.41
1
+ 1.3.43
@@ -8,5 +8,5 @@ try:
8
8
  semver = semver
9
9
  parse = semver.VersionInfo.parse
10
10
 
11
- except ImportError as exception:
11
+ except ModuleNotFoundError as exception:
12
12
  semver = parse = MissingExtraMockModule('version.dev', exception)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.41
3
+ Version: 1.3.43
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
@@ -131,63 +131,69 @@ Requires-Dist: logfire; extra == "webhook"
131
131
  Requires-Dist: logfire[httpx]; extra == "webhook"
132
132
  Provides-Extra: browsers
133
133
  Requires-Dist: playwright; extra == "browsers"
134
+ Provides-Extra: db
135
+ Provides-Extra: db-document
136
+ Requires-Dist: beanie[odm]; extra == "db-document"
137
+ Requires-Dist: motor; extra == "db-document"
134
138
  Provides-Extra: all
135
- Requires-Dist: dask[bag]; extra == "all"
136
- Requires-Dist: google-auth-httplib2; extra == "all"
137
- Requires-Dist: pymupdf; extra == "all"
138
- Requires-Dist: httpx_retries; extra == "all"
139
- Requires-Dist: contexttimer; extra == "all"
140
- Requires-Dist: sre_yield; extra == "all"
141
- Requires-Dist: peft; extra == "all"
142
- Requires-Dist: diskcache; extra == "all"
143
- Requires-Dist: fastapi; extra == "all"
144
- Requires-Dist: json_repair; extra == "all"
145
- Requires-Dist: pydantic; extra == "all"
139
+ Requires-Dist: httpx; extra == "all"
140
+ Requires-Dist: dnspython[doh]; extra == "all"
141
+ Requires-Dist: pydantic-settings; extra == "all"
142
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
143
+ Requires-Dist: uvicorn[standard]; extra == "all"
146
144
  Requires-Dist: bokeh; extra == "all"
147
- Requires-Dist: sentence_transformers; extra == "all"
145
+ Requires-Dist: faker; extra == "all"
146
+ Requires-Dist: ollama; extra == "all"
147
+ Requires-Dist: diskcache; extra == "all"
148
+ Requires-Dist: sre_yield; extra == "all"
149
+ Requires-Dist: motor; extra == "all"
148
150
  Requires-Dist: cachetools; extra == "all"
149
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
150
- Requires-Dist: transformers[sentencepiece]; extra == "all"
151
- Requires-Dist: setuptools; extra == "all"
152
- Requires-Dist: yamlscript; extra == "all"
153
- Requires-Dist: pandas; extra == "all"
154
- Requires-Dist: huggingface_hub; extra == "all"
155
- Requires-Dist: semver; extra == "all"
156
- Requires-Dist: openpyxl; extra == "all"
157
- Requires-Dist: docker; extra == "all"
151
+ Requires-Dist: tinynetrc; extra == "all"
152
+ Requires-Dist: distributed; extra == "all"
158
153
  Requires-Dist: logfire[fastapi]; extra == "all"
159
- Requires-Dist: appdirs; extra == "all"
154
+ Requires-Dist: httpx_retries; extra == "all"
155
+ Requires-Dist: playwright; extra == "all"
156
+ Requires-Dist: flet-webview; extra == "all"
157
+ Requires-Dist: torchaudio; extra == "all"
158
+ Requires-Dist: openai; extra == "all"
160
159
  Requires-Dist: google-auth-oauthlib; extra == "all"
161
- Requires-Dist: httpx; extra == "all"
162
- Requires-Dist: filetype; extra == "all"
163
- Requires-Dist: tinynetrc; extra == "all"
164
160
  Requires-Dist: html2text; extra == "all"
165
- Requires-Dist: deepmerge; extra == "all"
166
- Requires-Dist: Unidecode; extra == "all"
167
- Requires-Dist: distributed; extra == "all"
168
- Requires-Dist: uvicorn[standard]; extra == "all"
161
+ Requires-Dist: openpyxl; extra == "all"
162
+ Requires-Dist: regex; extra == "all"
163
+ Requires-Dist: json_repair; extra == "all"
164
+ Requires-Dist: pyyaml; extra == "all"
165
+ Requires-Dist: google-auth-httplib2; extra == "all"
166
+ Requires-Dist: logfire; extra == "all"
167
+ Requires-Dist: contexttimer; extra == "all"
168
+ Requires-Dist: pytest-cov; extra == "all"
169
+ Requires-Dist: docker; extra == "all"
170
+ Requires-Dist: flet[all]; extra == "all"
171
+ Requires-Dist: huggingface_hub; extra == "all"
169
172
  Requires-Dist: pymupdf4llm; extra == "all"
173
+ Requires-Dist: setuptools; extra == "all"
174
+ Requires-Dist: beanie[odm]; extra == "all"
175
+ Requires-Dist: Unidecode; extra == "all"
176
+ Requires-Dist: dask[bag]; extra == "all"
177
+ Requires-Dist: pydantic; extra == "all"
178
+ Requires-Dist: sentence_transformers; extra == "all"
179
+ Requires-Dist: peft; extra == "all"
180
+ Requires-Dist: flet-video; extra == "all"
170
181
  Requires-Dist: torchvision; extra == "all"
171
- Requires-Dist: torchaudio; extra == "all"
172
- Requires-Dist: tabulate; extra == "all"
173
- Requires-Dist: flet[all]; extra == "all"
174
- Requires-Dist: pyyaml; extra == "all"
175
- Requires-Dist: openai; extra == "all"
182
+ Requires-Dist: fastapi; extra == "all"
176
183
  Requires-Dist: google-api-python-client; extra == "all"
177
- Requires-Dist: logfire; extra == "all"
178
- Requires-Dist: dnspython[doh]; extra == "all"
179
- Requires-Dist: playwright; extra == "all"
180
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
184
+ Requires-Dist: tabulate; extra == "all"
181
185
  Requires-Dist: logfire[httpx]; extra == "all"
182
- Requires-Dist: regex; extra == "all"
183
- Requires-Dist: pydantic-settings; extra == "all"
184
- Requires-Dist: flet-video; extra == "all"
186
+ Requires-Dist: deepmerge; extra == "all"
187
+ Requires-Dist: yamlscript; extra == "all"
185
188
  Requires-Dist: tokenizers; extra == "all"
186
- Requires-Dist: flet-webview; extra == "all"
187
- Requires-Dist: ollama; extra == "all"
188
- Requires-Dist: pytest-cov; extra == "all"
189
+ Requires-Dist: semver; extra == "all"
190
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
191
+ Requires-Dist: filetype; extra == "all"
192
+ Requires-Dist: appdirs; extra == "all"
193
+ Requires-Dist: pandas; extra == "all"
194
+ Requires-Dist: pymupdf; extra == "all"
189
195
  Requires-Dist: google-auth; extra == "all"
190
- Requires-Dist: faker; extra == "all"
196
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
191
197
  Dynamic: author
192
198
  Dynamic: author-email
193
199
  Dynamic: description
@@ -1,13 +1,14 @@
1
- fmtr/tools/__init__.py,sha256=S09QiP8hSJcJKWWFxgrFOunToA4yKCnnq9SaNGtfWYs,5818
1
+ fmtr/tools/__init__.py,sha256=MwGzpdPZJq-ts-KVcq3tTnHlqLUEDEdbt_xD2Dq5Mmw,6125
2
2
  fmtr/tools/api_tools.py,sha256=RyZUlTefSQozfl-8feZGauyUkwcFd-jU0KtKHFxHea4,2272
3
3
  fmtr/tools/async_tools.py,sha256=ewz757WcveQJd-G5SVr2JDOQVbdLGecCgl-tsBGVZz4,284
4
4
  fmtr/tools/augmentation_tools.py,sha256=-6ESbO4CDlKqVOV1J1V6qBeoBMzbFIinkDHRHnCBej0,55
5
5
  fmtr/tools/caching_tools.py,sha256=74p7m2GLFfeP41LX69wxgfkilxEAoWkMIfFMjKsYpyg,4976
6
- fmtr/tools/constants.py,sha256=idsZZ_IBkWFZusrv0_0YM0_yHM92_jqiFhfTz-GYkBg,1698
6
+ fmtr/tools/constants.py,sha256=-sx8cWeJDT92abFGdiuGBpHktVCTzZcgZKkJbKTSBTg,1737
7
7
  fmtr/tools/context_tools.py,sha256=4UvIHYgLqAh7dXMX9EBrLEpYp81qfzhSVrkffOSAoGA,350
8
8
  fmtr/tools/data_modelling_tools.py,sha256=0BFm-F_cYzVTxftWQwORkPd0FM2BTLVh9-s0-rTTFoo,1744
9
9
  fmtr/tools/dataclass_tools.py,sha256=0Gt6KeLhtPgubo_2tYkIVqB8oQ91Qzag8OAGZDdjvMU,1209
10
10
  fmtr/tools/datatype_tools.py,sha256=3P4AWIFGkJ-UqvXlj0Jc9IvkIIgTOE9jRrOk3NVbpH8,1508
11
+ fmtr/tools/datetime_tools.py,sha256=BfQCk5O5MbMEGF-TUsNTRKD8fJ6GJr3t92XKwRna2vk,94
11
12
  fmtr/tools/debugging_tools.py,sha256=_xzqS0V5BpL8d06j-jVQjGgI7T020QsqVXKAKMz7Du8,2082
12
13
  fmtr/tools/docker_tools.py,sha256=rdaZje2xhlmnfQqZnR7IHgRdWncTLjrJcViUTt5oEwk,617
13
14
  fmtr/tools/environment_tools.py,sha256=43uqfj1G1bNX0IwKz-NKbu3AbFYSdbBuGN9rlThe030,1845
@@ -45,13 +46,15 @@ fmtr/tools/tabular_tools.py,sha256=tpIpZzYku1HcJrHZJL6BC39LmN3WUWVhFbK2N7nDVmE,1
45
46
  fmtr/tools/tokenization_tools.py,sha256=me-IBzSLyNYejLybwjO9CNB6Mj2NYfKPaOVThXyaGNg,4268
46
47
  fmtr/tools/tools.py,sha256=CAsApa1YwVdNE6H66Vjivs_mXYvOas3rh7fPELAnTpk,795
47
48
  fmtr/tools/unicode_tools.py,sha256=yS_9wpu8ogNoiIL7s1G_8bETFFO_YQlo4LNPv1NLDeY,52
48
- fmtr/tools/version,sha256=VMQ_oU5ocbskwTgCV5usCCHqsCQ7N1mpu0Huh2zHuvk,6
49
+ fmtr/tools/version,sha256=PAm8DHeBkkGOhkI26lJMzFsO3J1asLOJFNQ9wSee99I,6
49
50
  fmtr/tools/webhook_tools.py,sha256=q3pVJ1NCem2SrMuFcLxiWd7DibFs7Q-uGtojfXd3Qcg,380
50
51
  fmtr/tools/yaml_tools.py,sha256=Bhhyd6GQVKO72Lp8ky7bAUjIB_65Hdh0Q45SKIEe6S8,1901
51
- fmtr/tools/ai_tools/__init__.py,sha256=JZrLuOFNV1A3wvJgonxOgz_4WS-7MfCuowGWA5uYCjs,372
52
+ fmtr/tools/ai_tools/__init__.py,sha256=O8VRlPnnQCncg2ZZ2l_VdWLJf4jkKH6dkZFVbv6o7IM,388
52
53
  fmtr/tools/ai_tools/agentic_tools.py,sha256=-6q9Cp8WUbLu9AmS5SI5R8qtWMp1Ky4rFXMtfLvcQ7A,4791
53
54
  fmtr/tools/ai_tools/inference_tools.py,sha256=2UP2gXEyOJUjyyV6zmFIYmIxUsh1rXkRH0IbFvr2bRs,11908
54
- fmtr/tools/dns_tools/__init__.py,sha256=Mzaepy8lEdT0SJtUOCnF3IkpOt0vrZn-IOgOf4xfd8Q,258
55
+ fmtr/tools/database_tools/__init__.py,sha256=-YXEs3P4nwg7hdvALpaW4K2Pg9FIc49rD53smqnBgT4,221
56
+ fmtr/tools/database_tools/document.py,sha256=HPNbINknXDa4PwbNm5KzPxMOcnuqTtWbQWU_eXNohKQ,796
57
+ fmtr/tools/dns_tools/__init__.py,sha256=HP0Qcwyi1C6vBH_ejuWrGJOWdp-GZ_cmH-QofjD6Mmg,266
55
58
  fmtr/tools/dns_tools/client.py,sha256=IBbd7Xgx9ExTn_EPoL7ts9JfXokHHuOiD9m4K6tl1Q0,2817
56
59
  fmtr/tools/dns_tools/dm.py,sha256=Lp1HaF7rpVtL_Ji4Bd32B29105H9ZKQ8AcVj_AB7nsA,6678
57
60
  fmtr/tools/dns_tools/proxy.py,sha256=gCWfH1pyWjj8xnJ8Pm4id7bsBWqcar3dQ9PeP5XjRXY,1624
@@ -62,15 +65,15 @@ fmtr/tools/entrypoints/ep_test.py,sha256=B8HfWISfSgw_xVX475CbJGh_QnpOe9MH65H8qGj
62
65
  fmtr/tools/entrypoints/install_yamlscript.py,sha256=D9-QET4uPkwMvOBQJAgzn1fYb7Z7VAgZzFdHSAXc3Qc,116
63
66
  fmtr/tools/entrypoints/remote_debug_test.py,sha256=wmKg9o2pQq7eqeHmaO8oviujNgtnsCVEXOdXLIcQWs4,123
64
67
  fmtr/tools/entrypoints/shell_debug.py,sha256=0No3tAg9Ri4_vvSlQCUtAY-11HR0nE45i0VVtiAViwY,106
65
- fmtr/tools/interface_tools/__init__.py,sha256=hgierRDkJDXrYkPM4z-m44aL7OMS8DKNKJzaXayBmw4,390
68
+ fmtr/tools/interface_tools/__init__.py,sha256=qTN0Hd4A65aWQ4wza48xTNiI2aXBZVEyObdQIsMR2Uk,398
66
69
  fmtr/tools/interface_tools/context.py,sha256=VpoR_ZCndDbwS0AzIPKi1hB2QckwJU5dJqAJavF3mqk,151
67
70
  fmtr/tools/interface_tools/controls.py,sha256=oOl0_sZB8fkvYB-9A5yjArfQmFQLMCsVGgRNrJAFJm4,332
68
71
  fmtr/tools/interface_tools/interface_tools.py,sha256=6cNHBIYNGtLAK16pk3KMrl_ru39OZ_emH7yXtSkvgFE,3998
69
- fmtr/tools/path_tools/__init__.py,sha256=v5CpmzXq5Ii90FtcmxAJKiLxmguZMrPnQ_HdT872Np0,443
72
+ fmtr/tools/path_tools/__init__.py,sha256=XrJXt7Zzo90tYUVksMlDfKkWt775zJ9OSi2NbhnqMDI,459
70
73
  fmtr/tools/path_tools/app_path_tools.py,sha256=JrJvtTDd_gkCKcZtBCDTMktsM77PZwGV_hzQX0g5GU8,1722
71
74
  fmtr/tools/path_tools/path_tools.py,sha256=eh30PpmH0wopy0wNWuPT84cmXY1EvqsTSDT7AV_GPOY,8034
72
75
  fmtr/tools/path_tools/type_path_tools.py,sha256=Zgs-ek-GXRKDIlVDGdg3muB0PIxTg2ba0NeHw6y8FWQ,40
73
- fmtr/tools/setup_tools/__init__.py,sha256=fUCjzyE4JBPEOZhC4B--VPj_eOCkQb1QG5PIgiGj03U,386
76
+ fmtr/tools/setup_tools/__init__.py,sha256=Ro_Qj3Xndv8Z68DeWPI7c6X-aWKsdDm0KcX_k1xDhgE,394
74
77
  fmtr/tools/setup_tools/setup_tools.py,sha256=7Z6jlU6UE8P4cntGQ_hJR7hGvoqwh15xzZY63cnxG7E,10363
75
78
  fmtr/tools/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
79
  fmtr/tools/tests/conftest.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -80,11 +83,11 @@ fmtr/tools/tests/test_environment.py,sha256=iHaiMQfECYZPkPKwfuIZV9uHuWe3aE-p_dN_
80
83
  fmtr/tools/tests/test_json.py,sha256=IeSP4ziPvRcmS8kq7k9tHonC9rN5YYq9GSNT2ul6Msk,287
81
84
  fmtr/tools/tests/test_path.py,sha256=AkZQa6_8BQ-VaCyL_J-iKmdf2ZaM-xFYR37Kun3k4_g,2188
82
85
  fmtr/tools/tests/test_yaml.py,sha256=jc0TwwKu9eC0LvFGNMERdgBue591xwLxYXFbtsRwXVM,287
83
- fmtr/tools/version_tools/__init__.py,sha256=pg4iLtmIr5HtyEW_j0fMFoIdzqi_w9xH8-grQaXLB28,318
86
+ fmtr/tools/version_tools/__init__.py,sha256=cjE6nO6AoVOUp3RwgTbqL9wiw8J1l2pHJOz6Gn6bxjA,326
84
87
  fmtr/tools/version_tools/version_tools.py,sha256=Hcc6yferZS1hHbugRTdiHhSNmXEEG0hjCiTTXKna-YY,1127
85
- fmtr_tools-1.3.41.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
86
- fmtr_tools-1.3.41.dist-info/METADATA,sha256=Bce-ZD6t_bBudCLzRm0aYFUPW_9vpkFfoTn41B02vXY,16213
87
- fmtr_tools-1.3.41.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
88
- fmtr_tools-1.3.41.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
89
- fmtr_tools-1.3.41.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
90
- fmtr_tools-1.3.41.dist-info/RECORD,,
88
+ fmtr_tools-1.3.43.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
89
+ fmtr_tools-1.3.43.dist-info/METADATA,sha256=jkIsBm9iBuDTZGWvxInOEydSzNLl1Cova7qjNRzXWuA,16436
90
+ fmtr_tools-1.3.43.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
91
+ fmtr_tools-1.3.43.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
92
+ fmtr_tools-1.3.43.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
93
+ fmtr_tools-1.3.43.dist-info/RECORD,,