fmtr.tools 1.3.34__tar.gz → 1.3.36__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.34 → fmtr_tools-1.3.36}/PKG-INFO +50 -45
  2. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/__init__.py +5 -0
  3. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/constants.py +1 -0
  4. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/function_tools.py +20 -20
  5. fmtr_tools-1.3.36/fmtr/tools/version +1 -0
  6. fmtr_tools-1.3.36/fmtr/tools/webhook_tools.py +17 -0
  7. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr.tools.egg-info/PKG-INFO +50 -45
  8. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr.tools.egg-info/SOURCES.txt +2 -0
  9. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr.tools.egg-info/requires.txt +50 -44
  10. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/setup.py +2 -1
  11. fmtr_tools-1.3.34/fmtr/tools/version +0 -1
  12. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/LICENSE +0 -0
  13. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/README.md +0 -0
  14. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/ai_tools/__init__.py +0 -0
  15. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
  16. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  17. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/api_tools.py +0 -0
  18. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/async_tools.py +0 -0
  19. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/augmentation_tools.py +0 -0
  20. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/caching_tools.py +0 -0
  21. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/context_tools.py +0 -0
  22. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/data_modelling_tools.py +0 -0
  23. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/dataclass_tools.py +0 -0
  24. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/datatype_tools.py +0 -0
  25. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/debugging_tools.py +0 -0
  26. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/dns_tools/__init__.py +0 -0
  27. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/dns_tools/client.py +0 -0
  28. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/dns_tools/dm.py +0 -0
  29. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/dns_tools/proxy.py +0 -0
  30. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/dns_tools/server.py +0 -0
  31. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/docker_tools.py +0 -0
  32. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/entrypoints/__init__.py +0 -0
  33. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
  34. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/entrypoints/ep_test.py +0 -0
  35. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
  36. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
  37. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/entrypoints/shell_debug.py +0 -0
  38. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/environment_tools.py +0 -0
  39. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/google_api_tools.py +0 -0
  40. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/hash_tools.py +0 -0
  41. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/hfh_tools.py +0 -0
  42. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/html_tools.py +0 -0
  43. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/http_tools.py +0 -0
  44. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/import_tools.py +0 -0
  45. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/inherit_tools.py +0 -0
  46. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/inspection_tools.py +0 -0
  47. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/interface_tools/__init__.py +0 -0
  48. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/interface_tools/controls.py +0 -0
  49. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/interface_tools/interface_tools.py +0 -0
  50. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/iterator_tools.py +0 -0
  51. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/json_fix_tools.py +0 -0
  52. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/json_tools.py +0 -0
  53. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/logging_tools.py +0 -0
  54. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/merging_tools.py +0 -0
  55. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/metric_tools.py +0 -0
  56. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/name_tools.py +0 -0
  57. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/netrc_tools.py +0 -0
  58. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/openai_tools.py +0 -0
  59. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/packaging_tools.py +0 -0
  60. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/parallel_tools.py +0 -0
  61. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/path_tools/__init__.py +0 -0
  62. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/path_tools/app_path_tools.py +0 -0
  63. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/path_tools/path_tools.py +0 -0
  64. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/path_tools/type_path_tools.py +0 -0
  65. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/pattern_tools.py +0 -0
  66. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/pdf_tools.py +0 -0
  67. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/platform_tools.py +0 -0
  68. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/process_tools.py +0 -0
  69. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/profiling_tools.py +0 -0
  70. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/random_tools.py +0 -0
  71. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/semantic_tools.py +0 -0
  72. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/settings_tools.py +0 -0
  73. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/setup_tools/__init__.py +0 -0
  74. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/setup_tools/setup_tools.py +0 -0
  75. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/spaces_tools.py +0 -0
  76. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/string_tools.py +0 -0
  77. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/tabular_tools.py +0 -0
  78. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/tests/__init__.py +0 -0
  79. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/tests/conftest.py +0 -0
  80. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/tests/helpers.py +0 -0
  81. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/tests/test_datatype.py +0 -0
  82. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/tests/test_environment.py +0 -0
  83. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/tests/test_json.py +0 -0
  84. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/tests/test_path.py +0 -0
  85. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/tests/test_yaml.py +0 -0
  86. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/tokenization_tools.py +0 -0
  87. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/tools.py +0 -0
  88. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/unicode_tools.py +0 -0
  89. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/version_tools/__init__.py +0 -0
  90. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/version_tools/version_tools.py +0 -0
  91. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr/tools/yaml_tools.py +0 -0
  92. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  93. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr.tools.egg-info/entry_points.txt +0 -0
  94. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/fmtr.tools.egg-info/top_level.txt +0 -0
  95. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/pyproject.toml +0 -0
  96. {fmtr_tools-1.3.34 → fmtr_tools-1.3.36}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.34
3
+ Version: 1.3.36
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
@@ -125,62 +125,67 @@ Requires-Dist: logfire; extra == "http"
125
125
  Requires-Dist: logfire[httpx]; extra == "http"
126
126
  Provides-Extra: setup
127
127
  Requires-Dist: setuptools; extra == "setup"
128
+ Provides-Extra: webhook
129
+ Requires-Dist: httpx; extra == "webhook"
130
+ Requires-Dist: httpx_retries; extra == "webhook"
131
+ Requires-Dist: logfire; extra == "webhook"
132
+ Requires-Dist: logfire[httpx]; extra == "webhook"
128
133
  Provides-Extra: all
129
- Requires-Dist: cachetools; extra == "all"
130
- Requires-Dist: dask[bag]; extra == "all"
131
- Requires-Dist: faker; extra == "all"
132
- Requires-Dist: distributed; extra == "all"
133
- Requires-Dist: regex; extra == "all"
134
- Requires-Dist: tokenizers; extra == "all"
135
- Requires-Dist: pydantic; extra == "all"
134
+ Requires-Dist: huggingface_hub; extra == "all"
135
+ Requires-Dist: torchaudio; extra == "all"
136
136
  Requires-Dist: openpyxl; extra == "all"
137
- Requires-Dist: pyyaml; extra == "all"
137
+ Requires-Dist: logfire; extra == "all"
138
+ Requires-Dist: pytest-cov; extra == "all"
139
+ Requires-Dist: httpx_retries; extra == "all"
140
+ Requires-Dist: semver; extra == "all"
141
+ Requires-Dist: logfire[fastapi]; extra == "all"
142
+ Requires-Dist: uvicorn[standard]; extra == "all"
138
143
  Requires-Dist: torchvision; extra == "all"
144
+ Requires-Dist: dnspython[doh]; extra == "all"
145
+ Requires-Dist: google-auth; extra == "all"
146
+ Requires-Dist: flet-video; extra == "all"
147
+ Requires-Dist: json_repair; extra == "all"
148
+ Requires-Dist: contexttimer; extra == "all"
149
+ Requires-Dist: html2text; extra == "all"
150
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
151
+ Requires-Dist: dask[bag]; extra == "all"
152
+ Requires-Dist: pandas; extra == "all"
153
+ Requires-Dist: bokeh; extra == "all"
139
154
  Requires-Dist: httpx; extra == "all"
140
- Requires-Dist: docker; extra == "all"
155
+ Requires-Dist: flet[all]; extra == "all"
156
+ Requires-Dist: fastapi; extra == "all"
157
+ Requires-Dist: google-api-python-client; extra == "all"
158
+ Requires-Dist: Unidecode; extra == "all"
159
+ Requires-Dist: peft; extra == "all"
160
+ Requires-Dist: tabulate; extra == "all"
161
+ Requires-Dist: cachetools; extra == "all"
162
+ Requires-Dist: pydantic; extra == "all"
163
+ Requires-Dist: setuptools; extra == "all"
164
+ Requires-Dist: openai; extra == "all"
141
165
  Requires-Dist: tinynetrc; extra == "all"
166
+ Requires-Dist: pymupdf4llm; extra == "all"
167
+ Requires-Dist: docker; extra == "all"
168
+ Requires-Dist: faker; extra == "all"
142
169
  Requires-Dist: ollama; extra == "all"
143
- Requires-Dist: tabulate; extra == "all"
144
- Requires-Dist: sentence_transformers; extra == "all"
145
- Requires-Dist: logfire[httpx]; extra == "all"
146
- Requires-Dist: sre_yield; extra == "all"
147
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
148
- Requires-Dist: bokeh; extra == "all"
149
- Requires-Dist: uvicorn[standard]; extra == "all"
150
- Requires-Dist: torchaudio; extra == "all"
151
- Requires-Dist: google-api-python-client; extra == "all"
152
- Requires-Dist: pytest-cov; extra == "all"
153
- Requires-Dist: pandas; extra == "all"
154
- Requires-Dist: diskcache; extra == "all"
155
- Requires-Dist: contexttimer; extra == "all"
156
- Requires-Dist: google-auth-oauthlib; extra == "all"
157
- Requires-Dist: dnspython[doh]; extra == "all"
158
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
159
- Requires-Dist: huggingface_hub; extra == "all"
160
170
  Requires-Dist: flet-webview; extra == "all"
161
- Requires-Dist: flet-video; extra == "all"
162
- Requires-Dist: openai; extra == "all"
163
- Requires-Dist: Unidecode; extra == "all"
164
171
  Requires-Dist: google-auth-httplib2; extra == "all"
165
- Requires-Dist: httpx_retries; extra == "all"
166
- Requires-Dist: logfire; extra == "all"
167
- Requires-Dist: transformers[sentencepiece]; extra == "all"
172
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
173
+ Requires-Dist: sentence_transformers; extra == "all"
168
174
  Requires-Dist: filetype; extra == "all"
169
- Requires-Dist: peft; extra == "all"
170
- Requires-Dist: flet[all]; extra == "all"
171
- Requires-Dist: google-auth; extra == "all"
175
+ Requires-Dist: yamlscript; extra == "all"
176
+ Requires-Dist: diskcache; extra == "all"
177
+ Requires-Dist: regex; extra == "all"
178
+ Requires-Dist: distributed; extra == "all"
172
179
  Requires-Dist: deepmerge; extra == "all"
173
- Requires-Dist: semver; extra == "all"
174
- Requires-Dist: pymupdf4llm; extra == "all"
180
+ Requires-Dist: google-auth-oauthlib; extra == "all"
175
181
  Requires-Dist: pymupdf; extra == "all"
176
- Requires-Dist: setuptools; extra == "all"
177
- Requires-Dist: logfire[fastapi]; extra == "all"
178
- Requires-Dist: fastapi; extra == "all"
179
- Requires-Dist: json_repair; extra == "all"
180
- Requires-Dist: html2text; extra == "all"
181
- Requires-Dist: pydantic-settings; extra == "all"
182
+ Requires-Dist: pyyaml; extra == "all"
182
183
  Requires-Dist: appdirs; extra == "all"
183
- Requires-Dist: yamlscript; extra == "all"
184
+ Requires-Dist: logfire[httpx]; extra == "all"
185
+ Requires-Dist: sre_yield; extra == "all"
186
+ Requires-Dist: pydantic-settings; extra == "all"
187
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
188
+ Requires-Dist: tokenizers; extra == "all"
184
189
  Dynamic: author
185
190
  Dynamic: author-email
186
191
  Dynamic: description
@@ -168,6 +168,11 @@ try:
168
168
  except ImportError as exception:
169
169
  http = Client = MissingExtraMockModule('http', exception)
170
170
 
171
+ try:
172
+ from fmtr.tools import webhook_tools as webhook
173
+ except ImportError as exception:
174
+ webhook = MissingExtraMockModule('webhook', exception)
175
+
171
176
 
172
177
  def get_version():
173
178
  """
@@ -53,3 +53,4 @@ class Constants:
53
53
  INFRA = 'infra'
54
54
 
55
55
  PROMPT_NONE_SPECIFIED = '[None Specified]'
56
+ WEBHOOK_URL_NOTIFY_KEY = 'WEBHOOK_URL_NOTIFY'
@@ -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
@@ -0,0 +1 @@
1
+ 1.3.36
@@ -0,0 +1,17 @@
1
+ from fmtr.tools import environment_tools, Constants
2
+ from fmtr.tools.http_tools import client
3
+
4
+
5
+ def notify(title, body, url=None):
6
+ """
7
+
8
+ Send simple debug notification
9
+
10
+ """
11
+ url = url or environment_tools.get(Constants.WEBHOOK_URL_NOTIFY_KEY)
12
+ client.post(url, json=dict(title=title, body=body))
13
+
14
+
15
+ if __name__ == '__main__':
16
+ notify('Title', 'Body')
17
+ notify
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.34
3
+ Version: 1.3.36
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
@@ -125,62 +125,67 @@ Requires-Dist: logfire; extra == "http"
125
125
  Requires-Dist: logfire[httpx]; extra == "http"
126
126
  Provides-Extra: setup
127
127
  Requires-Dist: setuptools; extra == "setup"
128
+ Provides-Extra: webhook
129
+ Requires-Dist: httpx; extra == "webhook"
130
+ Requires-Dist: httpx_retries; extra == "webhook"
131
+ Requires-Dist: logfire; extra == "webhook"
132
+ Requires-Dist: logfire[httpx]; extra == "webhook"
128
133
  Provides-Extra: all
129
- Requires-Dist: cachetools; extra == "all"
130
- Requires-Dist: dask[bag]; extra == "all"
131
- Requires-Dist: faker; extra == "all"
132
- Requires-Dist: distributed; extra == "all"
133
- Requires-Dist: regex; extra == "all"
134
- Requires-Dist: tokenizers; extra == "all"
135
- Requires-Dist: pydantic; extra == "all"
134
+ Requires-Dist: huggingface_hub; extra == "all"
135
+ Requires-Dist: torchaudio; extra == "all"
136
136
  Requires-Dist: openpyxl; extra == "all"
137
- Requires-Dist: pyyaml; extra == "all"
137
+ Requires-Dist: logfire; extra == "all"
138
+ Requires-Dist: pytest-cov; extra == "all"
139
+ Requires-Dist: httpx_retries; extra == "all"
140
+ Requires-Dist: semver; extra == "all"
141
+ Requires-Dist: logfire[fastapi]; extra == "all"
142
+ Requires-Dist: uvicorn[standard]; extra == "all"
138
143
  Requires-Dist: torchvision; extra == "all"
144
+ Requires-Dist: dnspython[doh]; extra == "all"
145
+ Requires-Dist: google-auth; extra == "all"
146
+ Requires-Dist: flet-video; extra == "all"
147
+ Requires-Dist: json_repair; extra == "all"
148
+ Requires-Dist: contexttimer; extra == "all"
149
+ Requires-Dist: html2text; extra == "all"
150
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
151
+ Requires-Dist: dask[bag]; extra == "all"
152
+ Requires-Dist: pandas; extra == "all"
153
+ Requires-Dist: bokeh; extra == "all"
139
154
  Requires-Dist: httpx; extra == "all"
140
- Requires-Dist: docker; extra == "all"
155
+ Requires-Dist: flet[all]; extra == "all"
156
+ Requires-Dist: fastapi; extra == "all"
157
+ Requires-Dist: google-api-python-client; extra == "all"
158
+ Requires-Dist: Unidecode; extra == "all"
159
+ Requires-Dist: peft; extra == "all"
160
+ Requires-Dist: tabulate; extra == "all"
161
+ Requires-Dist: cachetools; extra == "all"
162
+ Requires-Dist: pydantic; extra == "all"
163
+ Requires-Dist: setuptools; extra == "all"
164
+ Requires-Dist: openai; extra == "all"
141
165
  Requires-Dist: tinynetrc; extra == "all"
166
+ Requires-Dist: pymupdf4llm; extra == "all"
167
+ Requires-Dist: docker; extra == "all"
168
+ Requires-Dist: faker; extra == "all"
142
169
  Requires-Dist: ollama; extra == "all"
143
- Requires-Dist: tabulate; extra == "all"
144
- Requires-Dist: sentence_transformers; extra == "all"
145
- Requires-Dist: logfire[httpx]; extra == "all"
146
- Requires-Dist: sre_yield; extra == "all"
147
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
148
- Requires-Dist: bokeh; extra == "all"
149
- Requires-Dist: uvicorn[standard]; extra == "all"
150
- Requires-Dist: torchaudio; extra == "all"
151
- Requires-Dist: google-api-python-client; extra == "all"
152
- Requires-Dist: pytest-cov; extra == "all"
153
- Requires-Dist: pandas; extra == "all"
154
- Requires-Dist: diskcache; extra == "all"
155
- Requires-Dist: contexttimer; extra == "all"
156
- Requires-Dist: google-auth-oauthlib; extra == "all"
157
- Requires-Dist: dnspython[doh]; extra == "all"
158
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
159
- Requires-Dist: huggingface_hub; extra == "all"
160
170
  Requires-Dist: flet-webview; extra == "all"
161
- Requires-Dist: flet-video; extra == "all"
162
- Requires-Dist: openai; extra == "all"
163
- Requires-Dist: Unidecode; extra == "all"
164
171
  Requires-Dist: google-auth-httplib2; extra == "all"
165
- Requires-Dist: httpx_retries; extra == "all"
166
- Requires-Dist: logfire; extra == "all"
167
- Requires-Dist: transformers[sentencepiece]; extra == "all"
172
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
173
+ Requires-Dist: sentence_transformers; extra == "all"
168
174
  Requires-Dist: filetype; extra == "all"
169
- Requires-Dist: peft; extra == "all"
170
- Requires-Dist: flet[all]; extra == "all"
171
- Requires-Dist: google-auth; extra == "all"
175
+ Requires-Dist: yamlscript; extra == "all"
176
+ Requires-Dist: diskcache; extra == "all"
177
+ Requires-Dist: regex; extra == "all"
178
+ Requires-Dist: distributed; extra == "all"
172
179
  Requires-Dist: deepmerge; extra == "all"
173
- Requires-Dist: semver; extra == "all"
174
- Requires-Dist: pymupdf4llm; extra == "all"
180
+ Requires-Dist: google-auth-oauthlib; extra == "all"
175
181
  Requires-Dist: pymupdf; extra == "all"
176
- Requires-Dist: setuptools; extra == "all"
177
- Requires-Dist: logfire[fastapi]; extra == "all"
178
- Requires-Dist: fastapi; extra == "all"
179
- Requires-Dist: json_repair; extra == "all"
180
- Requires-Dist: html2text; extra == "all"
181
- Requires-Dist: pydantic-settings; extra == "all"
182
+ Requires-Dist: pyyaml; extra == "all"
182
183
  Requires-Dist: appdirs; extra == "all"
183
- Requires-Dist: yamlscript; extra == "all"
184
+ Requires-Dist: logfire[httpx]; extra == "all"
185
+ Requires-Dist: sre_yield; extra == "all"
186
+ Requires-Dist: pydantic-settings; extra == "all"
187
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
188
+ Requires-Dist: tokenizers; extra == "all"
184
189
  Dynamic: author
185
190
  Dynamic: author-email
186
191
  Dynamic: description
@@ -50,6 +50,7 @@ setup.py
50
50
  ./fmtr/tools/tools.py
51
51
  ./fmtr/tools/unicode_tools.py
52
52
  ./fmtr/tools/version
53
+ ./fmtr/tools/webhook_tools.py
53
54
  ./fmtr/tools/yaml_tools.py
54
55
  ./fmtr/tools/ai_tools/__init__.py
55
56
  ./fmtr/tools/ai_tools/agentic_tools.py
@@ -138,6 +139,7 @@ fmtr/tools/tokenization_tools.py
138
139
  fmtr/tools/tools.py
139
140
  fmtr/tools/unicode_tools.py
140
141
  fmtr/tools/version
142
+ fmtr/tools/webhook_tools.py
141
143
  fmtr/tools/yaml_tools.py
142
144
  fmtr/tools/ai_tools/__init__.py
143
145
  fmtr/tools/ai_tools/agentic_tools.py
@@ -14,61 +14,61 @@ pydantic-ai[logfire,openai]
14
14
  ollama
15
15
 
16
16
  [all]
17
- cachetools
18
- dask[bag]
19
- faker
20
- distributed
21
- regex
22
- tokenizers
23
- pydantic
17
+ huggingface_hub
18
+ torchaudio
24
19
  openpyxl
25
- pyyaml
20
+ logfire
21
+ pytest-cov
22
+ httpx_retries
23
+ semver
24
+ logfire[fastapi]
25
+ uvicorn[standard]
26
26
  torchvision
27
+ dnspython[doh]
28
+ google-auth
29
+ flet-video
30
+ json_repair
31
+ contexttimer
32
+ html2text
33
+ transformers[sentencepiece]
34
+ dask[bag]
35
+ pandas
36
+ bokeh
27
37
  httpx
28
- docker
38
+ flet[all]
39
+ fastapi
40
+ google-api-python-client
41
+ Unidecode
42
+ peft
43
+ tabulate
44
+ cachetools
45
+ pydantic
46
+ setuptools
47
+ openai
29
48
  tinynetrc
49
+ pymupdf4llm
50
+ docker
51
+ faker
30
52
  ollama
31
- tabulate
32
- sentence_transformers
33
- logfire[httpx]
34
- sre_yield
35
- pydevd-pycharm~=251.25410.159
36
- bokeh
37
- uvicorn[standard]
38
- torchaudio
39
- google-api-python-client
40
- pytest-cov
41
- pandas
42
- diskcache
43
- contexttimer
44
- google-auth-oauthlib
45
- dnspython[doh]
46
- pydantic-ai[logfire,openai]
47
- huggingface_hub
48
53
  flet-webview
49
- flet-video
50
- openai
51
- Unidecode
52
54
  google-auth-httplib2
53
- httpx_retries
54
- logfire
55
- transformers[sentencepiece]
55
+ pydantic-ai[logfire,openai]
56
+ sentence_transformers
56
57
  filetype
57
- peft
58
- flet[all]
59
- google-auth
58
+ yamlscript
59
+ diskcache
60
+ regex
61
+ distributed
60
62
  deepmerge
61
- semver
62
- pymupdf4llm
63
+ google-auth-oauthlib
63
64
  pymupdf
64
- setuptools
65
- logfire[fastapi]
66
- fastapi
67
- json_repair
68
- html2text
69
- pydantic-settings
65
+ pyyaml
70
66
  appdirs
71
- yamlscript
67
+ logfire[httpx]
68
+ sre_yield
69
+ pydantic-settings
70
+ pydevd-pycharm~=251.25410.159
71
+ tokenizers
72
72
 
73
73
  [api]
74
74
  fastapi
@@ -207,6 +207,12 @@ Unidecode
207
207
  [version.dev]
208
208
  semver
209
209
 
210
+ [webhook]
211
+ httpx
212
+ httpx_retries
213
+ logfire
214
+ logfire[httpx]
215
+
210
216
  [yaml]
211
217
  yamlscript
212
218
  pyyaml
@@ -39,7 +39,8 @@ DEPENDENCIES = {
39
39
  'dns': ['dnspython[doh]', 'http'],
40
40
  'patterns': ['regex'],
41
41
  'http': ['httpx', 'httpx_retries', 'logging', 'logfire[httpx]'],
42
- 'setup': ['setuptools']
42
+ 'setup': ['setuptools'],
43
+ 'webhook': ['http']
43
44
  }
44
45
 
45
46
  setup = Setup(
@@ -1 +0,0 @@
1
- 1.3.34
File without changes
File without changes
File without changes
File without changes