fmtr.tools 1.3.34__py3-none-any.whl → 1.3.35__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.

@@ -47,7 +47,7 @@ class MethodDecorator:
47
47
  def __init__(self):
48
48
  """
49
49
 
50
- Initialise with decorator arguments
50
+ Initialise the decorator itself with any arguments
51
51
 
52
52
  """
53
53
  self.func = None
@@ -55,28 +55,17 @@ class MethodDecorator:
55
55
  def __call__(self, func: Callable) -> Self:
56
56
  """
57
57
 
58
- If called, arguments were provided, so return the object with those applied.
58
+ Add the (unbound) method.
59
59
 
60
60
  """
61
61
  self.func = func
62
62
  functools.update_wrapper(self, func)
63
63
  return self
64
64
 
65
- def get_context(self, instance):
66
- """
67
-
68
- If the instance has a context attribute, use that - otherwise use a null context.
69
-
70
- """
71
- context = getattr(instance, self.CONTEXT_KEY, None)
72
- if context:
73
- return context
74
- return context_tools.null()
75
-
76
65
  def __get__(self, instance, owner):
77
66
  """
78
67
 
79
- Wrap at runtime, call start/stop within context.
68
+ Wrap bound method at runtime, call start/stop within context.
80
69
 
81
70
  """
82
71
  if instance is None: # Class method called.
@@ -85,9 +74,9 @@ class MethodDecorator:
85
74
  if inspect.iscoroutinefunction(self.func):
86
75
  async def async_wrapper(*args, **kwargs):
87
76
  with self.get_context(instance):
88
- self.start(instance)
77
+ self.start(instance, *args, **kwargs)
89
78
  result = await self.func(instance, *args, **kwargs)
90
- self.stop(instance)
79
+ self.stop(instance, *args, **kwargs)
91
80
  return result
92
81
 
93
82
  return async_wrapper
@@ -95,15 +84,26 @@ class MethodDecorator:
95
84
  else:
96
85
  def sync_wrapper(*args, **kwargs):
97
86
  with self.get_context(instance):
98
- self.start(instance)
87
+ self.start(instance, *args, **kwargs)
99
88
  result = self.func(instance, *args, **kwargs)
100
- self.stop(instance)
89
+ self.stop(instance, *args, **kwargs)
101
90
  return result
102
91
 
103
92
  return sync_wrapper
104
93
 
105
- def start(self, instance):
94
+ def get_context(self, instance):
95
+ """
96
+
97
+ If the instance has a context attribute, use that - otherwise use a null context.
98
+
99
+ """
100
+ context = getattr(instance, self.CONTEXT_KEY, None)
101
+ if context:
102
+ return context
103
+ return context_tools.null()
104
+
105
+ def start(self, instance, *args, **kwargs):
106
106
  pass
107
107
 
108
- def stop(self, instance):
108
+ def stop(self, instance, *args, **kwargs):
109
109
  pass
fmtr/tools/version CHANGED
@@ -1 +1 @@
1
- 1.3.34
1
+ 1.3.35
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.34
3
+ Version: 1.3.35
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: dnspython[doh]; extra == "all"
130
- Requires-Dist: yamlscript; extra == "all"
131
129
  Requires-Dist: regex; extra == "all"
132
- Requires-Dist: dask[bag]; extra == "all"
130
+ Requires-Dist: distributed; extra == "all"
131
+ Requires-Dist: fastapi; extra == "all"
133
132
  Requires-Dist: appdirs; extra == "all"
134
- Requires-Dist: flet-webview; extra == "all"
135
- Requires-Dist: diskcache; extra == "all"
136
- Requires-Dist: peft; extra == "all"
137
- Requires-Dist: openai; extra == "all"
138
- Requires-Dist: filetype; extra == "all"
139
- Requires-Dist: google-auth-httplib2; extra == "all"
140
- Requires-Dist: deepmerge; extra == "all"
141
- Requires-Dist: transformers[sentencepiece]; extra == "all"
142
- Requires-Dist: flet-video; extra == "all"
133
+ Requires-Dist: setuptools; extra == "all"
134
+ Requires-Dist: dnspython[doh]; extra == "all"
135
+ Requires-Dist: dask[bag]; extra == "all"
136
+ Requires-Dist: json_repair; extra == "all"
143
137
  Requires-Dist: google-auth; extra == "all"
144
- Requires-Dist: pydantic-settings; extra == "all"
145
- Requires-Dist: tokenizers; extra == "all"
146
- Requires-Dist: torchaudio; extra == "all"
147
- Requires-Dist: google-api-python-client; extra == "all"
148
- Requires-Dist: pymupdf4llm; extra == "all"
149
- Requires-Dist: distributed; extra == "all"
150
- Requires-Dist: docker; extra == "all"
151
- Requires-Dist: faker; extra == "all"
152
- Requires-Dist: flet[all]; extra == "all"
153
- Requires-Dist: cachetools; extra == "all"
154
- Requires-Dist: tabulate; extra == "all"
138
+ Requires-Dist: google-auth-httplib2; extra == "all"
155
139
  Requires-Dist: sre_yield; extra == "all"
140
+ Requires-Dist: semver; extra == "all"
141
+ Requires-Dist: tinynetrc; extra == "all"
142
+ Requires-Dist: logfire[fastapi]; extra == "all"
143
+ Requires-Dist: pyyaml; extra == "all"
144
+ Requires-Dist: Unidecode; extra == "all"
156
145
  Requires-Dist: contexttimer; extra == "all"
157
- Requires-Dist: pandas; extra == "all"
158
- Requires-Dist: json_repair; extra == "all"
146
+ Requires-Dist: bokeh; extra == "all"
147
+ Requires-Dist: faker; extra == "all"
148
+ Requires-Dist: ollama; extra == "all"
149
+ Requires-Dist: cachetools; extra == "all"
150
+ Requires-Dist: filetype; extra == "all"
159
151
  Requires-Dist: huggingface_hub; extra == "all"
160
- Requires-Dist: torchvision; extra == "all"
161
- Requires-Dist: uvicorn[standard]; extra == "all"
162
- Requires-Dist: tinynetrc; extra == "all"
163
- Requires-Dist: sentence_transformers; extra == "all"
164
- Requires-Dist: html2text; extra == "all"
152
+ Requires-Dist: logfire[httpx]; extra == "all"
153
+ Requires-Dist: deepmerge; extra == "all"
154
+ Requires-Dist: openai; extra == "all"
155
+ Requires-Dist: docker; extra == "all"
165
156
  Requires-Dist: pymupdf; extra == "all"
166
- Requires-Dist: bokeh; extra == "all"
167
157
  Requires-Dist: pytest-cov; extra == "all"
168
- Requires-Dist: logfire[httpx]; extra == "all"
169
- Requires-Dist: pydantic; extra == "all"
158
+ Requires-Dist: sentence_transformers; extra == "all"
170
159
  Requires-Dist: google-auth-oauthlib; extra == "all"
160
+ Requires-Dist: peft; extra == "all"
161
+ Requires-Dist: pymupdf4llm; extra == "all"
162
+ Requires-Dist: diskcache; extra == "all"
163
+ Requires-Dist: logfire; extra == "all"
164
+ Requires-Dist: uvicorn[standard]; extra == "all"
165
+ Requires-Dist: openpyxl; extra == "all"
166
+ Requires-Dist: flet-video; extra == "all"
167
+ Requires-Dist: flet-webview; extra == "all"
168
+ Requires-Dist: google-api-python-client; extra == "all"
169
+ Requires-Dist: pydantic; extra == "all"
170
+ Requires-Dist: torchaudio; extra == "all"
171
171
  Requires-Dist: httpx; extra == "all"
172
- Requires-Dist: Unidecode; extra == "all"
173
- Requires-Dist: semver; extra == "all"
174
- Requires-Dist: pyyaml; extra == "all"
172
+ Requires-Dist: tokenizers; extra == "all"
173
+ Requires-Dist: tabulate; extra == "all"
174
+ Requires-Dist: flet[all]; extra == "all"
175
+ Requires-Dist: yamlscript; extra == "all"
176
+ Requires-Dist: torchvision; extra == "all"
177
+ Requires-Dist: pydantic-settings; extra == "all"
175
178
  Requires-Dist: httpx_retries; extra == "all"
176
- Requires-Dist: openpyxl; extra == "all"
177
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
178
- Requires-Dist: logfire; extra == "all"
179
- Requires-Dist: setuptools; extra == "all"
179
+ Requires-Dist: pandas; extra == "all"
180
+ Requires-Dist: html2text; extra == "all"
180
181
  Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
181
- Requires-Dist: fastapi; extra == "all"
182
- Requires-Dist: ollama; extra == "all"
183
- Requires-Dist: logfire[fastapi]; extra == "all"
182
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
183
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
184
184
  Dynamic: author
185
185
  Dynamic: author-email
186
186
  Dynamic: description
@@ -11,7 +11,7 @@ fmtr/tools/datatype_tools.py,sha256=3P4AWIFGkJ-UqvXlj0Jc9IvkIIgTOE9jRrOk3NVbpH8,
11
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=jlx6LYFVv9tyNBT_pVD-tDhyR3ccNC7w6ENVlnoxCLM,1823
14
- fmtr/tools/function_tools.py,sha256=c3exfRVTd3fN8N1lT1sdbj7M50XL-GoevkSOb7Eo7EU,2752
14
+ fmtr/tools/function_tools.py,sha256=O1K8HwftXfzrBblNZrj-BhWNbr4poJghrXNr2mFcylI,2831
15
15
  fmtr/tools/google_api_tools.py,sha256=owWE0GlnJjmVbXus8ENxT2PH7Fnd3m_r-14xyR7lAnA,1107
16
16
  fmtr/tools/hash_tools.py,sha256=tr4HXpeT6rRrDk6TvMlRPUSrLRRaov96y128OI2tzsc,729
17
17
  fmtr/tools/hfh_tools.py,sha256=DCDIWuWlhtmIGCtp9cLcOTTEw_4yN_NocLX8w5NZsbk,2384
@@ -45,7 +45,7 @@ fmtr/tools/tabular_tools.py,sha256=tpIpZzYku1HcJrHZJL6BC39LmN3WUWVhFbK2N7nDVmE,1
45
45
  fmtr/tools/tokenization_tools.py,sha256=me-IBzSLyNYejLybwjO9CNB6Mj2NYfKPaOVThXyaGNg,4268
46
46
  fmtr/tools/tools.py,sha256=CAsApa1YwVdNE6H66Vjivs_mXYvOas3rh7fPELAnTpk,795
47
47
  fmtr/tools/unicode_tools.py,sha256=yS_9wpu8ogNoiIL7s1G_8bETFFO_YQlo4LNPv1NLDeY,52
48
- fmtr/tools/version,sha256=ZOiSAtzwnYgSAHIF83-noRMUKSEpP8MZprQqGOOJbAY,6
48
+ fmtr/tools/version,sha256=zQ9tfgNLSm8eypgWubvyEsSaGYhR9voA6WlTkZPeMVM,6
49
49
  fmtr/tools/yaml_tools.py,sha256=Bhhyd6GQVKO72Lp8ky7bAUjIB_65Hdh0Q45SKIEe6S8,1901
50
50
  fmtr/tools/ai_tools/__init__.py,sha256=JZrLuOFNV1A3wvJgonxOgz_4WS-7MfCuowGWA5uYCjs,372
51
51
  fmtr/tools/ai_tools/agentic_tools.py,sha256=8su8wmSEoQaDoDnmcKy_DvtWzssBEpNJtH4PzNAKZUE,4782
@@ -80,9 +80,9 @@ fmtr/tools/tests/test_path.py,sha256=AkZQa6_8BQ-VaCyL_J-iKmdf2ZaM-xFYR37Kun3k4_g
80
80
  fmtr/tools/tests/test_yaml.py,sha256=jc0TwwKu9eC0LvFGNMERdgBue591xwLxYXFbtsRwXVM,287
81
81
  fmtr/tools/version_tools/__init__.py,sha256=pg4iLtmIr5HtyEW_j0fMFoIdzqi_w9xH8-grQaXLB28,318
82
82
  fmtr/tools/version_tools/version_tools.py,sha256=Hcc6yferZS1hHbugRTdiHhSNmXEEG0hjCiTTXKna-YY,1127
83
- fmtr_tools-1.3.34.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
84
- fmtr_tools-1.3.34.dist-info/METADATA,sha256=xyVaIjAH3yktuim6wh613DMUdyYhdJs2rgjjjfrxpKc,15938
85
- fmtr_tools-1.3.34.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
86
- fmtr_tools-1.3.34.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
87
- fmtr_tools-1.3.34.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
88
- fmtr_tools-1.3.34.dist-info/RECORD,,
83
+ fmtr_tools-1.3.35.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
84
+ fmtr_tools-1.3.35.dist-info/METADATA,sha256=pY-FlOv8SKARTP-sfVb4Grjd8K853QgmRaKyzImjbcM,15938
85
+ fmtr_tools-1.3.35.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
86
+ fmtr_tools-1.3.35.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
87
+ fmtr_tools-1.3.35.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
88
+ fmtr_tools-1.3.35.dist-info/RECORD,,