fmtr.tools 1.1.22__tar.gz → 1.1.24__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 (79) hide show
  1. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/PKG-INFO +42 -42
  2. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/__init__.py +8 -12
  3. fmtr_tools-1.1.24/fmtr/tools/setup_tools/__init__.py +8 -0
  4. {fmtr_tools-1.1.22/fmtr/tools → fmtr_tools-1.1.24/fmtr/tools/setup_tools}/setup_tools.py +48 -42
  5. fmtr_tools-1.1.24/fmtr/tools/version +1 -0
  6. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr.tools.egg-info/PKG-INFO +42 -42
  7. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr.tools.egg-info/SOURCES.txt +2 -1
  8. fmtr_tools-1.1.22/fmtr/tools/version +0 -1
  9. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/LICENSE +0 -0
  10. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/README.md +0 -0
  11. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/ai_tools/__init__.py +0 -0
  12. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
  13. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  14. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/api_tools.py +0 -0
  15. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/async_tools.py +0 -0
  16. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/augmentation_tools.py +0 -0
  17. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/caching_tools.py +0 -0
  18. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/console_script_tools.py +0 -0
  19. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/constants.py +0 -0
  20. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/data_modelling_tools.py +0 -0
  21. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/dataclass_tools.py +0 -0
  22. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/datatype_tools.py +0 -0
  23. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/debugging_tools.py +0 -0
  24. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/dns_tools.py +0 -0
  25. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/docker_tools.py +0 -0
  26. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/environment_tools.py +0 -0
  27. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/function_tools.py +0 -0
  28. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/google_api_tools.py +0 -0
  29. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/hash_tools.py +0 -0
  30. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/hfh_tools.py +0 -0
  31. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/html_tools.py +0 -0
  32. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/import_tools.py +0 -0
  33. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/inspection_tools.py +0 -0
  34. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/interface_tools.py +0 -0
  35. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/iterator_tools.py +0 -0
  36. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/json_fix_tools.py +0 -0
  37. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/json_tools.py +0 -0
  38. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/logging_tools.py +0 -0
  39. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/merging_tools.py +0 -0
  40. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/metric_tools.py +0 -0
  41. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/name_tools.py +0 -0
  42. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/netrc_tools.py +0 -0
  43. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/openai_tools.py +0 -0
  44. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/packaging_tools.py +0 -0
  45. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/parallel_tools.py +0 -0
  46. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/path_tools/__init__.py +0 -0
  47. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/path_tools/app_path_tools.py +0 -0
  48. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/path_tools/path_tools.py +0 -0
  49. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/path_tools/type_path_tools.py +0 -0
  50. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/pattern_tools.py +0 -0
  51. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/pdf_tools.py +0 -0
  52. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/platform_tools.py +0 -0
  53. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/process_tools.py +0 -0
  54. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/profiling_tools.py +0 -0
  55. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/random_tools.py +0 -0
  56. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/semantic_tools.py +0 -0
  57. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/settings_tools.py +0 -0
  58. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/spaces_tools.py +0 -0
  59. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/string_tools.py +0 -0
  60. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/tabular_tools.py +0 -0
  61. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/tests/__init__.py +0 -0
  62. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/tests/conftest.py +0 -0
  63. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/tests/helpers.py +0 -0
  64. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/tests/test_datatype.py +0 -0
  65. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/tests/test_environment.py +0 -0
  66. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/tests/test_json.py +0 -0
  67. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/tests/test_path.py +0 -0
  68. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/tests/test_yaml.py +0 -0
  69. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/tokenization_tools.py +0 -0
  70. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/tools.py +0 -0
  71. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/unicode_tools.py +0 -0
  72. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/version_tools.py +0 -0
  73. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr/tools/yaml_tools.py +0 -0
  74. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  75. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr.tools.egg-info/entry_points.txt +0 -0
  76. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr.tools.egg-info/requires.txt +41 -41
  77. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/fmtr.tools.egg-info/top_level.txt +0 -0
  78. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/setup.cfg +0 -0
  79. {fmtr_tools-1.1.22 → fmtr_tools-1.1.24}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.1.22
3
+ Version: 1.1.24
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,60 +9,60 @@ 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: openpyxl; extra == "test"
13
+ Requires-Dist: Unidecode; extra == "test"
14
+ Requires-Dist: pyyaml; extra == "test"
15
+ Requires-Dist: flet-video; extra == "test"
16
+ Requires-Dist: dask[bag]; extra == "test"
17
+ Requires-Dist: appdirs; extra == "test"
18
+ Requires-Dist: semver; extra == "test"
19
+ Requires-Dist: pymupdf; extra == "test"
20
+ Requires-Dist: bokeh; extra == "test"
21
+ Requires-Dist: tabulate; extra == "test"
22
+ Requires-Dist: uvicorn[standard]; extra == "test"
23
+ Requires-Dist: transformers[sentencepiece]; extra == "test"
12
24
  Requires-Dist: google-auth-oauthlib; extra == "test"
13
- Requires-Dist: google-auth-httplib2; extra == "test"
14
- Requires-Dist: json_repair; extra == "test"
25
+ Requires-Dist: dnspython[doh]; extra == "test"
26
+ Requires-Dist: sentence_transformers; extra == "test"
27
+ Requires-Dist: pydantic-settings; extra == "test"
28
+ Requires-Dist: deepmerge; extra == "test"
15
29
  Requires-Dist: pydantic; extra == "test"
16
- Requires-Dist: docker; extra == "test"
17
30
  Requires-Dist: httpx_retries; extra == "test"
18
- Requires-Dist: bokeh; extra == "test"
19
- Requires-Dist: dask[bag]; extra == "test"
20
- Requires-Dist: faker; extra == "test"
21
- Requires-Dist: Unidecode; extra == "test"
22
- Requires-Dist: tokenizers; extra == "test"
23
- Requires-Dist: sentence_transformers; extra == "test"
31
+ Requires-Dist: logfire; extra == "test"
32
+ Requires-Dist: google-auth-httplib2; extra == "test"
33
+ Requires-Dist: torchvision; extra == "test"
34
+ Requires-Dist: pymupdf4llm; extra == "test"
35
+ Requires-Dist: torchaudio; extra == "test"
36
+ Requires-Dist: contexttimer; extra == "test"
37
+ Requires-Dist: distributed; extra == "test"
24
38
  Requires-Dist: peft; extra == "test"
25
- Requires-Dist: flet-webview; extra == "test"
39
+ Requires-Dist: httpx; extra == "test"
40
+ Requires-Dist: regex; extra == "test"
26
41
  Requires-Dist: yamlscript; extra == "test"
27
- Requires-Dist: dnspython[doh]; extra == "test"
28
- Requires-Dist: flet[all]; extra == "test"
29
- Requires-Dist: fastapi; extra == "test"
30
42
  Requires-Dist: filetype; extra == "test"
31
- Requires-Dist: pyyaml; extra == "test"
32
- Requires-Dist: html2text; extra == "test"
43
+ Requires-Dist: pydevd-pycharm; extra == "test"
44
+ Requires-Dist: huggingface_hub; extra == "test"
45
+ Requires-Dist: sre_yield; extra == "test"
46
+ Requires-Dist: flet-webview; extra == "test"
47
+ Requires-Dist: json_repair; extra == "test"
48
+ Requires-Dist: pytest-cov; extra == "test"
49
+ Requires-Dist: fastapi; extra == "test"
50
+ Requires-Dist: tinynetrc; extra == "test"
51
+ Requires-Dist: google-api-python-client; extra == "test"
33
52
  Requires-Dist: ollama; extra == "test"
34
- Requires-Dist: transformers[sentencepiece]; extra == "test"
35
- Requires-Dist: openpyxl; extra == "test"
36
- Requires-Dist: logfire; extra == "test"
37
- Requires-Dist: distributed; extra == "test"
38
- Requires-Dist: deepmerge; extra == "test"
39
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
53
+ Requires-Dist: tokenizers; extra == "test"
40
54
  Requires-Dist: diskcache; extra == "test"
41
- Requires-Dist: pymupdf4llm; extra == "test"
55
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
56
+ Requires-Dist: html2text; extra == "test"
42
57
  Requires-Dist: pandas; extra == "test"
43
58
  Requires-Dist: setuptools; extra == "test"
44
- Requires-Dist: tabulate; extra == "test"
45
- Requires-Dist: pydantic-settings; extra == "test"
46
- Requires-Dist: contexttimer; extra == "test"
47
- Requires-Dist: httpx; extra == "test"
48
- Requires-Dist: sre_yield; extra == "test"
49
- Requires-Dist: google-api-python-client; extra == "test"
59
+ Requires-Dist: faker; extra == "test"
50
60
  Requires-Dist: openai; extra == "test"
51
- Requires-Dist: appdirs; extra == "test"
52
61
  Requires-Dist: logfire[httpx]; extra == "test"
53
- Requires-Dist: google-auth; extra == "test"
54
- Requires-Dist: pymupdf; extra == "test"
55
- Requires-Dist: pydevd-pycharm; extra == "test"
56
- Requires-Dist: tinynetrc; extra == "test"
62
+ Requires-Dist: docker; extra == "test"
57
63
  Requires-Dist: logfire[fastapi]; extra == "test"
58
- Requires-Dist: pytest-cov; extra == "test"
59
- Requires-Dist: huggingface_hub; extra == "test"
60
- Requires-Dist: torchvision; extra == "test"
61
- Requires-Dist: torchaudio; extra == "test"
62
- Requires-Dist: semver; extra == "test"
63
- Requires-Dist: regex; extra == "test"
64
- Requires-Dist: flet-video; extra == "test"
65
- Requires-Dist: uvicorn[standard]; extra == "test"
64
+ Requires-Dist: flet[all]; extra == "test"
65
+ Requires-Dist: google-auth; extra == "test"
66
66
  Provides-Extra: yaml
67
67
  Requires-Dist: yamlscript; extra == "yaml"
68
68
  Requires-Dist: pyyaml; extra == "yaml"
@@ -23,9 +23,16 @@ 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, AppPaths
26
+
27
27
  from fmtr.tools.constants import Constants
28
28
 
29
+ # Submodules
30
+ from fmtr.tools.path_tools import Path, PackagePaths, AppPaths
31
+ from fmtr.tools import ai_tools as ai
32
+
33
+ import fmtr.tools.setup_tools as setup
34
+ from fmtr.tools.setup_tools import Setup, SetupPaths, Dependencies
35
+
29
36
  try:
30
37
  from fmtr.tools import augmentation_tools as augmentation
31
38
  except ImportError as exception:
@@ -95,11 +102,6 @@ try:
95
102
  except ImportError as exception:
96
103
  api = MissingExtraMockModule('api', exception)
97
104
 
98
- try:
99
- from fmtr.tools import ai_tools as ai
100
- except ImportError as exception:
101
- ai = MissingExtraMockModule('ai', exception)
102
-
103
105
  try:
104
106
  from fmtr.tools import data_modelling_tools as dm
105
107
  except ImportError as exception:
@@ -174,9 +176,3 @@ try:
174
176
  from fmtr.tools import dns_tools as dns
175
177
  except ImportError as exception:
176
178
  dns = MissingExtraMockModule('dns', exception)
177
-
178
- try:
179
- from fmtr.tools import setup_tools as setup
180
- from fmtr.tools.setup_tools import Setup, SetupPaths, Dependencies
181
- except ImportError as exception:
182
- setup = Setup = SetupPaths = Dependencies = MissingExtraMockModule('setup', exception)
@@ -0,0 +1,8 @@
1
+ from fmtr.tools.import_tools import MissingExtraMockModule
2
+
3
+ from fmtr.tools.setup_tools.setup_tools import Setup, SetupPaths, Dependencies
4
+
5
+ try:
6
+ from setuptools import find_namespace_packages, find_packages, setup as setup_setuptools
7
+ except ImportError as exception:
8
+ find_namespace_packages = find_packages = setup_setuptools = MissingExtraMockModule('setup', exception)
@@ -1,12 +1,9 @@
1
1
  import sys
2
2
  from datetime import datetime
3
- from fnmatch import fnmatch
4
3
  from functools import cached_property
5
4
  from itertools import chain
6
5
  from typing import List, Dict
7
6
 
8
- from setuptools import find_namespace_packages, find_packages, setup
9
-
10
7
  from fmtr.tools.constants import Constants
11
8
  from fmtr.tools.path_tools import Path
12
9
  from fmtr.tools.path_tools.path_tools import FromCallerMixin
@@ -19,26 +16,21 @@ class SetupPaths(FromCallerMixin):
19
16
 
20
17
  """
21
18
 
22
- SKIP_DIRS = {'data', 'build', 'dist', '.*', '*egg-info*'}
23
-
24
- def __init__(self, path=None):
19
+ def __init__(self, path=None, org=Constants.ORG_NAME):
25
20
 
26
21
  """
27
22
 
28
23
  Use calling module path as default path, if not otherwise specified.
24
+ :param org:
29
25
 
30
26
  """
31
27
  if not path:
32
28
  path = self.from_caller()
33
29
 
30
+ self.org_name = org
34
31
  self.repo = Path(path)
35
32
 
36
- @property
37
- def path(self):
38
- if self.is_namespace:
39
- return self.repo / self.org / self.name
40
- else:
41
- return self.repo / self.name
33
+
42
34
 
43
35
  @property
44
36
  def readme(self):
@@ -49,41 +41,43 @@ class SetupPaths(FromCallerMixin):
49
41
  return self.path / Constants.FILENAME_VERSION
50
42
 
51
43
  @cached_property
52
- def layout(self):
44
+ def path(self):
45
+
46
+ if self.org:
47
+ base = self.org
48
+ else:
49
+ base = self.repo
53
50
 
54
- directories = [
55
- dir for dir in self.repo.iterdir()
56
- if dir.is_dir()
57
- and not any(fnmatch(dir.name, pattern) for pattern in self.SKIP_DIRS)
58
- ]
51
+ directories = [base / dir for dir in self.find(base)]
59
52
 
60
53
  if len(directories) != 1:
61
54
  dirs_str = ', '.join([str(dir) for dir in directories])
62
55
  raise ValueError(f'Expected exactly one directory in {self.repo}, found {dirs_str}')
63
56
 
64
- target = next(iter(directories))
65
-
66
- contents = list(target.iterdir())
67
- if len(contents) == 1 and (item := next(iter(contents))).is_dir():
68
- return True, target.name, item.name
69
-
70
- else:
71
- return False, None, target.name
57
+ package = next(iter(directories))
58
+ return package
72
59
 
73
60
  @property
74
- def is_namespace(self) -> str:
75
- is_namespace, org, name = self.layout
76
- return is_namespace
61
+ def org(self):
62
+ if not self.org_name:
63
+ return False
64
+ org = self.repo / self.org_name
65
+ if not org.is_dir():
66
+ return False
67
+ return org
77
68
 
78
69
  @property
79
- def org(self) -> str:
80
- is_namespace, org, name = self.layout
81
- return org
70
+ def is_namespace(self) -> bool:
71
+ return bool(self.org)
82
72
 
83
73
  @property
84
74
  def name(self) -> str:
85
- is_namespace, org, name = self.layout
86
- return name
75
+ return self.path.stem
76
+
77
+ @property
78
+ def find(self):
79
+ from fmtr.tools import setup
80
+ return setup.find_packages
87
81
 
88
82
 
89
83
  class Setup(FromCallerMixin):
@@ -91,9 +85,9 @@ class Setup(FromCallerMixin):
91
85
  AUTHOR_EMAIL = 'innovative.fowler@mask.pro.fmtr.dev'
92
86
 
93
87
  REQUIREMENTS_ARG = 'requirements'
88
+ SKIP_DIRS = {'data', 'build', 'dist', '.*', '*egg-info*'}
94
89
 
95
-
96
- def __init__(self, dependencies, paths=None, console_scripts=None, client=None, do_setup=True, **kwargs):
90
+ def __init__(self, dependencies, paths=None, org=Constants.ORG_NAME, console_scripts=None, client=None, do_setup=True, **kwargs):
97
91
 
98
92
  self.kwargs = kwargs
99
93
 
@@ -107,8 +101,10 @@ class Setup(FromCallerMixin):
107
101
  self.print_requirements()
108
102
  return
109
103
 
104
+ self.org = org
105
+
110
106
  if not paths:
111
- paths = SetupPaths(path=self.from_caller())
107
+ paths = SetupPaths(path=self.from_caller(), org=self.org)
112
108
  self.paths = paths
113
109
 
114
110
  self.client = client
@@ -179,14 +175,22 @@ class Setup(FromCallerMixin):
179
175
  return self.paths.version.read_text().strip()
180
176
 
181
177
  @property
182
- def packages(self):
178
+ def find(self):
183
179
 
184
- excludes = list(SetupPaths.SKIP_DIRS) + [f'{name}.*' for name in SetupPaths.SKIP_DIRS]
180
+ from fmtr.tools import setup
185
181
 
186
182
  if self.paths.is_namespace:
187
- return find_namespace_packages(where=str(self.paths.repo), exclude=excludes)
183
+ return setup.find_namespace_packages
188
184
  else:
189
- return find_packages(where=str(self.paths.repo), exclude=excludes)
185
+ return setup.find_packages
186
+
187
+ @property
188
+ def packages(self):
189
+
190
+ excludes = list(self.SKIP_DIRS) + [f'{name}.*' for name in self.SKIP_DIRS if '*' not in name]
191
+
192
+ packages = self.find(where=str(self.paths.repo), exclude=excludes)
193
+ return packages
190
194
 
191
195
  @property
192
196
  def package_dir(self):
@@ -224,7 +228,9 @@ class Setup(FromCallerMixin):
224
228
 
225
229
  def setup(self):
226
230
 
227
- return setup(**self.data)
231
+ from fmtr.tools import setup
232
+
233
+ return setup.setup_setuptools(**self.data)
228
234
 
229
235
 
230
236
 
@@ -0,0 +1 @@
1
+ 1.1.24
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.1.22
3
+ Version: 1.1.24
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,60 +9,60 @@ 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: openpyxl; extra == "test"
13
+ Requires-Dist: Unidecode; extra == "test"
14
+ Requires-Dist: pyyaml; extra == "test"
15
+ Requires-Dist: flet-video; extra == "test"
16
+ Requires-Dist: dask[bag]; extra == "test"
17
+ Requires-Dist: appdirs; extra == "test"
18
+ Requires-Dist: semver; extra == "test"
19
+ Requires-Dist: pymupdf; extra == "test"
20
+ Requires-Dist: bokeh; extra == "test"
21
+ Requires-Dist: tabulate; extra == "test"
22
+ Requires-Dist: uvicorn[standard]; extra == "test"
23
+ Requires-Dist: transformers[sentencepiece]; extra == "test"
12
24
  Requires-Dist: google-auth-oauthlib; extra == "test"
13
- Requires-Dist: google-auth-httplib2; extra == "test"
14
- Requires-Dist: json_repair; extra == "test"
25
+ Requires-Dist: dnspython[doh]; extra == "test"
26
+ Requires-Dist: sentence_transformers; extra == "test"
27
+ Requires-Dist: pydantic-settings; extra == "test"
28
+ Requires-Dist: deepmerge; extra == "test"
15
29
  Requires-Dist: pydantic; extra == "test"
16
- Requires-Dist: docker; extra == "test"
17
30
  Requires-Dist: httpx_retries; extra == "test"
18
- Requires-Dist: bokeh; extra == "test"
19
- Requires-Dist: dask[bag]; extra == "test"
20
- Requires-Dist: faker; extra == "test"
21
- Requires-Dist: Unidecode; extra == "test"
22
- Requires-Dist: tokenizers; extra == "test"
23
- Requires-Dist: sentence_transformers; extra == "test"
31
+ Requires-Dist: logfire; extra == "test"
32
+ Requires-Dist: google-auth-httplib2; extra == "test"
33
+ Requires-Dist: torchvision; extra == "test"
34
+ Requires-Dist: pymupdf4llm; extra == "test"
35
+ Requires-Dist: torchaudio; extra == "test"
36
+ Requires-Dist: contexttimer; extra == "test"
37
+ Requires-Dist: distributed; extra == "test"
24
38
  Requires-Dist: peft; extra == "test"
25
- Requires-Dist: flet-webview; extra == "test"
39
+ Requires-Dist: httpx; extra == "test"
40
+ Requires-Dist: regex; extra == "test"
26
41
  Requires-Dist: yamlscript; extra == "test"
27
- Requires-Dist: dnspython[doh]; extra == "test"
28
- Requires-Dist: flet[all]; extra == "test"
29
- Requires-Dist: fastapi; extra == "test"
30
42
  Requires-Dist: filetype; extra == "test"
31
- Requires-Dist: pyyaml; extra == "test"
32
- Requires-Dist: html2text; extra == "test"
43
+ Requires-Dist: pydevd-pycharm; extra == "test"
44
+ Requires-Dist: huggingface_hub; extra == "test"
45
+ Requires-Dist: sre_yield; extra == "test"
46
+ Requires-Dist: flet-webview; extra == "test"
47
+ Requires-Dist: json_repair; extra == "test"
48
+ Requires-Dist: pytest-cov; extra == "test"
49
+ Requires-Dist: fastapi; extra == "test"
50
+ Requires-Dist: tinynetrc; extra == "test"
51
+ Requires-Dist: google-api-python-client; extra == "test"
33
52
  Requires-Dist: ollama; extra == "test"
34
- Requires-Dist: transformers[sentencepiece]; extra == "test"
35
- Requires-Dist: openpyxl; extra == "test"
36
- Requires-Dist: logfire; extra == "test"
37
- Requires-Dist: distributed; extra == "test"
38
- Requires-Dist: deepmerge; extra == "test"
39
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
53
+ Requires-Dist: tokenizers; extra == "test"
40
54
  Requires-Dist: diskcache; extra == "test"
41
- Requires-Dist: pymupdf4llm; extra == "test"
55
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
56
+ Requires-Dist: html2text; extra == "test"
42
57
  Requires-Dist: pandas; extra == "test"
43
58
  Requires-Dist: setuptools; extra == "test"
44
- Requires-Dist: tabulate; extra == "test"
45
- Requires-Dist: pydantic-settings; extra == "test"
46
- Requires-Dist: contexttimer; extra == "test"
47
- Requires-Dist: httpx; extra == "test"
48
- Requires-Dist: sre_yield; extra == "test"
49
- Requires-Dist: google-api-python-client; extra == "test"
59
+ Requires-Dist: faker; extra == "test"
50
60
  Requires-Dist: openai; extra == "test"
51
- Requires-Dist: appdirs; extra == "test"
52
61
  Requires-Dist: logfire[httpx]; extra == "test"
53
- Requires-Dist: google-auth; extra == "test"
54
- Requires-Dist: pymupdf; extra == "test"
55
- Requires-Dist: pydevd-pycharm; extra == "test"
56
- Requires-Dist: tinynetrc; extra == "test"
62
+ Requires-Dist: docker; extra == "test"
57
63
  Requires-Dist: logfire[fastapi]; extra == "test"
58
- Requires-Dist: pytest-cov; extra == "test"
59
- Requires-Dist: huggingface_hub; extra == "test"
60
- Requires-Dist: torchvision; extra == "test"
61
- Requires-Dist: torchaudio; extra == "test"
62
- Requires-Dist: semver; extra == "test"
63
- Requires-Dist: regex; extra == "test"
64
- Requires-Dist: flet-video; extra == "test"
65
- Requires-Dist: uvicorn[standard]; extra == "test"
64
+ Requires-Dist: flet[all]; extra == "test"
65
+ Requires-Dist: google-auth; extra == "test"
66
66
  Provides-Extra: yaml
67
67
  Requires-Dist: yamlscript; extra == "yaml"
68
68
  Requires-Dist: pyyaml; extra == "yaml"
@@ -42,7 +42,6 @@ setup.py
42
42
  ./fmtr/tools/random_tools.py
43
43
  ./fmtr/tools/semantic_tools.py
44
44
  ./fmtr/tools/settings_tools.py
45
- ./fmtr/tools/setup_tools.py
46
45
  ./fmtr/tools/spaces_tools.py
47
46
  ./fmtr/tools/string_tools.py
48
47
  ./fmtr/tools/tabular_tools.py
@@ -59,6 +58,8 @@ setup.py
59
58
  ./fmtr/tools/path_tools/app_path_tools.py
60
59
  ./fmtr/tools/path_tools/path_tools.py
61
60
  ./fmtr/tools/path_tools/type_path_tools.py
61
+ ./fmtr/tools/setup_tools/__init__.py
62
+ ./fmtr/tools/setup_tools/setup_tools.py
62
63
  ./fmtr/tools/tests/__init__.py
63
64
  ./fmtr/tools/tests/conftest.py
64
65
  ./fmtr/tools/tests/helpers.py
@@ -1 +0,0 @@
1
- 1.1.22
File without changes
File without changes
@@ -135,60 +135,60 @@ tabulate
135
135
  openpyxl
136
136
 
137
137
  [test]
138
+ openpyxl
139
+ Unidecode
140
+ pyyaml
141
+ flet-video
142
+ dask[bag]
143
+ appdirs
144
+ semver
145
+ pymupdf
146
+ bokeh
147
+ tabulate
148
+ uvicorn[standard]
149
+ transformers[sentencepiece]
138
150
  google-auth-oauthlib
139
- google-auth-httplib2
140
- json_repair
151
+ dnspython[doh]
152
+ sentence_transformers
153
+ pydantic-settings
154
+ deepmerge
141
155
  pydantic
142
- docker
143
156
  httpx_retries
144
- bokeh
145
- dask[bag]
146
- faker
147
- Unidecode
148
- tokenizers
149
- sentence_transformers
157
+ logfire
158
+ google-auth-httplib2
159
+ torchvision
160
+ pymupdf4llm
161
+ torchaudio
162
+ contexttimer
163
+ distributed
150
164
  peft
151
- flet-webview
165
+ httpx
166
+ regex
152
167
  yamlscript
153
- dnspython[doh]
154
- flet[all]
155
- fastapi
156
168
  filetype
157
- pyyaml
158
- html2text
169
+ pydevd-pycharm
170
+ huggingface_hub
171
+ sre_yield
172
+ flet-webview
173
+ json_repair
174
+ pytest-cov
175
+ fastapi
176
+ tinynetrc
177
+ google-api-python-client
159
178
  ollama
160
- transformers[sentencepiece]
161
- openpyxl
162
- logfire
163
- distributed
164
- deepmerge
165
- pydantic-ai[logfire,openai]
179
+ tokenizers
166
180
  diskcache
167
- pymupdf4llm
181
+ pydantic-ai[logfire,openai]
182
+ html2text
168
183
  pandas
169
184
  setuptools
170
- tabulate
171
- pydantic-settings
172
- contexttimer
173
- httpx
174
- sre_yield
175
- google-api-python-client
185
+ faker
176
186
  openai
177
- appdirs
178
187
  logfire[httpx]
179
- google-auth
180
- pymupdf
181
- pydevd-pycharm
182
- tinynetrc
188
+ docker
183
189
  logfire[fastapi]
184
- pytest-cov
185
- huggingface_hub
186
- torchvision
187
- torchaudio
188
- semver
189
- regex
190
- flet-video
191
- uvicorn[standard]
190
+ flet[all]
191
+ google-auth
192
192
 
193
193
  [tokenization]
194
194
  tokenizers
File without changes
File without changes