fmtr.tools 1.1.10__tar.gz → 1.1.12__tar.gz

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.

Files changed (74) hide show
  1. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/PKG-INFO +39 -35
  2. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/README.md +2 -1
  3. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/__init__.py +1 -1
  4. fmtr_tools-1.1.12/fmtr/tools/path_tools/__init__.py +7 -0
  5. fmtr_tools-1.1.12/fmtr/tools/path_tools/app.py +40 -0
  6. fmtr_tools-1.1.10/fmtr/tools/path_tools.py → fmtr_tools-1.1.12/fmtr/tools/path_tools/base.py +12 -2
  7. fmtr_tools-1.1.12/fmtr/tools/version +1 -0
  8. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/yaml_tools.py +15 -0
  9. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr.tools.egg-info/PKG-INFO +39 -35
  10. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr.tools.egg-info/SOURCES.txt +3 -1
  11. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr.tools.egg-info/requires.txt +37 -33
  12. fmtr_tools-1.1.10/fmtr/tools/version +0 -1
  13. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/LICENSE +0 -0
  14. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/ai_tools/__init__.py +0 -0
  15. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
  16. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  17. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/api_tools.py +0 -0
  18. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/async_tools.py +0 -0
  19. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/augmentation_tools.py +0 -0
  20. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/caching_tools.py +0 -0
  21. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/console_script_tools.py +0 -0
  22. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/constants.py +0 -0
  23. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/data_modelling_tools.py +0 -0
  24. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/dataclass_tools.py +0 -0
  25. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/datatype_tools.py +0 -0
  26. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/debugging_tools.py +0 -0
  27. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/docker_tools.py +0 -0
  28. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/environment_tools.py +0 -0
  29. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/function_tools.py +0 -0
  30. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/google_api_tools.py +0 -0
  31. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/hash_tools.py +0 -0
  32. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/hfh_tools.py +0 -0
  33. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/html_tools.py +0 -0
  34. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/import_tools.py +0 -0
  35. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/inspection_tools.py +0 -0
  36. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/interface_tools.py +0 -0
  37. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/iterator_tools.py +0 -0
  38. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/json_fix_tools.py +0 -0
  39. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/json_tools.py +0 -0
  40. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/logging_tools.py +0 -0
  41. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/merging_tools.py +0 -0
  42. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/metric_tools.py +0 -0
  43. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/name_tools.py +0 -0
  44. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/netrc_tools.py +0 -0
  45. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/openai_tools.py +0 -0
  46. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/packaging_tools.py +0 -0
  47. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/parallel_tools.py +0 -0
  48. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/pdf_tools.py +0 -0
  49. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/platform_tools.py +0 -0
  50. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/process_tools.py +0 -0
  51. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/profiling_tools.py +0 -0
  52. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/random_tools.py +0 -0
  53. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/semantic_tools.py +0 -0
  54. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/settings_tools.py +0 -0
  55. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/spaces_tools.py +0 -0
  56. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/string_tools.py +0 -0
  57. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/tabular_tools.py +0 -0
  58. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/tests/__init__.py +0 -0
  59. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/tests/conftest.py +0 -0
  60. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/tests/helpers.py +0 -0
  61. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/tests/test_datatype.py +0 -0
  62. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/tests/test_environment.py +0 -0
  63. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/tests/test_json.py +0 -0
  64. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/tests/test_path.py +0 -0
  65. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/tests/test_yaml.py +0 -0
  66. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/tokenization_tools.py +0 -0
  67. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/tools.py +0 -0
  68. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/unicode_tools.py +0 -0
  69. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr/tools/version_tools.py +0 -0
  70. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  71. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr.tools.egg-info/entry_points.txt +0 -0
  72. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/fmtr.tools.egg-info/top_level.txt +0 -0
  73. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/setup.cfg +0 -0
  74. {fmtr_tools-1.1.10 → fmtr_tools-1.1.12}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.1.10
3
+ Version: 1.1.12
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,52 @@ 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: pydantic-settings; extra == "test"
13
- Requires-Dist: flet-video; extra == "test"
14
- Requires-Dist: pydantic; extra == "test"
15
- Requires-Dist: pymupdf; extra == "test"
16
- Requires-Dist: flet-webview; extra == "test"
17
- Requires-Dist: logfire[fastapi]; extra == "test"
18
- Requires-Dist: sre_yield; extra == "test"
19
12
  Requires-Dist: peft; extra == "test"
13
+ Requires-Dist: pymupdf4llm; extra == "test"
14
+ Requires-Dist: contexttimer; extra == "test"
15
+ Requires-Dist: bokeh; extra == "test"
16
+ Requires-Dist: tinynetrc; extra == "test"
17
+ Requires-Dist: torchvision; extra == "test"
18
+ Requires-Dist: flet-video; extra == "test"
19
+ Requires-Dist: google-api-python-client; extra == "test"
20
+ Requires-Dist: uvicorn[standard]; extra == "test"
21
+ Requires-Dist: pydantic-settings; extra == "test"
20
22
  Requires-Dist: pandas; extra == "test"
21
- Requires-Dist: pytest-cov; extra == "test"
22
- Requires-Dist: google-auth-oauthlib; extra == "test"
23
- Requires-Dist: json_repair; extra == "test"
23
+ Requires-Dist: google-auth; extra == "test"
24
24
  Requires-Dist: huggingface_hub; extra == "test"
25
- Requires-Dist: logfire; extra == "test"
26
- Requires-Dist: html2text; extra == "test"
27
- Requires-Dist: openai; extra == "test"
28
- Requires-Dist: pydevd-pycharm; extra == "test"
29
- Requires-Dist: bokeh; extra == "test"
25
+ Requires-Dist: faker; extra == "test"
26
+ Requires-Dist: docker; extra == "test"
30
27
  Requires-Dist: dask[bag]; extra == "test"
31
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
32
- Requires-Dist: contexttimer; extra == "test"
28
+ Requires-Dist: google-auth-httplib2; extra == "test"
33
29
  Requires-Dist: flet[all]; extra == "test"
34
- Requires-Dist: google-api-python-client; extra == "test"
35
- Requires-Dist: tabulate; extra == "test"
36
30
  Requires-Dist: deepmerge; extra == "test"
37
- Requires-Dist: tinynetrc; extra == "test"
38
- Requires-Dist: distributed; extra == "test"
39
- Requires-Dist: yamlscript; extra == "test"
40
- Requires-Dist: ollama; extra == "test"
41
31
  Requires-Dist: Unidecode; extra == "test"
42
- Requires-Dist: semver; extra == "test"
43
- Requires-Dist: uvicorn[standard]; extra == "test"
44
- Requires-Dist: docker; extra == "test"
45
- Requires-Dist: faker; extra == "test"
32
+ Requires-Dist: json_repair; extra == "test"
33
+ Requires-Dist: logfire[fastapi]; extra == "test"
46
34
  Requires-Dist: tokenizers; extra == "test"
35
+ Requires-Dist: google-auth-oauthlib; extra == "test"
36
+ Requires-Dist: openai; extra == "test"
47
37
  Requires-Dist: transformers[sentencepiece]; extra == "test"
48
- Requires-Dist: sentence_transformers; extra == "test"
49
- Requires-Dist: google-auth-httplib2; extra == "test"
50
- Requires-Dist: pymupdf4llm; extra == "test"
38
+ Requires-Dist: logfire; extra == "test"
51
39
  Requires-Dist: torchaudio; extra == "test"
52
- Requires-Dist: google-auth; extra == "test"
40
+ Requires-Dist: tabulate; extra == "test"
41
+ Requires-Dist: flet-webview; extra == "test"
53
42
  Requires-Dist: diskcache; extra == "test"
54
- Requires-Dist: fastapi; extra == "test"
43
+ Requires-Dist: pydevd-pycharm; extra == "test"
44
+ Requires-Dist: distributed; extra == "test"
45
+ Requires-Dist: pytest-cov; extra == "test"
46
+ Requires-Dist: yamlscript; extra == "test"
47
+ Requires-Dist: html2text; extra == "test"
48
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
49
+ Requires-Dist: pymupdf; extra == "test"
50
+ Requires-Dist: sre_yield; extra == "test"
55
51
  Requires-Dist: openpyxl; extra == "test"
56
- Requires-Dist: torchvision; extra == "test"
52
+ Requires-Dist: semver; extra == "test"
53
+ Requires-Dist: ollama; extra == "test"
54
+ Requires-Dist: pydantic; extra == "test"
55
+ Requires-Dist: appdirs; extra == "test"
56
+ Requires-Dist: sentence_transformers; extra == "test"
57
+ Requires-Dist: fastapi; extra == "test"
57
58
  Provides-Extra: yaml
58
59
  Requires-Dist: yamlscript; extra == "yaml"
59
60
  Provides-Extra: logging
@@ -149,6 +150,8 @@ Requires-Dist: pydevd-pycharm; extra == "debug"
149
150
  Provides-Extra: sets
150
151
  Requires-Dist: pydantic-settings; extra == "sets"
151
152
  Requires-Dist: pydantic; extra == "sets"
153
+ Provides-Extra: path-app
154
+ Requires-Dist: appdirs; extra == "path-app"
152
155
  Dynamic: author
153
156
  Dynamic: author-email
154
157
  Dynamic: description
@@ -283,9 +286,10 @@ The included modules, plus any extra requirements, are as follows:
283
286
  - `tools.Path`: Enhanced
284
287
  `pathlib.Path` object with additional functionality for Windows-to-Unix path conversion in WSL environments, reading/writing JSON and YAML files with proper encoding.
285
288
  - Extras: None
286
- -
287
289
  `tools.PackagePaths` class for managing canonical package paths, like settings files, artifact directories, version files.
288
290
  - Extras: None
291
+ `tools.AppPaths` Wrapper around `appdirs` for application paths.
292
+ - Extras: `paths.app`
289
293
  - `tools.platform`: Detecting if host is WSL, Docker etc.
290
294
  - Extras: None
291
295
  - `tools.ContextProcess`: Manages a function running in a separate process using a context manager. Provides methods to start, stop, and restart the process, with configurable restart delays. Useful for ensuring clean process management and automatic stopping when the context manager exits.
@@ -122,9 +122,10 @@ The included modules, plus any extra requirements, are as follows:
122
122
  - `tools.Path`: Enhanced
123
123
  `pathlib.Path` object with additional functionality for Windows-to-Unix path conversion in WSL environments, reading/writing JSON and YAML files with proper encoding.
124
124
  - Extras: None
125
- -
126
125
  `tools.PackagePaths` class for managing canonical package paths, like settings files, artifact directories, version files.
127
126
  - Extras: None
127
+ `tools.AppPaths` Wrapper around `appdirs` for application paths.
128
+ - Extras: `paths.app`
128
129
  - `tools.platform`: Detecting if host is WSL, Docker etc.
129
130
  - Extras: None
130
131
  - `tools.ContextProcess`: Manages a function running in a separate process using a context manager. Provides methods to start, stop, and restart the process, with configurable restart delays. Useful for ensuring clean process management and automatic stopping when the context manager exits.
@@ -23,7 +23,7 @@ import fmtr.tools.packaging_tools as packaging
23
23
  from fmtr.tools.logging_tools import logger
24
24
 
25
25
  from fmtr.tools.import_tools import MissingExtraMockModule
26
- from fmtr.tools.path_tools import Path, PackagePaths
26
+ from fmtr.tools.path_tools import Path, PackagePaths, AppPaths
27
27
  from fmtr.tools.constants import Constants
28
28
 
29
29
  try:
@@ -0,0 +1,7 @@
1
+ from fmtr.tools.import_tools import MissingExtraMockModule
2
+ from fmtr.tools.path_tools.base import Path, PackagePaths
3
+
4
+ try:
5
+ from fmtr.tools.path_tools.app import AppPaths
6
+ except ImportError as exception:
7
+ AppPaths = MissingExtraMockModule('path.app', exception)
@@ -0,0 +1,40 @@
1
+ import appdirs
2
+
3
+ from fmtr.tools.path_tools import Path
4
+
5
+
6
+ class AppPaths:
7
+ """
8
+
9
+ Wrap appdirs to return Path objects
10
+
11
+ """
12
+ PathType = Path
13
+
14
+ def user_data_dir(self, appname=None, appauthor=None, version=None, roaming=False):
15
+ path_str = appdirs.user_data_dir(appname=appname, appauthor=appauthor, version=version, roaming=roaming)
16
+ return self.PathType(path_str)
17
+
18
+ def user_config_dir(self, appname=None, appauthor=None, version=None, roaming=False):
19
+ path_str = appdirs.user_config_dir(appname=appname, appauthor=appauthor, version=version, roaming=roaming)
20
+ return self.PathType(path_str)
21
+
22
+ def site_config_dir(self, appname=None, appauthor=None, version=None):
23
+ path_str = appdirs.site_config_dir(appname=appname, appauthor=appauthor, version=version, multipath=False)
24
+ return self.PathType(path_str)
25
+
26
+ def site_data_dir(self, appname=None, appauthor=None, version=None):
27
+ path_str = appdirs.site_data_dir(appname=appname, appauthor=appauthor, version=version, multipath=False)
28
+ return self.PathType(path_str)
29
+
30
+ def user_cache_dir(self, appname=None, appauthor=None, version=None):
31
+ path_str = appdirs.user_cache_dir(appname=appname, appauthor=appauthor, version=version)
32
+ return self.PathType(path_str)
33
+
34
+ def user_state_dir(self, appname=None, appauthor=None, version=None):
35
+ path_str = appdirs.user_state_dir(appname=appname, appauthor=appauthor, version=version)
36
+ return self.PathType(path_str)
37
+
38
+ def user_log_dir(self, appname=None, appauthor=None, version=None):
39
+ path_str = appdirs.user_log_dir(appname=appname, appauthor=appauthor, version=version)
40
+ return self.PathType(path_str)
@@ -154,6 +154,15 @@ class Path(type(Path())):
154
154
  """
155
155
  return super().exists()
156
156
 
157
+ @classmethod
158
+ def app(cls):
159
+ """
160
+
161
+ Convenience method for getting application paths
162
+
163
+ """
164
+ from fmtr.tools import path
165
+ return path.AppPaths()
157
166
 
158
167
  class PackagePaths:
159
168
  """
@@ -315,5 +324,6 @@ class PackagePaths:
315
324
 
316
325
 
317
326
  if __name__ == "__main__":
318
- paths = PackagePaths()
319
- paths
327
+ path = Path()
328
+ path.app.user_log_dir()
329
+ path
@@ -0,0 +1 @@
1
+ 1.1.12
@@ -5,6 +5,13 @@ from yaml import dump
5
5
 
6
6
  from fmtr.tools import environment_tools as env
7
7
 
8
+ try:
9
+ import yamlscript
10
+ except ImportError:
11
+ raise # Raise if even the package isn't installed, to trigger the regular missing extra exception.
12
+ except Exception as exception:
13
+ pass # Allow missing binary, so we can install on-demand
14
+
8
15
 
9
16
  def install():
10
17
  """
@@ -67,3 +74,11 @@ def from_yaml(yaml_str: str) -> Any:
67
74
  """
68
75
  obj = get_interpreter().load(yaml_str)
69
76
  return obj
77
+
78
+
79
+ if __name__ == '__main__':
80
+ from fmtr.tools import Path
81
+
82
+ py = Path('hw.yml')
83
+ data = py.read_yaml()
84
+ data
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.1.10
3
+ Version: 1.1.12
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,52 @@ 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: pydantic-settings; extra == "test"
13
- Requires-Dist: flet-video; extra == "test"
14
- Requires-Dist: pydantic; extra == "test"
15
- Requires-Dist: pymupdf; extra == "test"
16
- Requires-Dist: flet-webview; extra == "test"
17
- Requires-Dist: logfire[fastapi]; extra == "test"
18
- Requires-Dist: sre_yield; extra == "test"
19
12
  Requires-Dist: peft; extra == "test"
13
+ Requires-Dist: pymupdf4llm; extra == "test"
14
+ Requires-Dist: contexttimer; extra == "test"
15
+ Requires-Dist: bokeh; extra == "test"
16
+ Requires-Dist: tinynetrc; extra == "test"
17
+ Requires-Dist: torchvision; extra == "test"
18
+ Requires-Dist: flet-video; extra == "test"
19
+ Requires-Dist: google-api-python-client; extra == "test"
20
+ Requires-Dist: uvicorn[standard]; extra == "test"
21
+ Requires-Dist: pydantic-settings; extra == "test"
20
22
  Requires-Dist: pandas; extra == "test"
21
- Requires-Dist: pytest-cov; extra == "test"
22
- Requires-Dist: google-auth-oauthlib; extra == "test"
23
- Requires-Dist: json_repair; extra == "test"
23
+ Requires-Dist: google-auth; extra == "test"
24
24
  Requires-Dist: huggingface_hub; extra == "test"
25
- Requires-Dist: logfire; extra == "test"
26
- Requires-Dist: html2text; extra == "test"
27
- Requires-Dist: openai; extra == "test"
28
- Requires-Dist: pydevd-pycharm; extra == "test"
29
- Requires-Dist: bokeh; extra == "test"
25
+ Requires-Dist: faker; extra == "test"
26
+ Requires-Dist: docker; extra == "test"
30
27
  Requires-Dist: dask[bag]; extra == "test"
31
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
32
- Requires-Dist: contexttimer; extra == "test"
28
+ Requires-Dist: google-auth-httplib2; extra == "test"
33
29
  Requires-Dist: flet[all]; extra == "test"
34
- Requires-Dist: google-api-python-client; extra == "test"
35
- Requires-Dist: tabulate; extra == "test"
36
30
  Requires-Dist: deepmerge; extra == "test"
37
- Requires-Dist: tinynetrc; extra == "test"
38
- Requires-Dist: distributed; extra == "test"
39
- Requires-Dist: yamlscript; extra == "test"
40
- Requires-Dist: ollama; extra == "test"
41
31
  Requires-Dist: Unidecode; extra == "test"
42
- Requires-Dist: semver; extra == "test"
43
- Requires-Dist: uvicorn[standard]; extra == "test"
44
- Requires-Dist: docker; extra == "test"
45
- Requires-Dist: faker; extra == "test"
32
+ Requires-Dist: json_repair; extra == "test"
33
+ Requires-Dist: logfire[fastapi]; extra == "test"
46
34
  Requires-Dist: tokenizers; extra == "test"
35
+ Requires-Dist: google-auth-oauthlib; extra == "test"
36
+ Requires-Dist: openai; extra == "test"
47
37
  Requires-Dist: transformers[sentencepiece]; extra == "test"
48
- Requires-Dist: sentence_transformers; extra == "test"
49
- Requires-Dist: google-auth-httplib2; extra == "test"
50
- Requires-Dist: pymupdf4llm; extra == "test"
38
+ Requires-Dist: logfire; extra == "test"
51
39
  Requires-Dist: torchaudio; extra == "test"
52
- Requires-Dist: google-auth; extra == "test"
40
+ Requires-Dist: tabulate; extra == "test"
41
+ Requires-Dist: flet-webview; extra == "test"
53
42
  Requires-Dist: diskcache; extra == "test"
54
- Requires-Dist: fastapi; extra == "test"
43
+ Requires-Dist: pydevd-pycharm; extra == "test"
44
+ Requires-Dist: distributed; extra == "test"
45
+ Requires-Dist: pytest-cov; extra == "test"
46
+ Requires-Dist: yamlscript; extra == "test"
47
+ Requires-Dist: html2text; extra == "test"
48
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
49
+ Requires-Dist: pymupdf; extra == "test"
50
+ Requires-Dist: sre_yield; extra == "test"
55
51
  Requires-Dist: openpyxl; extra == "test"
56
- Requires-Dist: torchvision; extra == "test"
52
+ Requires-Dist: semver; extra == "test"
53
+ Requires-Dist: ollama; extra == "test"
54
+ Requires-Dist: pydantic; extra == "test"
55
+ Requires-Dist: appdirs; extra == "test"
56
+ Requires-Dist: sentence_transformers; extra == "test"
57
+ Requires-Dist: fastapi; extra == "test"
57
58
  Provides-Extra: yaml
58
59
  Requires-Dist: yamlscript; extra == "yaml"
59
60
  Provides-Extra: logging
@@ -149,6 +150,8 @@ Requires-Dist: pydevd-pycharm; extra == "debug"
149
150
  Provides-Extra: sets
150
151
  Requires-Dist: pydantic-settings; extra == "sets"
151
152
  Requires-Dist: pydantic; extra == "sets"
153
+ Provides-Extra: path-app
154
+ Requires-Dist: appdirs; extra == "path-app"
152
155
  Dynamic: author
153
156
  Dynamic: author-email
154
157
  Dynamic: description
@@ -283,9 +286,10 @@ The included modules, plus any extra requirements, are as follows:
283
286
  - `tools.Path`: Enhanced
284
287
  `pathlib.Path` object with additional functionality for Windows-to-Unix path conversion in WSL environments, reading/writing JSON and YAML files with proper encoding.
285
288
  - Extras: None
286
- -
287
289
  `tools.PackagePaths` class for managing canonical package paths, like settings files, artifact directories, version files.
288
290
  - Extras: None
291
+ `tools.AppPaths` Wrapper around `appdirs` for application paths.
292
+ - Extras: `paths.app`
289
293
  - `tools.platform`: Detecting if host is WSL, Docker etc.
290
294
  - Extras: None
291
295
  - `tools.ContextProcess`: Manages a function running in a separate process using a context manager. Provides methods to start, stop, and restart the process, with configurable restart delays. Useful for ensuring clean process management and automatic stopping when the context manager exits.
@@ -33,7 +33,6 @@ setup.py
33
33
  ./fmtr/tools/openai_tools.py
34
34
  ./fmtr/tools/packaging_tools.py
35
35
  ./fmtr/tools/parallel_tools.py
36
- ./fmtr/tools/path_tools.py
37
36
  ./fmtr/tools/pdf_tools.py
38
37
  ./fmtr/tools/platform_tools.py
39
38
  ./fmtr/tools/process_tools.py
@@ -53,6 +52,9 @@ setup.py
53
52
  ./fmtr/tools/ai_tools/__init__.py
54
53
  ./fmtr/tools/ai_tools/agentic_tools.py
55
54
  ./fmtr/tools/ai_tools/inference_tools.py
55
+ ./fmtr/tools/path_tools/__init__.py
56
+ ./fmtr/tools/path_tools/app.py
57
+ ./fmtr/tools/path_tools/base.py
56
58
  ./fmtr/tools/tests/__init__.py
57
59
  ./fmtr/tools/tests/conftest.py
58
60
  ./fmtr/tools/tests/helpers.py
@@ -82,6 +82,9 @@ dask[bag]
82
82
  distributed
83
83
  bokeh
84
84
 
85
+ [path.app]
86
+ appdirs
87
+
85
88
  [pdf]
86
89
  pymupdf
87
90
  pydantic
@@ -113,51 +116,52 @@ tabulate
113
116
  openpyxl
114
117
 
115
118
  [test]
116
- pydantic-settings
117
- flet-video
118
- pydantic
119
- pymupdf
120
- flet-webview
121
- logfire[fastapi]
122
- sre_yield
123
119
  peft
120
+ pymupdf4llm
121
+ contexttimer
122
+ bokeh
123
+ tinynetrc
124
+ torchvision
125
+ flet-video
126
+ google-api-python-client
127
+ uvicorn[standard]
128
+ pydantic-settings
124
129
  pandas
125
- pytest-cov
126
- google-auth-oauthlib
127
- json_repair
130
+ google-auth
128
131
  huggingface_hub
129
- logfire
130
- html2text
131
- openai
132
- pydevd-pycharm
133
- bokeh
132
+ faker
133
+ docker
134
134
  dask[bag]
135
- pydantic-ai[logfire,openai]
136
- contexttimer
135
+ google-auth-httplib2
137
136
  flet[all]
138
- google-api-python-client
139
- tabulate
140
137
  deepmerge
141
- tinynetrc
142
- distributed
143
- yamlscript
144
- ollama
145
138
  Unidecode
146
- semver
147
- uvicorn[standard]
148
- docker
149
- faker
139
+ json_repair
140
+ logfire[fastapi]
150
141
  tokenizers
142
+ google-auth-oauthlib
143
+ openai
151
144
  transformers[sentencepiece]
152
- sentence_transformers
153
- google-auth-httplib2
154
- pymupdf4llm
145
+ logfire
155
146
  torchaudio
156
- google-auth
147
+ tabulate
148
+ flet-webview
157
149
  diskcache
158
- fastapi
150
+ pydevd-pycharm
151
+ distributed
152
+ pytest-cov
153
+ yamlscript
154
+ html2text
155
+ pydantic-ai[logfire,openai]
156
+ pymupdf
157
+ sre_yield
159
158
  openpyxl
160
- torchvision
159
+ semver
160
+ ollama
161
+ pydantic
162
+ appdirs
163
+ sentence_transformers
164
+ fastapi
161
165
 
162
166
  [tokenization]
163
167
  tokenizers
@@ -1 +0,0 @@
1
- 1.1.10
File without changes
File without changes
File without changes