fmtr.tools 1.3.61__tar.gz → 1.3.63__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 (100) hide show
  1. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/PKG-INFO +51 -51
  2. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/pdf_tools.py +28 -4
  3. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/string_tools.py +21 -5
  4. fmtr_tools-1.3.63/fmtr/tools/version +1 -0
  5. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr.tools.egg-info/PKG-INFO +51 -51
  6. fmtr_tools-1.3.61/fmtr/tools/version +0 -1
  7. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/LICENSE +0 -0
  8. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/README.md +0 -0
  9. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/__init__.py +0 -0
  10. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/ai_tools/__init__.py +0 -0
  11. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
  12. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  13. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/api_tools.py +0 -0
  14. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/async_tools.py +0 -0
  15. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/augmentation_tools.py +0 -0
  16. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/caching_tools.py +0 -0
  17. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/constants.py +0 -0
  18. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/context_tools.py +0 -0
  19. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/data_modelling_tools.py +0 -0
  20. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/database_tools/__init__.py +0 -0
  21. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/database_tools/document.py +0 -0
  22. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/dataclass_tools.py +0 -0
  23. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/datatype_tools.py +0 -0
  24. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/datetime_tools.py +0 -0
  25. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/debugging_tools.py +0 -0
  26. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/dns_tools/__init__.py +0 -0
  27. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/dns_tools/client.py +0 -0
  28. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/dns_tools/dm.py +0 -0
  29. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/dns_tools/proxy.py +0 -0
  30. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/dns_tools/server.py +0 -0
  31. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/docker_tools/__init__.py +0 -0
  32. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/entrypoints/__init__.py +0 -0
  33. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
  34. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/entrypoints/ep_test.py +0 -0
  35. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
  36. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
  37. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/entrypoints/shell_debug.py +0 -0
  38. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/environment_tools.py +0 -0
  39. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/function_tools.py +0 -0
  40. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/google_api_tools.py +0 -0
  41. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/hash_tools.py +0 -0
  42. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/hfh_tools.py +0 -0
  43. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/html_tools.py +0 -0
  44. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/http_tools.py +0 -0
  45. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/import_tools.py +0 -0
  46. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/inherit_tools.py +0 -0
  47. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/inspection_tools.py +0 -0
  48. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/interface_tools/__init__.py +0 -0
  49. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/interface_tools/context.py +0 -0
  50. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/interface_tools/controls.py +0 -0
  51. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/interface_tools/interface_tools.py +0 -0
  52. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/iterator_tools.py +0 -0
  53. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/json_fix_tools.py +0 -0
  54. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/json_tools.py +0 -0
  55. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/logging_tools.py +0 -0
  56. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/merging_tools.py +0 -0
  57. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/metric_tools.py +0 -0
  58. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/name_tools.py +0 -0
  59. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/netrc_tools.py +0 -0
  60. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/openai_tools.py +0 -0
  61. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/packaging_tools.py +0 -0
  62. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/parallel_tools.py +0 -0
  63. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/path_tools/__init__.py +0 -0
  64. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/path_tools/app_path_tools.py +0 -0
  65. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/path_tools/path_tools.py +0 -0
  66. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/path_tools/type_path_tools.py +0 -0
  67. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/pattern_tools.py +0 -0
  68. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/platform_tools.py +0 -0
  69. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/process_tools.py +0 -0
  70. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/profiling_tools.py +0 -0
  71. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/random_tools.py +0 -0
  72. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/semantic_tools.py +0 -0
  73. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/settings_tools.py +0 -0
  74. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/setup_tools/__init__.py +0 -0
  75. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/setup_tools/setup_tools.py +0 -0
  76. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/spaces_tools.py +0 -0
  77. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/tabular_tools.py +0 -0
  78. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/tests/__init__.py +0 -0
  79. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/tests/conftest.py +0 -0
  80. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/tests/helpers.py +0 -0
  81. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/tests/test_datatype.py +0 -0
  82. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/tests/test_environment.py +0 -0
  83. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/tests/test_json.py +0 -0
  84. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/tests/test_path.py +0 -0
  85. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/tests/test_yaml.py +0 -0
  86. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/tokenization_tools.py +0 -0
  87. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/tools.py +0 -0
  88. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/unicode_tools.py +0 -0
  89. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/version_tools/__init__.py +0 -0
  90. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/version_tools/version_tools.py +0 -0
  91. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/webhook_tools.py +0 -0
  92. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr/tools/yaml_tools.py +0 -0
  93. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr.tools.egg-info/SOURCES.txt +0 -0
  94. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  95. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr.tools.egg-info/entry_points.txt +0 -0
  96. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr.tools.egg-info/requires.txt +50 -50
  97. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/fmtr.tools.egg-info/top_level.txt +0 -0
  98. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/pyproject.toml +0 -0
  99. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/setup.cfg +0 -0
  100. {fmtr_tools-1.3.61 → fmtr_tools-1.3.63}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.61
3
+ Version: 1.3.63
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
@@ -154,68 +154,68 @@ Provides-Extra: db-document
154
154
  Requires-Dist: beanie[odm]; extra == "db-document"
155
155
  Requires-Dist: motor; extra == "db-document"
156
156
  Provides-Extra: all
157
+ Requires-Dist: huggingface_hub; extra == "all"
158
+ Requires-Dist: sre_yield; extra == "all"
159
+ Requires-Dist: torchaudio; extra == "all"
160
+ Requires-Dist: google-auth-oauthlib; extra == "all"
157
161
  Requires-Dist: tabulate; extra == "all"
158
- Requires-Dist: pydantic-extra-types; extra == "all"
159
- Requires-Dist: google-auth-httplib2; extra == "all"
160
- Requires-Dist: filetype; extra == "all"
161
- Requires-Dist: odfpy; extra == "all"
162
162
  Requires-Dist: logfire[fastapi]; extra == "all"
163
- Requires-Dist: torchaudio; extra == "all"
164
- Requires-Dist: python-on-whales; extra == "all"
163
+ Requires-Dist: google-auth-httplib2; extra == "all"
165
164
  Requires-Dist: torchvision; extra == "all"
166
- Requires-Dist: pydantic-settings; extra == "all"
167
- Requires-Dist: logfire[httpx]; extra == "all"
168
- Requires-Dist: dnspython[doh]; extra == "all"
169
- Requires-Dist: deepmerge; extra == "all"
170
165
  Requires-Dist: pyyaml; extra == "all"
171
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
172
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
173
- Requires-Dist: pandas; extra == "all"
174
- Requires-Dist: beanie[odm]; extra == "all"
175
- Requires-Dist: sentence_transformers; extra == "all"
176
- Requires-Dist: playwright; extra == "all"
177
- Requires-Dist: dask[bag]; extra == "all"
178
- Requires-Dist: yamlscript; extra == "all"
179
- Requires-Dist: Unidecode; extra == "all"
180
- Requires-Dist: pytest-cov; extra == "all"
181
- Requires-Dist: httpx; extra == "all"
182
- Requires-Dist: html2text; extra == "all"
183
- Requires-Dist: transformers[sentencepiece]; extra == "all"
184
- Requires-Dist: regex; extra == "all"
166
+ Requires-Dist: openai; extra == "all"
167
+ Requires-Dist: flet[all]; extra == "all"
168
+ Requires-Dist: pymupdf4llm; extra == "all"
169
+ Requires-Dist: appdirs; extra == "all"
170
+ Requires-Dist: uvicorn[standard]; extra == "all"
171
+ Requires-Dist: semver; extra == "all"
172
+ Requires-Dist: logfire[httpx]; extra == "all"
185
173
  Requires-Dist: tokenizers; extra == "all"
186
- Requires-Dist: pydantic; extra == "all"
174
+ Requires-Dist: cachetools; extra == "all"
175
+ Requires-Dist: pydantic-settings; extra == "all"
187
176
  Requires-Dist: pycountry; extra == "all"
188
- Requires-Dist: huggingface_hub; extra == "all"
189
- Requires-Dist: contexttimer; extra == "all"
190
- Requires-Dist: bokeh; extra == "all"
191
- Requires-Dist: semver; extra == "all"
192
- Requires-Dist: flet-webview; extra == "all"
193
- Requires-Dist: logfire; extra == "all"
194
- Requires-Dist: sre_yield; extra == "all"
195
- Requires-Dist: deepdiff; extra == "all"
177
+ Requires-Dist: pytest-cov; extra == "all"
178
+ Requires-Dist: deepmerge; extra == "all"
179
+ Requires-Dist: regex; extra == "all"
196
180
  Requires-Dist: json_repair; extra == "all"
197
- Requires-Dist: cachetools; extra == "all"
181
+ Requires-Dist: Unidecode; extra == "all"
182
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
183
+ Requires-Dist: pymupdf; extra == "all"
184
+ Requires-Dist: playwright; extra == "all"
185
+ Requires-Dist: tinynetrc; extra == "all"
186
+ Requires-Dist: odfpy; extra == "all"
187
+ Requires-Dist: ollama; extra == "all"
188
+ Requires-Dist: pydantic-extra-types; extra == "all"
189
+ Requires-Dist: peft; extra == "all"
198
190
  Requires-Dist: distributed; extra == "all"
199
- Requires-Dist: pymupdf4llm; extra == "all"
200
- Requires-Dist: httpx_retries; extra == "all"
201
- Requires-Dist: faker; extra == "all"
202
- Requires-Dist: flet[all]; extra == "all"
203
- Requires-Dist: motor; extra == "all"
204
- Requires-Dist: uvicorn[standard]; extra == "all"
205
191
  Requires-Dist: diskcache; extra == "all"
206
- Requires-Dist: appdirs; extra == "all"
207
- Requires-Dist: openai; extra == "all"
208
- Requires-Dist: google-auth-oauthlib; extra == "all"
209
- Requires-Dist: setuptools; extra == "all"
210
- Requires-Dist: flet-video; extra == "all"
211
192
  Requires-Dist: google-api-python-client; extra == "all"
212
- Requires-Dist: ollama; extra == "all"
213
- Requires-Dist: openpyxl; extra == "all"
193
+ Requires-Dist: filetype; extra == "all"
194
+ Requires-Dist: flet-video; extra == "all"
195
+ Requires-Dist: bokeh; extra == "all"
214
196
  Requires-Dist: google-auth; extra == "all"
215
- Requires-Dist: tinynetrc; extra == "all"
216
- Requires-Dist: pymupdf; extra == "all"
217
- Requires-Dist: peft; extra == "all"
197
+ Requires-Dist: logfire; extra == "all"
198
+ Requires-Dist: beanie[odm]; extra == "all"
199
+ Requires-Dist: openpyxl; extra == "all"
200
+ Requires-Dist: setuptools; extra == "all"
201
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
202
+ Requires-Dist: httpx; extra == "all"
203
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
204
+ Requires-Dist: yamlscript; extra == "all"
205
+ Requires-Dist: faker; extra == "all"
206
+ Requires-Dist: contexttimer; extra == "all"
207
+ Requires-Dist: pandas; extra == "all"
218
208
  Requires-Dist: fastapi; extra == "all"
209
+ Requires-Dist: motor; extra == "all"
210
+ Requires-Dist: dask[bag]; extra == "all"
211
+ Requires-Dist: dnspython[doh]; extra == "all"
212
+ Requires-Dist: sentence_transformers; extra == "all"
213
+ Requires-Dist: deepdiff; extra == "all"
214
+ Requires-Dist: python-on-whales; extra == "all"
215
+ Requires-Dist: httpx_retries; extra == "all"
216
+ Requires-Dist: flet-webview; extra == "all"
217
+ Requires-Dist: pydantic; extra == "all"
218
+ Requires-Dist: html2text; extra == "all"
219
219
  Dynamic: author
220
220
  Dynamic: author-email
221
221
  Dynamic: description
@@ -1,6 +1,7 @@
1
+ from typing import List, Tuple, Dict, Any, Self
2
+
1
3
  import pymupdf as pm
2
4
  import pymupdf4llm
3
- from typing import List, Tuple, Dict, Any, Self
4
5
 
5
6
  from fmtr.tools import data_modelling_tools
6
7
 
@@ -179,10 +180,10 @@ class Document(pm.Document):
179
180
  """
180
181
  return pymupdf4llm.to_markdown(self, **kwargs)
181
182
 
182
- def to_text(self):
183
+ def to_text_pages(self) -> List[str]:
183
184
  """
184
185
 
185
- Simple text output.
186
+ Simple text output per-page.
186
187
 
187
188
  """
188
189
  lines = []
@@ -190,9 +191,32 @@ class Document(pm.Document):
190
191
  text = page.get_text()
191
192
  lines.append(text)
192
193
 
193
- text = '\n'.join(lines)
194
+ return lines
195
+
196
+ def to_text(self) -> str:
197
+ """
198
+
199
+ Simple text output.
200
+
201
+ """
202
+
203
+ text = '\n'.join(self.to_text_pages())
194
204
  return text
195
205
 
206
+ def split(self) -> List[Self]:
207
+ """
208
+
209
+ Split pages into individual documents.
210
+
211
+ """
212
+
213
+ documents = []
214
+ for i, page in enumerate(self, start=1):
215
+ document = self.__class__()
216
+ document.insert_pdf(self, from_page=i, to_page=i)
217
+ documents.append(document)
218
+
219
+ return documents
196
220
 
197
221
  if __name__ == '__main__':
198
222
  from fmtr.tools.path_tools import Path
@@ -1,11 +1,11 @@
1
- from collections import namedtuple
2
- from string import Formatter
3
-
4
1
  import re
5
2
  from dataclasses import dataclass
6
3
  from textwrap import dedent
7
4
  from typing import List
8
5
 
6
+ from collections import namedtuple
7
+ from string import Formatter
8
+
9
9
  from fmtr.tools.datatype_tools import is_none
10
10
 
11
11
  ELLIPSIS = '…'
@@ -151,14 +151,14 @@ def truncate_mid(text, length=None, sep=ELLIPSIS, return_type=str):
151
151
  )
152
152
 
153
153
 
154
- def flatten(raw):
154
+ def flatten(raw, sep=' '):
155
155
  """
156
156
 
157
157
  Flatten a multiline string to a single line
158
158
 
159
159
  """
160
160
  lines = raw.splitlines()
161
- text = ' '.join(lines)
161
+ text = sep.join(lines)
162
162
  text = text.strip()
163
163
  return text
164
164
 
@@ -175,6 +175,22 @@ def join(strings, sep=' '):
175
175
  return text
176
176
 
177
177
 
178
+ def join_natural(items, sep=', ', conj='and'):
179
+ """
180
+
181
+ Natural language list
182
+
183
+ """
184
+
185
+ if not items:
186
+ return ""
187
+ if len(items) == 1:
188
+ return items[0]
189
+ firsts, last = items[:-1], items[-1]
190
+ firsts_str = join(firsts, sep=sep)
191
+ text = f"{firsts_str} {conj} {last}"
192
+ return text
193
+
178
194
  class Mask:
179
195
  """
180
196
 
@@ -0,0 +1 @@
1
+ 1.3.63
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.61
3
+ Version: 1.3.63
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
@@ -154,68 +154,68 @@ Provides-Extra: db-document
154
154
  Requires-Dist: beanie[odm]; extra == "db-document"
155
155
  Requires-Dist: motor; extra == "db-document"
156
156
  Provides-Extra: all
157
+ Requires-Dist: huggingface_hub; extra == "all"
158
+ Requires-Dist: sre_yield; extra == "all"
159
+ Requires-Dist: torchaudio; extra == "all"
160
+ Requires-Dist: google-auth-oauthlib; extra == "all"
157
161
  Requires-Dist: tabulate; extra == "all"
158
- Requires-Dist: pydantic-extra-types; extra == "all"
159
- Requires-Dist: google-auth-httplib2; extra == "all"
160
- Requires-Dist: filetype; extra == "all"
161
- Requires-Dist: odfpy; extra == "all"
162
162
  Requires-Dist: logfire[fastapi]; extra == "all"
163
- Requires-Dist: torchaudio; extra == "all"
164
- Requires-Dist: python-on-whales; extra == "all"
163
+ Requires-Dist: google-auth-httplib2; extra == "all"
165
164
  Requires-Dist: torchvision; extra == "all"
166
- Requires-Dist: pydantic-settings; extra == "all"
167
- Requires-Dist: logfire[httpx]; extra == "all"
168
- Requires-Dist: dnspython[doh]; extra == "all"
169
- Requires-Dist: deepmerge; extra == "all"
170
165
  Requires-Dist: pyyaml; extra == "all"
171
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
172
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
173
- Requires-Dist: pandas; extra == "all"
174
- Requires-Dist: beanie[odm]; extra == "all"
175
- Requires-Dist: sentence_transformers; extra == "all"
176
- Requires-Dist: playwright; extra == "all"
177
- Requires-Dist: dask[bag]; extra == "all"
178
- Requires-Dist: yamlscript; extra == "all"
179
- Requires-Dist: Unidecode; extra == "all"
180
- Requires-Dist: pytest-cov; extra == "all"
181
- Requires-Dist: httpx; extra == "all"
182
- Requires-Dist: html2text; extra == "all"
183
- Requires-Dist: transformers[sentencepiece]; extra == "all"
184
- Requires-Dist: regex; extra == "all"
166
+ Requires-Dist: openai; extra == "all"
167
+ Requires-Dist: flet[all]; extra == "all"
168
+ Requires-Dist: pymupdf4llm; extra == "all"
169
+ Requires-Dist: appdirs; extra == "all"
170
+ Requires-Dist: uvicorn[standard]; extra == "all"
171
+ Requires-Dist: semver; extra == "all"
172
+ Requires-Dist: logfire[httpx]; extra == "all"
185
173
  Requires-Dist: tokenizers; extra == "all"
186
- Requires-Dist: pydantic; extra == "all"
174
+ Requires-Dist: cachetools; extra == "all"
175
+ Requires-Dist: pydantic-settings; extra == "all"
187
176
  Requires-Dist: pycountry; extra == "all"
188
- Requires-Dist: huggingface_hub; extra == "all"
189
- Requires-Dist: contexttimer; extra == "all"
190
- Requires-Dist: bokeh; extra == "all"
191
- Requires-Dist: semver; extra == "all"
192
- Requires-Dist: flet-webview; extra == "all"
193
- Requires-Dist: logfire; extra == "all"
194
- Requires-Dist: sre_yield; extra == "all"
195
- Requires-Dist: deepdiff; extra == "all"
177
+ Requires-Dist: pytest-cov; extra == "all"
178
+ Requires-Dist: deepmerge; extra == "all"
179
+ Requires-Dist: regex; extra == "all"
196
180
  Requires-Dist: json_repair; extra == "all"
197
- Requires-Dist: cachetools; extra == "all"
181
+ Requires-Dist: Unidecode; extra == "all"
182
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
183
+ Requires-Dist: pymupdf; extra == "all"
184
+ Requires-Dist: playwright; extra == "all"
185
+ Requires-Dist: tinynetrc; extra == "all"
186
+ Requires-Dist: odfpy; extra == "all"
187
+ Requires-Dist: ollama; extra == "all"
188
+ Requires-Dist: pydantic-extra-types; extra == "all"
189
+ Requires-Dist: peft; extra == "all"
198
190
  Requires-Dist: distributed; extra == "all"
199
- Requires-Dist: pymupdf4llm; extra == "all"
200
- Requires-Dist: httpx_retries; extra == "all"
201
- Requires-Dist: faker; extra == "all"
202
- Requires-Dist: flet[all]; extra == "all"
203
- Requires-Dist: motor; extra == "all"
204
- Requires-Dist: uvicorn[standard]; extra == "all"
205
191
  Requires-Dist: diskcache; extra == "all"
206
- Requires-Dist: appdirs; extra == "all"
207
- Requires-Dist: openai; extra == "all"
208
- Requires-Dist: google-auth-oauthlib; extra == "all"
209
- Requires-Dist: setuptools; extra == "all"
210
- Requires-Dist: flet-video; extra == "all"
211
192
  Requires-Dist: google-api-python-client; extra == "all"
212
- Requires-Dist: ollama; extra == "all"
213
- Requires-Dist: openpyxl; extra == "all"
193
+ Requires-Dist: filetype; extra == "all"
194
+ Requires-Dist: flet-video; extra == "all"
195
+ Requires-Dist: bokeh; extra == "all"
214
196
  Requires-Dist: google-auth; extra == "all"
215
- Requires-Dist: tinynetrc; extra == "all"
216
- Requires-Dist: pymupdf; extra == "all"
217
- Requires-Dist: peft; extra == "all"
197
+ Requires-Dist: logfire; extra == "all"
198
+ Requires-Dist: beanie[odm]; extra == "all"
199
+ Requires-Dist: openpyxl; extra == "all"
200
+ Requires-Dist: setuptools; extra == "all"
201
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
202
+ Requires-Dist: httpx; extra == "all"
203
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
204
+ Requires-Dist: yamlscript; extra == "all"
205
+ Requires-Dist: faker; extra == "all"
206
+ Requires-Dist: contexttimer; extra == "all"
207
+ Requires-Dist: pandas; extra == "all"
218
208
  Requires-Dist: fastapi; extra == "all"
209
+ Requires-Dist: motor; extra == "all"
210
+ Requires-Dist: dask[bag]; extra == "all"
211
+ Requires-Dist: dnspython[doh]; extra == "all"
212
+ Requires-Dist: sentence_transformers; extra == "all"
213
+ Requires-Dist: deepdiff; extra == "all"
214
+ Requires-Dist: python-on-whales; extra == "all"
215
+ Requires-Dist: httpx_retries; extra == "all"
216
+ Requires-Dist: flet-webview; extra == "all"
217
+ Requires-Dist: pydantic; extra == "all"
218
+ Requires-Dist: html2text; extra == "all"
219
219
  Dynamic: author
220
220
  Dynamic: author-email
221
221
  Dynamic: description
@@ -1 +0,0 @@
1
- 1.3.61
File without changes
File without changes
@@ -18,68 +18,68 @@ pydantic-ai[logfire,openai]
18
18
  ollama
19
19
 
20
20
  [all]
21
+ huggingface_hub
22
+ sre_yield
23
+ torchaudio
24
+ google-auth-oauthlib
21
25
  tabulate
22
- pydantic-extra-types
23
- google-auth-httplib2
24
- filetype
25
- odfpy
26
26
  logfire[fastapi]
27
- torchaudio
28
- python-on-whales
27
+ google-auth-httplib2
29
28
  torchvision
30
- pydantic-settings
31
- logfire[httpx]
32
- dnspython[doh]
33
- deepmerge
34
29
  pyyaml
35
- pydantic-ai[logfire,openai]
36
- pydevd-pycharm~=251.25410.159
37
- pandas
38
- beanie[odm]
39
- sentence_transformers
40
- playwright
41
- dask[bag]
42
- yamlscript
43
- Unidecode
44
- pytest-cov
45
- httpx
46
- html2text
47
- transformers[sentencepiece]
48
- regex
30
+ openai
31
+ flet[all]
32
+ pymupdf4llm
33
+ appdirs
34
+ uvicorn[standard]
35
+ semver
36
+ logfire[httpx]
49
37
  tokenizers
50
- pydantic
38
+ cachetools
39
+ pydantic-settings
51
40
  pycountry
52
- huggingface_hub
53
- contexttimer
54
- bokeh
55
- semver
56
- flet-webview
57
- logfire
58
- sre_yield
59
- deepdiff
41
+ pytest-cov
42
+ deepmerge
43
+ regex
60
44
  json_repair
61
- cachetools
45
+ Unidecode
46
+ pydantic-ai[logfire,openai]
47
+ pymupdf
48
+ playwright
49
+ tinynetrc
50
+ odfpy
51
+ ollama
52
+ pydantic-extra-types
53
+ peft
62
54
  distributed
63
- pymupdf4llm
64
- httpx_retries
65
- faker
66
- flet[all]
67
- motor
68
- uvicorn[standard]
69
55
  diskcache
70
- appdirs
71
- openai
72
- google-auth-oauthlib
73
- setuptools
74
- flet-video
75
56
  google-api-python-client
76
- ollama
77
- openpyxl
57
+ filetype
58
+ flet-video
59
+ bokeh
78
60
  google-auth
79
- tinynetrc
80
- pymupdf
81
- peft
61
+ logfire
62
+ beanie[odm]
63
+ openpyxl
64
+ setuptools
65
+ transformers[sentencepiece]
66
+ httpx
67
+ pydevd-pycharm~=251.25410.159
68
+ yamlscript
69
+ faker
70
+ contexttimer
71
+ pandas
82
72
  fastapi
73
+ motor
74
+ dask[bag]
75
+ dnspython[doh]
76
+ sentence_transformers
77
+ deepdiff
78
+ python-on-whales
79
+ httpx_retries
80
+ flet-webview
81
+ pydantic
82
+ html2text
83
83
 
84
84
  [api]
85
85
  fastapi
File without changes
File without changes
File without changes