fmtr.tools 1.1.5__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.

@@ -11,3 +11,13 @@ def remote_debug_test():
11
11
  """
12
12
  from fmtr.tools import debug
13
13
  debug.trace(is_debug=True)
14
+
15
+
16
+ def shell_debug():
17
+ """
18
+
19
+ Test debugger connection
20
+
21
+ """
22
+ from fmtr.tools import debug
23
+ debug.debug_shell()
@@ -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/version CHANGED
@@ -1 +1 @@
1
- 1.1.5
1
+ 1.1.6
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.1.5
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: google-api-python-client; extra == "test"
12
13
  Requires-Dist: pymupdf4llm; extra == "test"
14
+ Requires-Dist: faker; extra == "test"
15
+ Requires-Dist: pyyaml; extra == "test"
16
+ Requires-Dist: html2text; extra == "test"
13
17
  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
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"
25
+ Requires-Dist: transformers[sentencepiece]; extra == "test"
26
+ Requires-Dist: sre_yield; extra == "test"
21
27
  Requires-Dist: pytest-cov; extra == "test"
28
+ Requires-Dist: torchaudio; extra == "test"
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"
22
33
  Requires-Dist: uvicorn[standard]; extra == "test"
34
+ Requires-Dist: pandas; extra == "test"
35
+ Requires-Dist: openpyxl; extra == "test"
36
+ Requires-Dist: ollama; extra == "test"
37
+ Requires-Dist: flet-video; extra == "test"
23
38
  Requires-Dist: flet-webview; extra == "test"
39
+ Requires-Dist: pydevd-pycharm; extra == "test"
24
40
  Requires-Dist: google-auth; extra == "test"
41
+ Requires-Dist: tinynetrc; extra == "test"
42
+ Requires-Dist: google-auth-oauthlib; extra == "test"
25
43
  Requires-Dist: deepmerge; extra == "test"
26
- Requires-Dist: flet-video; extra == "test"
27
- Requires-Dist: pydevd-pycharm; extra == "test"
28
- Requires-Dist: torchaudio; extra == "test"
29
- Requires-Dist: faker; extra == "test"
44
+ Requires-Dist: openai; extra == "test"
45
+ Requires-Dist: diskcache; extra == "test"
30
46
  Requires-Dist: bokeh; extra == "test"
31
- Requires-Dist: peft; extra == "test"
32
- Requires-Dist: pydantic-settings; extra == "test"
33
47
  Requires-Dist: logfire; extra == "test"
34
- Requires-Dist: pyyaml; extra == "test"
35
- Requires-Dist: tabulate; extra == "test"
36
- Requires-Dist: openpyxl; extra == "test"
37
- Requires-Dist: google-api-python-client; extra == "test"
38
- Requires-Dist: flet[all]; extra == "test"
39
- Requires-Dist: transformers[sentencepiece]; extra == "test"
40
- Requires-Dist: openai; extra == "test"
41
- Requires-Dist: sentence_transformers; extra == "test"
42
48
  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"
48
- Requires-Dist: logfire[fastapi]; extra == "test"
49
- Requires-Dist: torchvision; extra == "test"
50
- Requires-Dist: pydantic; extra == "test"
51
- Requires-Dist: ollama; extra == "test"
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: tinynetrc; extra == "test"
54
- Requires-Dist: google-auth-oauthlib; extra == "test"
55
- Requires-Dist: docker; extra == "test"
56
- Requires-Dist: tokenizers; 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=Jcmm4WPhCQdPZfd468xD0epkt29sgcPROwKu79V_ehg,203
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=7uWdAAdvnB8bo0gTVwAYGCH1yv_ocFeP_tLk6xhiaPk,950
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
@@ -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=Iwbeq1q8AlvN6mQBfBIblRBrr3gUWq9O2jiD6Tl5zkg,5
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.5.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
61
- fmtr_tools-1.1.5.dist-info/METADATA,sha256=Ag-YfPDiOUGjRQ1N9pIjtP9xXkIm4e4NBHlNw4d0rwI,14646
62
- fmtr_tools-1.1.5.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
63
- fmtr_tools-1.1.5.dist-info/entry_points.txt,sha256=Zmeyls-zo5S99SlKUmsy9ULUNmk-4B9WQCEjuPIH0Yw,142
64
- fmtr_tools-1.1.5.dist-info/top_level.txt,sha256=t5341a8ii3n4RFizwTeXGmcq_pf4GqL1h9ylE5LIWRk,12
65
- fmtr_tools-1.1.5.dist-info/RECORD,,
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,,
@@ -1,3 +1,4 @@
1
1
  [console_scripts]
2
2
  cache-hfh = fmtr.tools.console_script_tools:cache_hfh
3
+ fmtr-shell-debug = fmtr.tools.console_script_tools:shell_debug
3
4
  remote-debug-test = fmtr.tools.console_script_tools:remote_debug_test