fmtr.tools 1.3.28__tar.gz → 1.3.29__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 (96) hide show
  1. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/PKG-INFO +44 -44
  2. fmtr_tools-1.3.29/fmtr/tools/context_tools.py +23 -0
  3. fmtr_tools-1.3.29/fmtr/tools/function_tools.py +91 -0
  4. fmtr_tools-1.3.29/fmtr/tools/version +1 -0
  5. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr.tools.egg-info/PKG-INFO +44 -44
  6. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr.tools.egg-info/SOURCES.txt +2 -0
  7. fmtr_tools-1.3.28/fmtr/tools/function_tools.py +0 -33
  8. fmtr_tools-1.3.28/fmtr/tools/version +0 -1
  9. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/LICENSE +0 -0
  10. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/README.md +0 -0
  11. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/__init__.py +0 -0
  12. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/ai_tools/__init__.py +0 -0
  13. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
  14. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  15. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/api_tools.py +0 -0
  16. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/async_tools.py +0 -0
  17. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/augmentation_tools.py +0 -0
  18. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/caching_tools.py +0 -0
  19. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/constants.py +0 -0
  20. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/data_modelling_tools.py +0 -0
  21. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/dataclass_tools.py +0 -0
  22. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/datatype_tools.py +0 -0
  23. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/debugging_tools.py +0 -0
  24. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/dns_tools/__init__.py +0 -0
  25. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/dns_tools/client.py +0 -0
  26. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/dns_tools/dm.py +0 -0
  27. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/dns_tools/proxy.py +0 -0
  28. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/dns_tools/server.py +0 -0
  29. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/docker_tools.py +0 -0
  30. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/entrypoints/__init__.py +0 -0
  31. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
  32. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/entrypoints/ep_test.py +0 -0
  33. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
  34. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
  35. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/entrypoints/shell_debug.py +0 -0
  36. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/environment_tools.py +0 -0
  37. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/google_api_tools.py +0 -0
  38. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/hash_tools.py +0 -0
  39. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/hfh_tools.py +0 -0
  40. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/html_tools.py +0 -0
  41. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/http_tools.py +0 -0
  42. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/import_tools.py +0 -0
  43. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/inherit_tools.py +0 -0
  44. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/inspection_tools.py +0 -0
  45. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/interface_tools/__init__.py +0 -0
  46. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/interface_tools/controls.py +0 -0
  47. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/interface_tools/interface_tools.py +0 -0
  48. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/iterator_tools.py +0 -0
  49. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/json_fix_tools.py +0 -0
  50. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/json_tools.py +0 -0
  51. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/logging_tools.py +0 -0
  52. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/merging_tools.py +0 -0
  53. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/metric_tools.py +0 -0
  54. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/name_tools.py +0 -0
  55. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/netrc_tools.py +0 -0
  56. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/openai_tools.py +0 -0
  57. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/packaging_tools.py +0 -0
  58. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/parallel_tools.py +0 -0
  59. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/path_tools/__init__.py +0 -0
  60. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/path_tools/app_path_tools.py +0 -0
  61. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/path_tools/path_tools.py +0 -0
  62. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/path_tools/type_path_tools.py +0 -0
  63. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/pattern_tools.py +0 -0
  64. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/pdf_tools.py +0 -0
  65. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/platform_tools.py +0 -0
  66. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/process_tools.py +0 -0
  67. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/profiling_tools.py +0 -0
  68. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/random_tools.py +0 -0
  69. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/semantic_tools.py +0 -0
  70. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/settings_tools.py +0 -0
  71. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/setup_tools/__init__.py +0 -0
  72. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/setup_tools/setup_tools.py +0 -0
  73. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/spaces_tools.py +0 -0
  74. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/string_tools.py +0 -0
  75. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/tabular_tools.py +0 -0
  76. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/tests/__init__.py +0 -0
  77. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/tests/conftest.py +0 -0
  78. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/tests/helpers.py +0 -0
  79. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/tests/test_datatype.py +0 -0
  80. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/tests/test_environment.py +0 -0
  81. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/tests/test_json.py +0 -0
  82. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/tests/test_path.py +0 -0
  83. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/tests/test_yaml.py +0 -0
  84. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/tokenization_tools.py +0 -0
  85. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/tools.py +0 -0
  86. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/unicode_tools.py +0 -0
  87. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/version_tools/__init__.py +0 -0
  88. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/version_tools/version_tools.py +0 -0
  89. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr/tools/yaml_tools.py +0 -0
  90. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  91. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr.tools.egg-info/entry_points.txt +0 -0
  92. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr.tools.egg-info/requires.txt +43 -43
  93. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/fmtr.tools.egg-info/top_level.txt +0 -0
  94. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/pyproject.toml +0 -0
  95. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/setup.cfg +0 -0
  96. {fmtr_tools-1.3.28 → fmtr_tools-1.3.29}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.28
3
+ Version: 1.3.29
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
@@ -126,61 +126,61 @@ Requires-Dist: logfire[httpx]; extra == "http"
126
126
  Provides-Extra: setup
127
127
  Requires-Dist: setuptools; extra == "setup"
128
128
  Provides-Extra: all
129
- Requires-Dist: regex; extra == "all"
130
- Requires-Dist: pandas; extra == "all"
131
- Requires-Dist: httpx; extra == "all"
132
- Requires-Dist: google-auth; extra == "all"
133
- Requires-Dist: torchvision; extra == "all"
134
- Requires-Dist: flet[all]; extra == "all"
135
- Requires-Dist: openpyxl; extra == "all"
136
- Requires-Dist: google-auth-oauthlib; extra == "all"
137
- Requires-Dist: cachetools; extra == "all"
129
+ Requires-Dist: tinynetrc; extra == "all"
138
130
  Requires-Dist: filetype; extra == "all"
139
- Requires-Dist: setuptools; extra == "all"
140
- Requires-Dist: sentence_transformers; extra == "all"
131
+ Requires-Dist: dnspython[doh]; extra == "all"
132
+ Requires-Dist: json_repair; extra == "all"
133
+ Requires-Dist: ollama; extra == "all"
134
+ Requires-Dist: google-auth; extra == "all"
141
135
  Requires-Dist: pydantic-settings; extra == "all"
142
- Requires-Dist: bokeh; extra == "all"
143
- Requires-Dist: peft; extra == "all"
144
- Requires-Dist: flet-webview; extra == "all"
136
+ Requires-Dist: semver; extra == "all"
145
137
  Requires-Dist: openai; extra == "all"
146
- Requires-Dist: torchaudio; extra == "all"
147
- Requires-Dist: google-api-python-client; extra == "all"
148
- Requires-Dist: deepmerge; extra == "all"
149
- Requires-Dist: diskcache; extra == "all"
150
- Requires-Dist: huggingface_hub; extra == "all"
138
+ Requires-Dist: distributed; extra == "all"
139
+ Requires-Dist: yamlscript; extra == "all"
140
+ Requires-Dist: dask[bag]; extra == "all"
141
+ Requires-Dist: pyyaml; extra == "all"
142
+ Requires-Dist: tabulate; extra == "all"
143
+ Requires-Dist: flet-webview; extra == "all"
144
+ Requires-Dist: flet-video; extra == "all"
151
145
  Requires-Dist: logfire[fastapi]; extra == "all"
146
+ Requires-Dist: torchaudio; extra == "all"
147
+ Requires-Dist: pymupdf; extra == "all"
148
+ Requires-Dist: pandas; extra == "all"
149
+ Requires-Dist: regex; extra == "all"
150
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
151
+ Requires-Dist: google-auth-oauthlib; extra == "all"
152
152
  Requires-Dist: google-auth-httplib2; extra == "all"
153
- Requires-Dist: Unidecode; extra == "all"
154
- Requires-Dist: ollama; extra == "all"
155
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
156
- Requires-Dist: dnspython[doh]; extra == "all"
157
- Requires-Dist: flet-video; extra == "all"
153
+ Requires-Dist: docker; extra == "all"
154
+ Requires-Dist: sentence_transformers; extra == "all"
158
155
  Requires-Dist: httpx_retries; extra == "all"
159
- Requires-Dist: json_repair; extra == "all"
160
- Requires-Dist: pymupdf4llm; extra == "all"
161
- Requires-Dist: pytest-cov; extra == "all"
162
- Requires-Dist: sre_yield; extra == "all"
156
+ Requires-Dist: torchvision; extra == "all"
157
+ Requires-Dist: uvicorn[standard]; extra == "all"
158
+ Requires-Dist: faker; extra == "all"
159
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
160
+ Requires-Dist: setuptools; extra == "all"
161
+ Requires-Dist: bokeh; extra == "all"
163
162
  Requires-Dist: contexttimer; extra == "all"
164
- Requires-Dist: semver; extra == "all"
165
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
166
163
  Requires-Dist: fastapi; extra == "all"
167
164
  Requires-Dist: tokenizers; extra == "all"
168
- Requires-Dist: logfire[httpx]; extra == "all"
169
- Requires-Dist: pymupdf; extra == "all"
165
+ Requires-Dist: diskcache; extra == "all"
166
+ Requires-Dist: cachetools; extra == "all"
167
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
168
+ Requires-Dist: openpyxl; extra == "all"
169
+ Requires-Dist: appdirs; extra == "all"
170
+ Requires-Dist: huggingface_hub; extra == "all"
171
+ Requires-Dist: pytest-cov; extra == "all"
172
+ Requires-Dist: sre_yield; extra == "all"
173
+ Requires-Dist: flet[all]; extra == "all"
170
174
  Requires-Dist: html2text; extra == "all"
175
+ Requires-Dist: google-api-python-client; extra == "all"
171
176
  Requires-Dist: pydantic; extra == "all"
172
- Requires-Dist: yamlscript; extra == "all"
173
- Requires-Dist: uvicorn[standard]; extra == "all"
174
- Requires-Dist: distributed; extra == "all"
175
- Requires-Dist: faker; extra == "all"
176
- Requires-Dist: docker; extra == "all"
177
+ Requires-Dist: Unidecode; extra == "all"
178
+ Requires-Dist: peft; extra == "all"
179
+ Requires-Dist: pymupdf4llm; extra == "all"
180
+ Requires-Dist: httpx; extra == "all"
181
+ Requires-Dist: deepmerge; extra == "all"
177
182
  Requires-Dist: logfire; extra == "all"
178
- Requires-Dist: appdirs; extra == "all"
179
- Requires-Dist: pyyaml; extra == "all"
180
- Requires-Dist: dask[bag]; extra == "all"
181
- Requires-Dist: transformers[sentencepiece]; extra == "all"
182
- Requires-Dist: tabulate; extra == "all"
183
- Requires-Dist: tinynetrc; extra == "all"
183
+ Requires-Dist: logfire[httpx]; extra == "all"
184
184
  Dynamic: author
185
185
  Dynamic: author-email
186
186
  Dynamic: description
@@ -0,0 +1,23 @@
1
+ from contextlib import contextmanager, ExitStack
2
+
3
+
4
+ @contextmanager
5
+ def null():
6
+ """
7
+
8
+ Null context manager.
9
+
10
+ """
11
+ yield
12
+
13
+
14
+ @contextmanager
15
+ def contexts(*contexts):
16
+ """
17
+
18
+ Tee context managers.
19
+
20
+ """
21
+ with ExitStack() as stack:
22
+ resources = [stack.enter_context(context) for context in contexts]
23
+ yield resources
@@ -0,0 +1,91 @@
1
+ import functools
2
+ import inspect
3
+ from typing import Tuple
4
+
5
+ from fmtr.tools import context_tools
6
+
7
+
8
+ def combine_args_kwargs(args: dict=None, kwargs: dict=None) -> dict:
9
+ """
10
+
11
+ Combines arguments and keyword arguments into a single dictionary.
12
+
13
+ """
14
+ args = args or []
15
+ kwargs = kwargs or {}
16
+ args = {i: arg for i, arg in enumerate(args)}
17
+ args.update(kwargs)
18
+ if all(isinstance(key, int) for key in args.keys()):
19
+ args = list(args.values())
20
+ return args
21
+
22
+
23
+ def split_args_kwargs(args_kwargs: dict) -> Tuple[list, dict]:
24
+ """
25
+
26
+ Splits arguments and keyword arguments into a list and a dictionary.
27
+
28
+ """
29
+ if isinstance(args_kwargs, list):
30
+ args, kwargs = args_kwargs, {}
31
+ else:
32
+ args = [arg for key, arg in args_kwargs.items() if isinstance(key, int)]
33
+ kwargs = {key: arg for key, arg in args_kwargs.items() if not isinstance(key, int)}
34
+
35
+ return args, kwargs
36
+
37
+
38
+ class BoundDecorator:
39
+ """
40
+
41
+ Bound method decorator with overridable start/stop and context manager
42
+
43
+ """
44
+
45
+ def __init__(self, func):
46
+ self.func = func
47
+ self.context_null = context_tools.null()
48
+ functools.update_wrapper(self, func)
49
+
50
+ def get_context(self, instance):
51
+ """
52
+
53
+ By default use a null context.
54
+
55
+ """
56
+ return self.context_null
57
+
58
+ def __get__(self, instance, owner):
59
+ """
60
+
61
+ Wrap at runtime, call start/stop within context.
62
+
63
+ """
64
+ if instance is None:
65
+ return self.func
66
+
67
+ if inspect.iscoroutinefunction(self.func):
68
+ async def async_wrapper(*args, **kwargs):
69
+ with self.get_context(instance):
70
+ self.start(instance)
71
+ result = await self.func(instance, *args, **kwargs)
72
+ self.stop(instance)
73
+ return result
74
+
75
+ return functools.update_wrapper(async_wrapper, self.func)
76
+
77
+ else:
78
+ def sync_wrapper(*args, **kwargs):
79
+ with self.get_context(instance):
80
+ self.start(instance)
81
+ result = self.func(instance, *args, **kwargs)
82
+ self.stop(instance)
83
+ return result
84
+
85
+ return functools.update_wrapper(sync_wrapper, self.func)
86
+
87
+ def start(self, instance):
88
+ pass
89
+
90
+ def stop(self, instance):
91
+ pass
@@ -0,0 +1 @@
1
+ 1.3.29
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.28
3
+ Version: 1.3.29
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
@@ -126,61 +126,61 @@ Requires-Dist: logfire[httpx]; extra == "http"
126
126
  Provides-Extra: setup
127
127
  Requires-Dist: setuptools; extra == "setup"
128
128
  Provides-Extra: all
129
- Requires-Dist: regex; extra == "all"
130
- Requires-Dist: pandas; extra == "all"
131
- Requires-Dist: httpx; extra == "all"
132
- Requires-Dist: google-auth; extra == "all"
133
- Requires-Dist: torchvision; extra == "all"
134
- Requires-Dist: flet[all]; extra == "all"
135
- Requires-Dist: openpyxl; extra == "all"
136
- Requires-Dist: google-auth-oauthlib; extra == "all"
137
- Requires-Dist: cachetools; extra == "all"
129
+ Requires-Dist: tinynetrc; extra == "all"
138
130
  Requires-Dist: filetype; extra == "all"
139
- Requires-Dist: setuptools; extra == "all"
140
- Requires-Dist: sentence_transformers; extra == "all"
131
+ Requires-Dist: dnspython[doh]; extra == "all"
132
+ Requires-Dist: json_repair; extra == "all"
133
+ Requires-Dist: ollama; extra == "all"
134
+ Requires-Dist: google-auth; extra == "all"
141
135
  Requires-Dist: pydantic-settings; extra == "all"
142
- Requires-Dist: bokeh; extra == "all"
143
- Requires-Dist: peft; extra == "all"
144
- Requires-Dist: flet-webview; extra == "all"
136
+ Requires-Dist: semver; extra == "all"
145
137
  Requires-Dist: openai; extra == "all"
146
- Requires-Dist: torchaudio; extra == "all"
147
- Requires-Dist: google-api-python-client; extra == "all"
148
- Requires-Dist: deepmerge; extra == "all"
149
- Requires-Dist: diskcache; extra == "all"
150
- Requires-Dist: huggingface_hub; extra == "all"
138
+ Requires-Dist: distributed; extra == "all"
139
+ Requires-Dist: yamlscript; extra == "all"
140
+ Requires-Dist: dask[bag]; extra == "all"
141
+ Requires-Dist: pyyaml; extra == "all"
142
+ Requires-Dist: tabulate; extra == "all"
143
+ Requires-Dist: flet-webview; extra == "all"
144
+ Requires-Dist: flet-video; extra == "all"
151
145
  Requires-Dist: logfire[fastapi]; extra == "all"
146
+ Requires-Dist: torchaudio; extra == "all"
147
+ Requires-Dist: pymupdf; extra == "all"
148
+ Requires-Dist: pandas; extra == "all"
149
+ Requires-Dist: regex; extra == "all"
150
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
151
+ Requires-Dist: google-auth-oauthlib; extra == "all"
152
152
  Requires-Dist: google-auth-httplib2; extra == "all"
153
- Requires-Dist: Unidecode; extra == "all"
154
- Requires-Dist: ollama; extra == "all"
155
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
156
- Requires-Dist: dnspython[doh]; extra == "all"
157
- Requires-Dist: flet-video; extra == "all"
153
+ Requires-Dist: docker; extra == "all"
154
+ Requires-Dist: sentence_transformers; extra == "all"
158
155
  Requires-Dist: httpx_retries; extra == "all"
159
- Requires-Dist: json_repair; extra == "all"
160
- Requires-Dist: pymupdf4llm; extra == "all"
161
- Requires-Dist: pytest-cov; extra == "all"
162
- Requires-Dist: sre_yield; extra == "all"
156
+ Requires-Dist: torchvision; extra == "all"
157
+ Requires-Dist: uvicorn[standard]; extra == "all"
158
+ Requires-Dist: faker; extra == "all"
159
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
160
+ Requires-Dist: setuptools; extra == "all"
161
+ Requires-Dist: bokeh; extra == "all"
163
162
  Requires-Dist: contexttimer; extra == "all"
164
- Requires-Dist: semver; extra == "all"
165
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
166
163
  Requires-Dist: fastapi; extra == "all"
167
164
  Requires-Dist: tokenizers; extra == "all"
168
- Requires-Dist: logfire[httpx]; extra == "all"
169
- Requires-Dist: pymupdf; extra == "all"
165
+ Requires-Dist: diskcache; extra == "all"
166
+ Requires-Dist: cachetools; extra == "all"
167
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
168
+ Requires-Dist: openpyxl; extra == "all"
169
+ Requires-Dist: appdirs; extra == "all"
170
+ Requires-Dist: huggingface_hub; extra == "all"
171
+ Requires-Dist: pytest-cov; extra == "all"
172
+ Requires-Dist: sre_yield; extra == "all"
173
+ Requires-Dist: flet[all]; extra == "all"
170
174
  Requires-Dist: html2text; extra == "all"
175
+ Requires-Dist: google-api-python-client; extra == "all"
171
176
  Requires-Dist: pydantic; extra == "all"
172
- Requires-Dist: yamlscript; extra == "all"
173
- Requires-Dist: uvicorn[standard]; extra == "all"
174
- Requires-Dist: distributed; extra == "all"
175
- Requires-Dist: faker; extra == "all"
176
- Requires-Dist: docker; extra == "all"
177
+ Requires-Dist: Unidecode; extra == "all"
178
+ Requires-Dist: peft; extra == "all"
179
+ Requires-Dist: pymupdf4llm; extra == "all"
180
+ Requires-Dist: httpx; extra == "all"
181
+ Requires-Dist: deepmerge; extra == "all"
177
182
  Requires-Dist: logfire; extra == "all"
178
- Requires-Dist: appdirs; extra == "all"
179
- Requires-Dist: pyyaml; extra == "all"
180
- Requires-Dist: dask[bag]; extra == "all"
181
- Requires-Dist: transformers[sentencepiece]; extra == "all"
182
- Requires-Dist: tabulate; extra == "all"
183
- Requires-Dist: tinynetrc; extra == "all"
183
+ Requires-Dist: logfire[httpx]; extra == "all"
184
184
  Dynamic: author
185
185
  Dynamic: author-email
186
186
  Dynamic: description
@@ -8,6 +8,7 @@ setup.py
8
8
  ./fmtr/tools/augmentation_tools.py
9
9
  ./fmtr/tools/caching_tools.py
10
10
  ./fmtr/tools/constants.py
11
+ ./fmtr/tools/context_tools.py
11
12
  ./fmtr/tools/data_modelling_tools.py
12
13
  ./fmtr/tools/dataclass_tools.py
13
14
  ./fmtr/tools/datatype_tools.py
@@ -95,6 +96,7 @@ fmtr/tools/async_tools.py
95
96
  fmtr/tools/augmentation_tools.py
96
97
  fmtr/tools/caching_tools.py
97
98
  fmtr/tools/constants.py
99
+ fmtr/tools/context_tools.py
98
100
  fmtr/tools/data_modelling_tools.py
99
101
  fmtr/tools/dataclass_tools.py
100
102
  fmtr/tools/datatype_tools.py
@@ -1,33 +0,0 @@
1
- from typing import Tuple
2
-
3
-
4
- def combine_args_kwargs(args: dict=None, kwargs: dict=None) -> dict:
5
- """
6
-
7
- Combines arguments and keyword arguments into a single dictionary.
8
-
9
- """
10
- args = args or []
11
- kwargs = kwargs or {}
12
- args = {i: arg for i, arg in enumerate(args)}
13
- args.update(kwargs)
14
- if all(isinstance(key, int) for key in args.keys()):
15
- args = list(args.values())
16
- return args
17
-
18
-
19
- def split_args_kwargs(args_kwargs: dict) -> Tuple[list, dict]:
20
- """
21
-
22
- Splits arguments and keyword arguments into a list and a dictionary.
23
-
24
- """
25
- if isinstance(args_kwargs, list):
26
- args, kwargs = args_kwargs, {}
27
- else:
28
- args = [arg for key, arg in args_kwargs.items() if isinstance(key, int)]
29
- kwargs = {key: arg for key, arg in args_kwargs.items() if not isinstance(key, int)}
30
-
31
- return args, kwargs
32
-
33
-
@@ -1 +0,0 @@
1
- 1.3.28
File without changes
File without changes
@@ -14,61 +14,61 @@ pydantic-ai[logfire,openai]
14
14
  ollama
15
15
 
16
16
  [all]
17
- regex
18
- pandas
19
- httpx
20
- google-auth
21
- torchvision
22
- flet[all]
23
- openpyxl
24
- google-auth-oauthlib
25
- cachetools
17
+ tinynetrc
26
18
  filetype
27
- setuptools
28
- sentence_transformers
19
+ dnspython[doh]
20
+ json_repair
21
+ ollama
22
+ google-auth
29
23
  pydantic-settings
30
- bokeh
31
- peft
32
- flet-webview
24
+ semver
33
25
  openai
34
- torchaudio
35
- google-api-python-client
36
- deepmerge
37
- diskcache
38
- huggingface_hub
26
+ distributed
27
+ yamlscript
28
+ dask[bag]
29
+ pyyaml
30
+ tabulate
31
+ flet-webview
32
+ flet-video
39
33
  logfire[fastapi]
34
+ torchaudio
35
+ pymupdf
36
+ pandas
37
+ regex
38
+ pydantic-ai[logfire,openai]
39
+ google-auth-oauthlib
40
40
  google-auth-httplib2
41
- Unidecode
42
- ollama
43
- pydevd-pycharm~=251.25410.159
44
- dnspython[doh]
45
- flet-video
41
+ docker
42
+ sentence_transformers
46
43
  httpx_retries
47
- json_repair
48
- pymupdf4llm
49
- pytest-cov
50
- sre_yield
44
+ torchvision
45
+ uvicorn[standard]
46
+ faker
47
+ transformers[sentencepiece]
48
+ setuptools
49
+ bokeh
51
50
  contexttimer
52
- semver
53
- pydantic-ai[logfire,openai]
54
51
  fastapi
55
52
  tokenizers
56
- logfire[httpx]
57
- pymupdf
53
+ diskcache
54
+ cachetools
55
+ pydevd-pycharm~=251.25410.159
56
+ openpyxl
57
+ appdirs
58
+ huggingface_hub
59
+ pytest-cov
60
+ sre_yield
61
+ flet[all]
58
62
  html2text
63
+ google-api-python-client
59
64
  pydantic
60
- yamlscript
61
- uvicorn[standard]
62
- distributed
63
- faker
64
- docker
65
+ Unidecode
66
+ peft
67
+ pymupdf4llm
68
+ httpx
69
+ deepmerge
65
70
  logfire
66
- appdirs
67
- pyyaml
68
- dask[bag]
69
- transformers[sentencepiece]
70
- tabulate
71
- tinynetrc
71
+ logfire[httpx]
72
72
 
73
73
  [api]
74
74
  fastapi
File without changes
File without changes
File without changes