fmtr.tools 1.1.5__py3-none-any.whl → 1.1.7__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/debugging_tools.py +60 -0
- fmtr/tools/version +1 -1
- {fmtr_tools-1.1.5.dist-info → fmtr_tools-1.1.7.dist-info}/METADATA +37 -37
- {fmtr_tools-1.1.5.dist-info → fmtr_tools-1.1.7.dist-info}/RECORD +9 -9
- {fmtr_tools-1.1.5.dist-info → fmtr_tools-1.1.7.dist-info}/entry_points.txt +1 -0
- {fmtr_tools-1.1.5.dist-info → fmtr_tools-1.1.7.dist-info}/WHEEL +0 -0
- {fmtr_tools-1.1.5.dist-info → fmtr_tools-1.1.7.dist-info}/licenses/LICENSE +0 -0
- {fmtr_tools-1.1.5.dist-info → fmtr_tools-1.1.7.dist-info}/top_level.txt +0 -0
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,27 @@ 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
|
+
import sys
|
|
78
|
+
path_str = sys.argv[1]
|
|
79
|
+
data = ShellDebug.from_path(path_str)
|
|
80
|
+
trace(is_debug=True)
|
|
81
|
+
data
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
if __name__ == "__main__":
|
|
85
|
+
import sys
|
|
86
|
+
|
|
87
|
+
sys.argv = [
|
|
88
|
+
'test.py',
|
|
89
|
+
'./fmtr-debug/34e8d492-2f15-419a-8fcb-fe4fa0fa02bb',
|
|
90
|
+
]
|
|
91
|
+
debug_shell()
|
fmtr/tools/version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.1.
|
|
1
|
+
1.1.7
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.7
|
|
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: pymupdf4llm; extra == "test"
|
|
13
|
-
Requires-Dist: pymupdf; extra == "test"
|
|
14
|
-
Requires-Dist: semver; extra == "test"
|
|
15
|
-
Requires-Dist: distributed; extra == "test"
|
|
16
|
-
Requires-Dist: fastapi; extra == "test"
|
|
17
|
-
Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
|
|
18
|
-
Requires-Dist: diskcache; extra == "test"
|
|
19
|
-
Requires-Dist: pandas; extra == "test"
|
|
20
|
-
Requires-Dist: contexttimer; extra == "test"
|
|
21
|
-
Requires-Dist: pytest-cov; extra == "test"
|
|
22
|
-
Requires-Dist: uvicorn[standard]; extra == "test"
|
|
23
|
-
Requires-Dist: flet-webview; extra == "test"
|
|
24
|
-
Requires-Dist: google-auth; extra == "test"
|
|
25
|
-
Requires-Dist: deepmerge; extra == "test"
|
|
26
|
-
Requires-Dist: flet-video; extra == "test"
|
|
27
12
|
Requires-Dist: pydevd-pycharm; extra == "test"
|
|
28
|
-
Requires-Dist:
|
|
13
|
+
Requires-Dist: pyyaml; extra == "test"
|
|
29
14
|
Requires-Dist: faker; extra == "test"
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist: peft; extra == "test"
|
|
32
|
-
Requires-Dist: pydantic-settings; extra == "test"
|
|
15
|
+
Requires-Dist: pandas; extra == "test"
|
|
33
16
|
Requires-Dist: logfire; extra == "test"
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist: flet[all]; extra == "test"
|
|
17
|
+
Requires-Dist: docker; extra == "test"
|
|
18
|
+
Requires-Dist: diskcache; extra == "test"
|
|
19
|
+
Requires-Dist: html2text; extra == "test"
|
|
20
|
+
Requires-Dist: dask[bag]; extra == "test"
|
|
39
21
|
Requires-Dist: transformers[sentencepiece]; extra == "test"
|
|
22
|
+
Requires-Dist: tokenizers; extra == "test"
|
|
23
|
+
Requires-Dist: pydantic-settings; extra == "test"
|
|
24
|
+
Requires-Dist: deepmerge; extra == "test"
|
|
25
|
+
Requires-Dist: pydantic; extra == "test"
|
|
26
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
|
|
40
27
|
Requires-Dist: openai; extra == "test"
|
|
41
|
-
Requires-Dist:
|
|
42
|
-
Requires-Dist: google-auth-httplib2; extra == "test"
|
|
43
|
-
Requires-Dist: huggingface_hub; extra == "test"
|
|
44
|
-
Requires-Dist: dask[bag]; extra == "test"
|
|
45
|
-
Requires-Dist: html2text; extra == "test"
|
|
46
|
-
Requires-Dist: json_repair; extra == "test"
|
|
47
|
-
Requires-Dist: sre_yield; extra == "test"
|
|
28
|
+
Requires-Dist: contexttimer; extra == "test"
|
|
48
29
|
Requires-Dist: logfire[fastapi]; extra == "test"
|
|
49
|
-
Requires-Dist:
|
|
50
|
-
Requires-Dist:
|
|
51
|
-
Requires-Dist:
|
|
30
|
+
Requires-Dist: sre_yield; extra == "test"
|
|
31
|
+
Requires-Dist: huggingface_hub; extra == "test"
|
|
32
|
+
Requires-Dist: bokeh; extra == "test"
|
|
52
33
|
Requires-Dist: Unidecode; extra == "test"
|
|
34
|
+
Requires-Dist: flet-video; extra == "test"
|
|
35
|
+
Requires-Dist: ollama; extra == "test"
|
|
36
|
+
Requires-Dist: google-auth; extra == "test"
|
|
53
37
|
Requires-Dist: tinynetrc; extra == "test"
|
|
38
|
+
Requires-Dist: torchaudio; extra == "test"
|
|
54
39
|
Requires-Dist: google-auth-oauthlib; extra == "test"
|
|
55
|
-
Requires-Dist:
|
|
56
|
-
Requires-Dist:
|
|
40
|
+
Requires-Dist: openpyxl; extra == "test"
|
|
41
|
+
Requires-Dist: tabulate; extra == "test"
|
|
42
|
+
Requires-Dist: google-api-python-client; extra == "test"
|
|
43
|
+
Requires-Dist: json_repair; extra == "test"
|
|
44
|
+
Requires-Dist: google-auth-httplib2; extra == "test"
|
|
45
|
+
Requires-Dist: uvicorn[standard]; extra == "test"
|
|
46
|
+
Requires-Dist: flet-webview; extra == "test"
|
|
47
|
+
Requires-Dist: flet[all]; extra == "test"
|
|
48
|
+
Requires-Dist: pymupdf; extra == "test"
|
|
49
|
+
Requires-Dist: fastapi; extra == "test"
|
|
50
|
+
Requires-Dist: peft; extra == "test"
|
|
51
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
52
|
+
Requires-Dist: semver; extra == "test"
|
|
53
|
+
Requires-Dist: distributed; extra == "test"
|
|
54
|
+
Requires-Dist: sentence_transformers; extra == "test"
|
|
55
|
+
Requires-Dist: torchvision; extra == "test"
|
|
56
|
+
Requires-Dist: pymupdf4llm; 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=
|
|
6
|
+
fmtr/tools/console_script_tools.py,sha256=7KVO0WI3Z7d7EZcmvTVS-O4OMxYYMZuA_7s0eubv76E,328
|
|
7
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=_xzqS0V5BpL8d06j-jVQjGgI7T020QsqVXKAKMz7Du8,2082
|
|
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
|
|
@@ -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=oVwnm-46VH23R6J-MCGZJj45b-RL5hZlJ81KPzSTOMs,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.7.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
|
|
61
|
+
fmtr_tools-1.1.7.dist-info/METADATA,sha256=OSOzYZFRVddRCpf8gz5mMMIPnVQcbwXeQ6Y9PXMzZbE,14646
|
|
62
|
+
fmtr_tools-1.1.7.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
|
|
63
|
+
fmtr_tools-1.1.7.dist-info/entry_points.txt,sha256=e-eOW1Ml13tbxHC6Er1MnVOEDePeWw7DKwlE-l-gCY0,205
|
|
64
|
+
fmtr_tools-1.1.7.dist-info/top_level.txt,sha256=t5341a8ii3n4RFizwTeXGmcq_pf4GqL1h9ylE5LIWRk,12
|
|
65
|
+
fmtr_tools-1.1.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|