fmtr.tools 1.1.4__py3-none-any.whl → 1.1.6__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/console_script_tools.py +10 -0
- fmtr/tools/constants.py +1 -0
- fmtr/tools/debugging_tools.py +59 -0
- fmtr/tools/path_tools.py +17 -1
- fmtr/tools/version +1 -1
- {fmtr_tools-1.1.4.dist-info → fmtr_tools-1.1.6.dist-info}/METADATA +36 -36
- {fmtr_tools-1.1.4.dist-info → fmtr_tools-1.1.6.dist-info}/RECORD +11 -11
- {fmtr_tools-1.1.4.dist-info → fmtr_tools-1.1.6.dist-info}/WHEEL +1 -1
- {fmtr_tools-1.1.4.dist-info → fmtr_tools-1.1.6.dist-info}/entry_points.txt +1 -0
- {fmtr_tools-1.1.4.dist-info → fmtr_tools-1.1.6.dist-info}/licenses/LICENSE +0 -0
- {fmtr_tools-1.1.4.dist-info → fmtr_tools-1.1.6.dist-info}/top_level.txt +0 -0
fmtr/tools/constants.py
CHANGED
fmtr/tools/debugging_tools.py
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
|
|
1
3
|
import pydevd_pycharm
|
|
2
4
|
|
|
3
5
|
from fmtr.tools import environment_tools as env
|
|
@@ -5,6 +7,40 @@ from fmtr.tools.constants import Constants
|
|
|
5
7
|
|
|
6
8
|
MASK = 'Starting debugger at tcp://{host}:{port}...'
|
|
7
9
|
|
|
10
|
+
|
|
11
|
+
@dataclasses.dataclass
|
|
12
|
+
class ShellDebug:
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
Debugging information for shell commands
|
|
16
|
+
|
|
17
|
+
"""
|
|
18
|
+
command: str
|
|
19
|
+
out: str
|
|
20
|
+
err: str
|
|
21
|
+
status: int
|
|
22
|
+
|
|
23
|
+
# timestamp: datetime=dataclasses.field(default_factory=datetime.now)
|
|
24
|
+
|
|
25
|
+
@classmethod
|
|
26
|
+
def from_path(cls, path_str):
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
Get debug info from path
|
|
30
|
+
|
|
31
|
+
"""
|
|
32
|
+
from fmtr.tools import Path
|
|
33
|
+
path = Path(path_str).absolute()
|
|
34
|
+
data = {field.name: (path / f'{field.name}.log').read_text().strip() for field in dataclasses.fields(cls)}
|
|
35
|
+
self = cls(**data)
|
|
36
|
+
return self
|
|
37
|
+
|
|
38
|
+
@property
|
|
39
|
+
def env(self):
|
|
40
|
+
return env.get_dict()
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
8
44
|
def trace(is_debug=None, host=None, port=None, stdoutToServer=True, stderrToServer=True, **kwargs):
|
|
9
45
|
"""
|
|
10
46
|
|
|
@@ -29,3 +65,26 @@ def trace(is_debug=None, host=None, port=None, stdoutToServer=True, stderrToServ
|
|
|
29
65
|
logger.info(msg)
|
|
30
66
|
|
|
31
67
|
pydevd_pycharm.settrace(host, port=port, stdoutToServer=stdoutToServer, stderrToServer=stderrToServer, **kwargs)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def debug_shell():
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
Starts a debug shell by initializing a `ShellDebug` object from a given path
|
|
74
|
+
and enabling tracing with debug mode turned on.
|
|
75
|
+
|
|
76
|
+
"""
|
|
77
|
+
path_str = sys.argv[1]
|
|
78
|
+
data = ShellDebug.from_path(path_str)
|
|
79
|
+
trace(is_debug=True)
|
|
80
|
+
data
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
if __name__ == "__main__":
|
|
84
|
+
import sys
|
|
85
|
+
|
|
86
|
+
sys.argv = [
|
|
87
|
+
'test.py',
|
|
88
|
+
'./fmtr-debug/34e8d492-2f15-419a-8fcb-fe4fa0fa02bb',
|
|
89
|
+
]
|
|
90
|
+
debug_shell()
|
fmtr/tools/path_tools.py
CHANGED
|
@@ -228,7 +228,14 @@ class PackagePaths:
|
|
|
228
228
|
Path of artifacts directory.
|
|
229
229
|
|
|
230
230
|
"""
|
|
231
|
-
|
|
231
|
+
|
|
232
|
+
from fmtr.tools import env
|
|
233
|
+
if env.IS_DEBUG:
|
|
234
|
+
path = self.repo / self.dir_name_artifacts
|
|
235
|
+
else:
|
|
236
|
+
path = Path('/') / self.dir_name_artifacts
|
|
237
|
+
|
|
238
|
+
return path
|
|
232
239
|
|
|
233
240
|
@property
|
|
234
241
|
def settings(self) -> Path:
|
|
@@ -239,6 +246,15 @@ class PackagePaths:
|
|
|
239
246
|
"""
|
|
240
247
|
return self.artifacts / self.filename_config
|
|
241
248
|
|
|
249
|
+
@property
|
|
250
|
+
def hf(self) -> Path:
|
|
251
|
+
"""
|
|
252
|
+
|
|
253
|
+
Path of HuggingFace directory
|
|
254
|
+
|
|
255
|
+
"""
|
|
256
|
+
return self.artifacts / Constants.DIR_NAME_HF
|
|
257
|
+
|
|
242
258
|
def __repr__(self) -> str:
|
|
243
259
|
"""
|
|
244
260
|
|
fmtr/tools/version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.1.
|
|
1
|
+
1.1.6
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.6
|
|
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
|
|
@@ -9,51 +9,51 @@ License: Copyright © 2025 Frontmatter. All rights reserved.
|
|
|
9
9
|
Description-Content-Type: text/markdown
|
|
10
10
|
License-File: LICENSE
|
|
11
11
|
Provides-Extra: test
|
|
12
|
-
Requires-Dist:
|
|
12
|
+
Requires-Dist: google-api-python-client; extra == "test"
|
|
13
|
+
Requires-Dist: pymupdf4llm; extra == "test"
|
|
13
14
|
Requires-Dist: faker; extra == "test"
|
|
14
|
-
Requires-Dist: pydantic; extra == "test"
|
|
15
|
-
Requires-Dist: logfire; extra == "test"
|
|
16
|
-
Requires-Dist: tabulate; extra == "test"
|
|
17
|
-
Requires-Dist: diskcache; extra == "test"
|
|
18
|
-
Requires-Dist: sre_yield; extra == "test"
|
|
19
|
-
Requires-Dist: distributed; extra == "test"
|
|
20
|
-
Requires-Dist: bokeh; extra == "test"
|
|
21
|
-
Requires-Dist: flet[all]; extra == "test"
|
|
22
|
-
Requires-Dist: fastapi; extra == "test"
|
|
23
|
-
Requires-Dist: uvicorn[standard]; extra == "test"
|
|
24
|
-
Requires-Dist: google-auth; extra == "test"
|
|
25
|
-
Requires-Dist: logfire[fastapi]; extra == "test"
|
|
26
|
-
Requires-Dist: contexttimer; extra == "test"
|
|
27
15
|
Requires-Dist: pyyaml; extra == "test"
|
|
28
|
-
Requires-Dist:
|
|
16
|
+
Requires-Dist: html2text; extra == "test"
|
|
17
|
+
Requires-Dist: pymupdf; extra == "test"
|
|
18
|
+
Requires-Dist: contexttimer; extra == "test"
|
|
19
|
+
Requires-Dist: dask[bag]; extra == "test"
|
|
20
|
+
Requires-Dist: json_repair; extra == "test"
|
|
21
|
+
Requires-Dist: torchvision; extra == "test"
|
|
22
|
+
Requires-Dist: pydantic-settings; extra == "test"
|
|
23
|
+
Requires-Dist: huggingface_hub; extra == "test"
|
|
24
|
+
Requires-Dist: logfire[fastapi]; extra == "test"
|
|
29
25
|
Requires-Dist: transformers[sentencepiece]; extra == "test"
|
|
26
|
+
Requires-Dist: sre_yield; extra == "test"
|
|
27
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
28
|
+
Requires-Dist: torchaudio; extra == "test"
|
|
30
29
|
Requires-Dist: sentence_transformers; extra == "test"
|
|
30
|
+
Requires-Dist: pydantic; extra == "test"
|
|
31
|
+
Requires-Dist: docker; extra == "test"
|
|
32
|
+
Requires-Dist: tokenizers; extra == "test"
|
|
33
|
+
Requires-Dist: uvicorn[standard]; extra == "test"
|
|
31
34
|
Requires-Dist: pandas; extra == "test"
|
|
32
|
-
Requires-Dist:
|
|
35
|
+
Requires-Dist: openpyxl; extra == "test"
|
|
36
|
+
Requires-Dist: ollama; extra == "test"
|
|
37
|
+
Requires-Dist: flet-video; extra == "test"
|
|
38
|
+
Requires-Dist: flet-webview; extra == "test"
|
|
33
39
|
Requires-Dist: pydevd-pycharm; extra == "test"
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist: peft; extra == "test"
|
|
40
|
+
Requires-Dist: google-auth; extra == "test"
|
|
36
41
|
Requires-Dist: tinynetrc; extra == "test"
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist: pytest-cov; extra == "test"
|
|
39
|
-
Requires-Dist: pymupdf4llm; extra == "test"
|
|
40
|
-
Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
|
|
41
|
-
Requires-Dist: google-api-python-client; extra == "test"
|
|
42
|
-
Requires-Dist: html2text; extra == "test"
|
|
43
|
-
Requires-Dist: huggingface_hub; extra == "test"
|
|
44
|
-
Requires-Dist: torchaudio; extra == "test"
|
|
42
|
+
Requires-Dist: google-auth-oauthlib; extra == "test"
|
|
45
43
|
Requires-Dist: deepmerge; extra == "test"
|
|
46
|
-
Requires-Dist:
|
|
44
|
+
Requires-Dist: openai; extra == "test"
|
|
45
|
+
Requires-Dist: diskcache; extra == "test"
|
|
46
|
+
Requires-Dist: bokeh; extra == "test"
|
|
47
|
+
Requires-Dist: logfire; extra == "test"
|
|
47
48
|
Requires-Dist: google-auth-httplib2; extra == "test"
|
|
48
|
-
Requires-Dist:
|
|
49
|
-
Requires-Dist:
|
|
50
|
-
Requires-Dist:
|
|
51
|
-
Requires-Dist:
|
|
49
|
+
Requires-Dist: semver; extra == "test"
|
|
50
|
+
Requires-Dist: tabulate; extra == "test"
|
|
51
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
|
|
52
|
+
Requires-Dist: fastapi; extra == "test"
|
|
52
53
|
Requires-Dist: Unidecode; extra == "test"
|
|
53
|
-
Requires-Dist:
|
|
54
|
-
Requires-Dist:
|
|
55
|
-
Requires-Dist:
|
|
56
|
-
Requires-Dist: json_repair; extra == "test"
|
|
54
|
+
Requires-Dist: distributed; extra == "test"
|
|
55
|
+
Requires-Dist: peft; extra == "test"
|
|
56
|
+
Requires-Dist: flet[all]; extra == "test"
|
|
57
57
|
Provides-Extra: yaml
|
|
58
58
|
Requires-Dist: pyyaml; extra == "yaml"
|
|
59
59
|
Provides-Extra: logging
|
|
@@ -3,12 +3,12 @@ fmtr/tools/api_tools.py,sha256=w8Zrp_EwN5KlUghwLoTCXo4z1irg5tAsReCqDLjASfE,2133
|
|
|
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=UOCYUNvLQ-NofR_dhqBmZF96-HRPf4At5MmxVk3gAIk,2943
|
|
6
|
-
fmtr/tools/console_script_tools.py,sha256=
|
|
7
|
-
fmtr/tools/constants.py,sha256=
|
|
6
|
+
fmtr/tools/console_script_tools.py,sha256=7KVO0WI3Z7d7EZcmvTVS-O4OMxYYMZuA_7s0eubv76E,328
|
|
7
|
+
fmtr/tools/constants.py,sha256=vc7sa1WdEsaxqSxrRAKTmNv8EmtOoY3b_V9CtAx4zzw,1125
|
|
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/debugging_tools.py,sha256=
|
|
11
|
+
fmtr/tools/debugging_tools.py,sha256=t3DGzdjiEVIYV2H_R620eAhyxgsEFsqwmZygmBEUt58,2067
|
|
12
12
|
fmtr/tools/docker_tools.py,sha256=rdaZje2xhlmnfQqZnR7IHgRdWncTLjrJcViUTt5oEwk,617
|
|
13
13
|
fmtr/tools/environment_tools.py,sha256=ZO2e8pTzbQ8jNXnmKpaZF7_3qkVM6U5iqku5YSwOszE,1849
|
|
14
14
|
fmtr/tools/function_tools.py,sha256=_oW3-HZXMst2pcU-I-U7KTMmzo0g9MIQKmX-c2_NEoE,858
|
|
@@ -29,7 +29,7 @@ fmtr/tools/name_tools.py,sha256=5CB_phqhHjl66iI8oLxOGPF2odC1apdul-M8Fv2xBhs,5514
|
|
|
29
29
|
fmtr/tools/netrc_tools.py,sha256=PpNpz_mWlQi6VHGromKwFfTyLpHUXsd4LY6-OKLCbeI,376
|
|
30
30
|
fmtr/tools/openai_tools.py,sha256=6SUgejgzUzmlKKct2_ePXntvMegu3FJgfk9x7aqtqYc,742
|
|
31
31
|
fmtr/tools/parallel_tools.py,sha256=QEb_gN1StkxsqYaH4HSjiJX8Y3gpb2uKNsOzG4uFpaM,3071
|
|
32
|
-
fmtr/tools/path_tools.py,sha256=
|
|
32
|
+
fmtr/tools/path_tools.py,sha256=UNi_qRBugDHxBNdEm26wHy3UUBOfY6fVK_G1P51RfCI,6175
|
|
33
33
|
fmtr/tools/pdf_tools.py,sha256=xvv9B84uAF81rFJRnXhSsxYuP42vY9ZdPVFrSMVe8G8,4069
|
|
34
34
|
fmtr/tools/platform_tools.py,sha256=7p69CmAHe_sF68Fx9uVhns1k5EewTHTWgUYzkl6ZQKA,308
|
|
35
35
|
fmtr/tools/process_tools.py,sha256=Ysh5Dk2QFBhXQerArjKdt7xZd3JrN5Ho02AaOjH0Nnw,1425
|
|
@@ -43,7 +43,7 @@ fmtr/tools/tabular_tools.py,sha256=tpIpZzYku1HcJrHZJL6BC39LmN3WUWVhFbK2N7nDVmE,1
|
|
|
43
43
|
fmtr/tools/tokenization_tools.py,sha256=me-IBzSLyNYejLybwjO9CNB6Mj2NYfKPaOVThXyaGNg,4268
|
|
44
44
|
fmtr/tools/tools.py,sha256=CAsApa1YwVdNE6H66Vjivs_mXYvOas3rh7fPELAnTpk,795
|
|
45
45
|
fmtr/tools/unicode_tools.py,sha256=yS_9wpu8ogNoiIL7s1G_8bETFFO_YQlo4LNPv1NLDeY,52
|
|
46
|
-
fmtr/tools/version,sha256=
|
|
46
|
+
fmtr/tools/version,sha256=BNiWbHqtYm5lfiKfQRzKXTL2nBrnbwbpNUKsa17xLUc,5
|
|
47
47
|
fmtr/tools/version_tools.py,sha256=yNs_CGqWpqE4jbK9wsPIi14peJVXYbhIcMqHAFOw3yE,1480
|
|
48
48
|
fmtr/tools/yaml_tools.py,sha256=Ol43ZwbnSXGnn1K98Uxx61KPGSqfC4axE-X2q1LKMwk,349
|
|
49
49
|
fmtr/tools/ai_tools/__init__.py,sha256=JZrLuOFNV1A3wvJgonxOgz_4WS-7MfCuowGWA5uYCjs,372
|
|
@@ -57,9 +57,9 @@ fmtr/tools/tests/test_environment.py,sha256=iHaiMQfECYZPkPKwfuIZV9uHuWe3aE-p_dN_
|
|
|
57
57
|
fmtr/tools/tests/test_json.py,sha256=IeSP4ziPvRcmS8kq7k9tHonC9rN5YYq9GSNT2ul6Msk,287
|
|
58
58
|
fmtr/tools/tests/test_path.py,sha256=AkZQa6_8BQ-VaCyL_J-iKmdf2ZaM-xFYR37Kun3k4_g,2188
|
|
59
59
|
fmtr/tools/tests/test_yaml.py,sha256=jc0TwwKu9eC0LvFGNMERdgBue591xwLxYXFbtsRwXVM,287
|
|
60
|
-
fmtr_tools-1.1.
|
|
61
|
-
fmtr_tools-1.1.
|
|
62
|
-
fmtr_tools-1.1.
|
|
63
|
-
fmtr_tools-1.1.
|
|
64
|
-
fmtr_tools-1.1.
|
|
65
|
-
fmtr_tools-1.1.
|
|
60
|
+
fmtr_tools-1.1.6.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
|
|
61
|
+
fmtr_tools-1.1.6.dist-info/METADATA,sha256=_tKE6fvUcfRKm2VIE4_JLrd5c8Tekz4LXzZJLWhsHOk,14646
|
|
62
|
+
fmtr_tools-1.1.6.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
|
|
63
|
+
fmtr_tools-1.1.6.dist-info/entry_points.txt,sha256=e-eOW1Ml13tbxHC6Er1MnVOEDePeWw7DKwlE-l-gCY0,205
|
|
64
|
+
fmtr_tools-1.1.6.dist-info/top_level.txt,sha256=t5341a8ii3n4RFizwTeXGmcq_pf4GqL1h9ylE5LIWRk,12
|
|
65
|
+
fmtr_tools-1.1.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|