fmtr.tools 1.3.41__tar.gz → 1.3.43__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.41 → fmtr_tools-1.3.43}/PKG-INFO +50 -44
  2. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/__init__.py +30 -28
  3. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/ai_tools/__init__.py +2 -2
  4. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/constants.py +2 -1
  5. fmtr_tools-1.3.43/fmtr/tools/database_tools/__init__.py +6 -0
  6. fmtr_tools-1.3.43/fmtr/tools/database_tools/document.py +33 -0
  7. fmtr_tools-1.3.43/fmtr/tools/datetime_tools.py +5 -0
  8. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/dns_tools/__init__.py +1 -1
  9. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/interface_tools/__init__.py +1 -1
  10. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/path_tools/__init__.py +2 -2
  11. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/setup_tools/__init__.py +1 -1
  12. fmtr_tools-1.3.43/fmtr/tools/version +1 -0
  13. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/version_tools/__init__.py +1 -1
  14. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr.tools.egg-info/PKG-INFO +50 -44
  15. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr.tools.egg-info/SOURCES.txt +6 -0
  16. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr.tools.egg-info/requires.txt +51 -43
  17. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/setup.py +3 -1
  18. fmtr_tools-1.3.41/fmtr/tools/version +0 -1
  19. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/LICENSE +0 -0
  20. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/README.md +0 -0
  21. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
  22. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  23. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/api_tools.py +0 -0
  24. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/async_tools.py +0 -0
  25. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/augmentation_tools.py +0 -0
  26. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/caching_tools.py +0 -0
  27. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/context_tools.py +0 -0
  28. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/data_modelling_tools.py +0 -0
  29. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/dataclass_tools.py +0 -0
  30. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/datatype_tools.py +0 -0
  31. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/debugging_tools.py +0 -0
  32. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/dns_tools/client.py +0 -0
  33. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/dns_tools/dm.py +0 -0
  34. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/dns_tools/proxy.py +0 -0
  35. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/dns_tools/server.py +0 -0
  36. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/docker_tools.py +0 -0
  37. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/entrypoints/__init__.py +0 -0
  38. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/entrypoints/cache_hfh.py +0 -0
  39. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/entrypoints/ep_test.py +0 -0
  40. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/entrypoints/install_yamlscript.py +0 -0
  41. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/entrypoints/remote_debug_test.py +0 -0
  42. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/entrypoints/shell_debug.py +0 -0
  43. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/environment_tools.py +0 -0
  44. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/function_tools.py +0 -0
  45. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/google_api_tools.py +0 -0
  46. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/hash_tools.py +0 -0
  47. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/hfh_tools.py +0 -0
  48. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/html_tools.py +0 -0
  49. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/http_tools.py +0 -0
  50. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/import_tools.py +0 -0
  51. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/inherit_tools.py +0 -0
  52. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/inspection_tools.py +0 -0
  53. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/interface_tools/context.py +0 -0
  54. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/interface_tools/controls.py +0 -0
  55. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/interface_tools/interface_tools.py +0 -0
  56. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/iterator_tools.py +0 -0
  57. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/json_fix_tools.py +0 -0
  58. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/json_tools.py +0 -0
  59. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/logging_tools.py +0 -0
  60. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/merging_tools.py +0 -0
  61. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/metric_tools.py +0 -0
  62. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/name_tools.py +0 -0
  63. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/netrc_tools.py +0 -0
  64. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/openai_tools.py +0 -0
  65. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/packaging_tools.py +0 -0
  66. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/parallel_tools.py +0 -0
  67. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/path_tools/app_path_tools.py +0 -0
  68. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/path_tools/path_tools.py +0 -0
  69. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/path_tools/type_path_tools.py +0 -0
  70. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/pattern_tools.py +0 -0
  71. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/pdf_tools.py +0 -0
  72. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/platform_tools.py +0 -0
  73. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/process_tools.py +0 -0
  74. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/profiling_tools.py +0 -0
  75. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/random_tools.py +0 -0
  76. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/semantic_tools.py +0 -0
  77. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/settings_tools.py +0 -0
  78. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/setup_tools/setup_tools.py +0 -0
  79. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/spaces_tools.py +0 -0
  80. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/string_tools.py +0 -0
  81. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/tabular_tools.py +0 -0
  82. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/tests/__init__.py +0 -0
  83. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/tests/conftest.py +0 -0
  84. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/tests/helpers.py +0 -0
  85. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/tests/test_datatype.py +0 -0
  86. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/tests/test_environment.py +0 -0
  87. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/tests/test_json.py +0 -0
  88. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/tests/test_path.py +0 -0
  89. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/tests/test_yaml.py +0 -0
  90. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/tokenization_tools.py +0 -0
  91. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/tools.py +0 -0
  92. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/unicode_tools.py +0 -0
  93. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/version_tools/version_tools.py +0 -0
  94. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/webhook_tools.py +0 -0
  95. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr/tools/yaml_tools.py +0 -0
  96. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  97. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr.tools.egg-info/entry_points.txt +0 -0
  98. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/fmtr.tools.egg-info/top_level.txt +0 -0
  99. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/pyproject.toml +0 -0
  100. {fmtr_tools-1.3.41 → fmtr_tools-1.3.43}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.41
3
+ Version: 1.3.43
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
@@ -131,63 +131,69 @@ Requires-Dist: logfire; extra == "webhook"
131
131
  Requires-Dist: logfire[httpx]; extra == "webhook"
132
132
  Provides-Extra: browsers
133
133
  Requires-Dist: playwright; extra == "browsers"
134
+ Provides-Extra: db
135
+ Provides-Extra: db-document
136
+ Requires-Dist: beanie[odm]; extra == "db-document"
137
+ Requires-Dist: motor; extra == "db-document"
134
138
  Provides-Extra: all
135
- Requires-Dist: faker; extra == "all"
139
+ Requires-Dist: filetype; extra == "all"
136
140
  Requires-Dist: fastapi; extra == "all"
137
- Requires-Dist: pydantic; extra == "all"
138
- Requires-Dist: dnspython[doh]; extra == "all"
141
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
142
+ Requires-Dist: huggingface_hub; extra == "all"
143
+ Requires-Dist: dask[bag]; extra == "all"
139
144
  Requires-Dist: sre_yield; extra == "all"
140
- Requires-Dist: pytest-cov; extra == "all"
141
- Requires-Dist: logfire[fastapi]; extra == "all"
145
+ Requires-Dist: uvicorn[standard]; extra == "all"
142
146
  Requires-Dist: pydantic-settings; extra == "all"
143
- Requires-Dist: httpx; extra == "all"
147
+ Requires-Dist: httpx_retries; extra == "all"
148
+ Requires-Dist: ollama; extra == "all"
149
+ Requires-Dist: logfire[httpx]; extra == "all"
150
+ Requires-Dist: google-auth-oauthlib; extra == "all"
151
+ Requires-Dist: torchvision; extra == "all"
152
+ Requires-Dist: pydantic; extra == "all"
153
+ Requires-Dist: appdirs; extra == "all"
154
+ Requires-Dist: flet[all]; extra == "all"
144
155
  Requires-Dist: regex; extra == "all"
145
- Requires-Dist: google-api-python-client; extra == "all"
146
- Requires-Dist: deepmerge; extra == "all"
147
- Requires-Dist: openai; extra == "all"
148
- Requires-Dist: pandas; extra == "all"
156
+ Requires-Dist: beanie[odm]; extra == "all"
157
+ Requires-Dist: contexttimer; extra == "all"
158
+ Requires-Dist: motor; extra == "all"
159
+ Requires-Dist: dnspython[doh]; extra == "all"
160
+ Requires-Dist: logfire; extra == "all"
149
161
  Requires-Dist: pyyaml; extra == "all"
162
+ Requires-Dist: yamlscript; extra == "all"
163
+ Requires-Dist: docker; extra == "all"
164
+ Requires-Dist: Unidecode; extra == "all"
150
165
  Requires-Dist: semver; extra == "all"
151
- Requires-Dist: flet-webview; extra == "all"
152
- Requires-Dist: filetype; extra == "all"
153
- Requires-Dist: ollama; extra == "all"
154
166
  Requires-Dist: google-auth; extra == "all"
155
- Requires-Dist: tabulate; extra == "all"
156
- Requires-Dist: huggingface_hub; extra == "all"
157
- Requires-Dist: dask[bag]; extra == "all"
158
- Requires-Dist: Unidecode; extra == "all"
167
+ Requires-Dist: google-api-python-client; extra == "all"
168
+ Requires-Dist: deepmerge; extra == "all"
169
+ Requires-Dist: html2text; extra == "all"
170
+ Requires-Dist: diskcache; extra == "all"
171
+ Requires-Dist: google-auth-httplib2; extra == "all"
159
172
  Requires-Dist: cachetools; extra == "all"
160
- Requires-Dist: docker; extra == "all"
161
- Requires-Dist: setuptools; extra == "all"
173
+ Requires-Dist: flet-video; extra == "all"
162
174
  Requires-Dist: json_repair; extra == "all"
163
- Requires-Dist: distributed; extra == "all"
164
- Requires-Dist: pymupdf; extra == "all"
165
- Requires-Dist: html2text; extra == "all"
166
175
  Requires-Dist: openpyxl; extra == "all"
167
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
168
- Requires-Dist: playwright; extra == "all"
169
- Requires-Dist: google-auth-httplib2; extra == "all"
170
- Requires-Dist: torchaudio; extra == "all"
171
- Requires-Dist: uvicorn[standard]; extra == "all"
172
- Requires-Dist: contexttimer; extra == "all"
173
- Requires-Dist: peft; extra == "all"
174
- Requires-Dist: yamlscript; extra == "all"
175
- Requires-Dist: logfire; extra == "all"
176
- Requires-Dist: bokeh; extra == "all"
176
+ Requires-Dist: openai; extra == "all"
177
+ Requires-Dist: pymupdf; extra == "all"
178
+ Requires-Dist: pymupdf4llm; extra == "all"
179
+ Requires-Dist: pandas; extra == "all"
177
180
  Requires-Dist: tokenizers; extra == "all"
178
- Requires-Dist: google-auth-oauthlib; extra == "all"
181
+ Requires-Dist: bokeh; extra == "all"
179
182
  Requires-Dist: tinynetrc; extra == "all"
180
- Requires-Dist: pymupdf4llm; extra == "all"
181
- Requires-Dist: torchvision; extra == "all"
182
- Requires-Dist: diskcache; extra == "all"
183
- Requires-Dist: flet-video; extra == "all"
184
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
185
- Requires-Dist: transformers[sentencepiece]; extra == "all"
186
- Requires-Dist: flet[all]; extra == "all"
187
- Requires-Dist: logfire[httpx]; extra == "all"
188
- Requires-Dist: appdirs; extra == "all"
189
- Requires-Dist: httpx_retries; extra == "all"
183
+ Requires-Dist: peft; extra == "all"
184
+ Requires-Dist: pytest-cov; extra == "all"
185
+ Requires-Dist: torchaudio; extra == "all"
186
+ Requires-Dist: tabulate; extra == "all"
187
+ Requires-Dist: faker; extra == "all"
188
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
189
+ Requires-Dist: logfire[fastapi]; extra == "all"
190
190
  Requires-Dist: sentence_transformers; extra == "all"
191
+ Requires-Dist: flet-webview; extra == "all"
192
+ Requires-Dist: distributed; extra == "all"
193
+ Requires-Dist: httpx; extra == "all"
194
+ Requires-Dist: playwright; extra == "all"
195
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
196
+ Requires-Dist: setuptools; extra == "all"
191
197
  Dynamic: author
192
198
  Dynamic: author-email
193
199
  Dynamic: description
@@ -1,4 +1,5 @@
1
1
  import fmtr.tools.async_tools as asyncio
2
+ import fmtr.tools.database_tools as db
2
3
  import fmtr.tools.dataclass_tools as dataclass
3
4
  import fmtr.tools.datatype_tools as datatype
4
5
  import fmtr.tools.environment_tools as env
@@ -18,6 +19,7 @@ import fmtr.tools.random_tools as random
18
19
  import fmtr.tools.setup_tools as setup
19
20
  import fmtr.tools.string_tools as string
20
21
  from fmtr.tools import ai_tools as ai
22
+ from fmtr.tools import datetime_tools as dt
21
23
  from fmtr.tools import dns_tools as dns
22
24
  from fmtr.tools import interface_tools as interface
23
25
  from fmtr.tools import version_tools as version
@@ -30,147 +32,147 @@ from fmtr.tools.setup_tools import Setup, SetupPaths, Dependencies, Tools
30
32
 
31
33
  try:
32
34
  from fmtr.tools import augmentation_tools as augmentation
33
- except ImportError as exception:
35
+ except ModuleNotFoundError as exception:
34
36
  augmentation = MissingExtraMockModule('augmentation', exception)
35
37
 
36
38
  try:
37
39
  from fmtr.tools import yaml_tools as yaml
38
- except ImportError as exception:
40
+ except ModuleNotFoundError as exception:
39
41
  yaml = MissingExtraMockModule('yaml', exception)
40
42
 
41
43
  try:
42
44
  from fmtr.tools import docker_tools as docker
43
45
  from fmtr.tools.docker_tools import Container
44
- except ImportError as exception:
46
+ except ModuleNotFoundError as exception:
45
47
  docker = Container = MissingExtraMockModule('docker.api', exception)
46
48
 
47
49
  try:
48
50
  from fmtr.tools import parallel_tools as parallel
49
- except ImportError as exception:
51
+ except ModuleNotFoundError as exception:
50
52
  parallel = MissingExtraMockModule('parallel', exception)
51
53
 
52
54
  try:
53
55
  from fmtr.tools import profiling_tools as profiling
54
56
  from fmtr.tools.profiling_tools import Timer
55
- except ImportError as exception:
57
+ except ModuleNotFoundError as exception:
56
58
  profiling = Timer = MissingExtraMockModule('profiling', exception)
57
59
 
58
60
  try:
59
61
  import fmtr.tools.process_tools as process
60
62
  from fmtr.tools.process_tools import ContextProcess
61
- except ImportError as exception:
63
+ except ModuleNotFoundError as exception:
62
64
  process = ContextProcess = MissingExtraMockModule('process', exception)
63
65
 
64
66
  try:
65
67
  from fmtr.tools import tokenization_tools as tokenization
66
- except ImportError as exception:
68
+ except ModuleNotFoundError as exception:
67
69
  tokenization = MissingExtraMockModule('tokenization', exception)
68
70
 
69
71
  try:
70
72
  from fmtr.tools import unicode_tools as unicode
71
- except ImportError as exception:
73
+ except ModuleNotFoundError as exception:
72
74
  unicode = MissingExtraMockModule('unicode', exception)
73
75
 
74
76
  try:
75
77
  from fmtr.tools import netrc_tools as netrc
76
- except ImportError as exception:
78
+ except ModuleNotFoundError as exception:
77
79
  netrc = MissingExtraMockModule('netrc', exception)
78
80
 
79
81
  try:
80
82
  from fmtr.tools import spaces_tools as spaces
81
- except ImportError as exception:
83
+ except ModuleNotFoundError as exception:
82
84
  spaces = MissingExtraMockModule('spaces', exception)
83
85
 
84
86
  try:
85
87
  from fmtr.tools import hfh_tools as hfh
86
- except ImportError as exception:
88
+ except ModuleNotFoundError as exception:
87
89
  hfh = MissingExtraMockModule('hfh', exception)
88
90
 
89
91
  try:
90
92
  from fmtr.tools import merging_tools as merging
91
93
  from fmtr.tools.merging_tools import merge
92
- except ImportError as exception:
94
+ except ModuleNotFoundError as exception:
93
95
  merging = merge = MissingExtraMockModule('merging', exception)
94
96
 
95
97
  try:
96
98
  from fmtr.tools import api_tools as api
97
- except ImportError as exception:
99
+ except ModuleNotFoundError as exception:
98
100
  api = MissingExtraMockModule('api', exception)
99
101
 
100
102
  try:
101
103
  from fmtr.tools import data_modelling_tools as dm
102
- except ImportError as exception:
104
+ except ModuleNotFoundError as exception:
103
105
  dm = MissingExtraMockModule('dm', exception)
104
106
 
105
107
  try:
106
108
  from fmtr.tools import json_fix_tools as json_fix
107
- except ImportError as exception:
109
+ except ModuleNotFoundError as exception:
108
110
  json_fix = MissingExtraMockModule('json_fix', exception)
109
111
 
110
112
  try:
111
113
  from fmtr.tools import semantic_tools as semantic
112
- except ImportError as exception:
114
+ except ModuleNotFoundError as exception:
113
115
  semantic = MissingExtraMockModule('semantic', exception)
114
116
 
115
117
  try:
116
118
  from fmtr.tools import metric_tools as metric
117
- except ImportError as exception:
119
+ except ModuleNotFoundError as exception:
118
120
  metric = MissingExtraMockModule('metric', exception)
119
121
 
120
122
  try:
121
123
  from fmtr.tools import html_tools as html
122
- except ImportError as exception:
124
+ except ModuleNotFoundError as exception:
123
125
  html = MissingExtraMockModule('html', exception)
124
126
 
125
127
  try:
126
128
  from fmtr.tools import openai_tools as openai
127
- except ImportError as exception:
129
+ except ModuleNotFoundError as exception:
128
130
  openai = MissingExtraMockModule('openai', exception)
129
131
 
130
132
  try:
131
133
  from fmtr.tools import google_api_tools as google_api
132
- except ImportError as exception:
134
+ except ModuleNotFoundError as exception:
133
135
  google_api = MissingExtraMockModule('google.api', exception)
134
136
 
135
137
  try:
136
138
  from fmtr.tools import caching_tools as caching
137
- except ImportError as exception:
139
+ except ModuleNotFoundError as exception:
138
140
  caching = MissingExtraMockModule('caching', exception)
139
141
 
140
142
  try:
141
143
  from fmtr.tools import pdf_tools as pdf
142
- except ImportError as exception:
144
+ except ModuleNotFoundError as exception:
143
145
  pdf = MissingExtraMockModule('pdf', exception)
144
146
 
145
147
  try:
146
148
  from fmtr.tools import tabular_tools as tabular
147
- except ImportError as exception:
149
+ except ModuleNotFoundError as exception:
148
150
  tabular = MissingExtraMockModule('tabular', exception)
149
151
 
150
152
  try:
151
153
  from fmtr.tools import debugging_tools as debug
152
- except ImportError as exception:
154
+ except ModuleNotFoundError as exception:
153
155
  debug = MissingExtraMockModule('debug', exception)
154
156
 
155
157
  try:
156
158
  from fmtr.tools import settings_tools as sets
157
- except ImportError as exception:
159
+ except ModuleNotFoundError as exception:
158
160
  sets = MissingExtraMockModule('sets', exception)
159
161
 
160
162
  try:
161
163
  from fmtr.tools import pattern_tools as patterns
162
- except ImportError as exception:
164
+ except ModuleNotFoundError as exception:
163
165
  patterns = MissingExtraMockModule('patterns', exception)
164
166
 
165
167
  try:
166
168
  from fmtr.tools import http_tools as http
167
169
  from fmtr.tools.http_tools import Client
168
- except ImportError as exception:
170
+ except ModuleNotFoundError as exception:
169
171
  http = Client = MissingExtraMockModule('http', exception)
170
172
 
171
173
  try:
172
174
  from fmtr.tools import webhook_tools as webhook
173
- except ImportError as exception:
175
+ except ModuleNotFoundError as exception:
174
176
  webhook = MissingExtraMockModule('webhook', exception)
175
177
 
176
178
 
@@ -2,10 +2,10 @@ from fmtr.tools.import_tools import MissingExtraMockModule
2
2
 
3
3
  try:
4
4
  from fmtr.tools.ai_tools import inference_tools as infer
5
- except ImportError as exception:
5
+ except ModuleNotFoundError as exception:
6
6
  infer = MissingExtraMockModule('ai', exception)
7
7
 
8
8
  try:
9
9
  from fmtr.tools.ai_tools import agentic_tools as agentic
10
- except ImportError as exception:
10
+ except ModuleNotFoundError as exception:
11
11
  agentic = MissingExtraMockModule('ai.client', exception)
@@ -32,7 +32,8 @@ class Constants:
32
32
  FMTR_AI_HOST_KEY = 'FMTR_URL_HOST'
33
33
  FMTR_AI_HOST_DEFAULT = 'ai.gex.fmtr.dev'
34
34
 
35
- FMTR_DEV_INTERFACE_URL = 'https://ws.gex.fmtr.dev/'
35
+ FMTR_DEV_HOST = 'ws.gex.fmtr.dev'
36
+ FMTR_DEV_INTERFACE_URL = F'https://{FMTR_DEV_HOST}/'
36
37
 
37
38
  FILENAME_CONFIG = 'settings.yaml'
38
39
  DIR_NAME_REPO = 'repo'
@@ -0,0 +1,6 @@
1
+ from fmtr.tools.import_tools import MissingExtraMockModule
2
+
3
+ try:
4
+ from fmtr.tools.database_tools import document
5
+ except ModuleNotFoundError as exception:
6
+ document = MissingExtraMockModule('db.document', exception)
@@ -0,0 +1,33 @@
1
+ import beanie
2
+ from functools import cached_property
3
+ from motor.motor_asyncio import AsyncIOMotorClient
4
+ from typing import List
5
+
6
+ from fmtr.tools.constants import Constants
7
+
8
+
9
+ class Document(beanie.Document):
10
+ """
11
+
12
+ Document stub.
13
+
14
+ """
15
+
16
+
17
+ class Client:
18
+
19
+ def __init__(self, name, host=Constants.FMTR_DEV_HOST, port=27017, documents: List[beanie.Document] | None = None):
20
+ self.name = name
21
+ self.host = host
22
+ self.port = port
23
+ self.documents = documents
24
+
25
+ self.client = AsyncIOMotorClient(self.uri)
26
+ self.db = self.client[self.name]
27
+
28
+ @cached_property
29
+ def uri(self):
30
+ return f'mongodb://{self.host}:{self.port}'
31
+
32
+ async def connect(self):
33
+ return await beanie.init_beanie(database=self.db, document_models=self.documents)
@@ -0,0 +1,5 @@
1
+ from datetime import datetime, timezone
2
+
3
+
4
+ def now():
5
+ return datetime.now(tz=timezone.utc)
@@ -3,5 +3,5 @@ from fmtr.tools.import_tools import MissingExtraMockModule
3
3
  try:
4
4
  from fmtr.tools.dns_tools import server, client, dm, proxy
5
5
  import dns
6
- except ImportError as exception:
6
+ except ModuleNotFoundError as exception:
7
7
  dns = server = client = dm = proxy = MissingExtraMockModule('dns', exception)
@@ -4,5 +4,5 @@ try:
4
4
  from fmtr.tools.interface_tools.interface_tools import Interface, update, progress
5
5
  from fmtr.tools.interface_tools import controls
6
6
  from fmtr.tools.interface_tools.context import Context
7
- except ImportError as exception:
7
+ except ModuleNotFoundError as exception:
8
8
  Interface = update = progress = controls = MissingExtraMockModule('interface', exception)
@@ -3,10 +3,10 @@ from fmtr.tools.path_tools.path_tools import Path, PackagePaths
3
3
 
4
4
  try:
5
5
  from fmtr.tools.path_tools.app_path_tools import AppPaths
6
- except ImportError as exception:
6
+ except ModuleNotFoundError as exception:
7
7
  AppPaths = MissingExtraMockModule('path.app', exception)
8
8
 
9
9
  try:
10
10
  from fmtr.tools.path_tools.type_path_tools import guess
11
- except ImportError as exception:
11
+ except ModuleNotFoundError as exception:
12
12
  guess = MissingExtraMockModule('path.type', exception)
@@ -4,5 +4,5 @@ from fmtr.tools.setup_tools.setup_tools import Setup, SetupPaths, Dependencies,
4
4
 
5
5
  try:
6
6
  from setuptools import find_namespace_packages, find_packages, setup as setup_setuptools
7
- except ImportError as exception:
7
+ except ModuleNotFoundError as exception:
8
8
  find_namespace_packages = find_packages = setup_setuptools = MissingExtraMockModule('setup', exception)
@@ -0,0 +1 @@
1
+ 1.3.43
@@ -8,5 +8,5 @@ try:
8
8
  semver = semver
9
9
  parse = semver.VersionInfo.parse
10
10
 
11
- except ImportError as exception:
11
+ except ModuleNotFoundError as exception:
12
12
  semver = parse = MissingExtraMockModule('version.dev', exception)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.41
3
+ Version: 1.3.43
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
@@ -131,63 +131,69 @@ Requires-Dist: logfire; extra == "webhook"
131
131
  Requires-Dist: logfire[httpx]; extra == "webhook"
132
132
  Provides-Extra: browsers
133
133
  Requires-Dist: playwright; extra == "browsers"
134
+ Provides-Extra: db
135
+ Provides-Extra: db-document
136
+ Requires-Dist: beanie[odm]; extra == "db-document"
137
+ Requires-Dist: motor; extra == "db-document"
134
138
  Provides-Extra: all
135
- Requires-Dist: faker; extra == "all"
139
+ Requires-Dist: filetype; extra == "all"
136
140
  Requires-Dist: fastapi; extra == "all"
137
- Requires-Dist: pydantic; extra == "all"
138
- Requires-Dist: dnspython[doh]; extra == "all"
141
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
142
+ Requires-Dist: huggingface_hub; extra == "all"
143
+ Requires-Dist: dask[bag]; extra == "all"
139
144
  Requires-Dist: sre_yield; extra == "all"
140
- Requires-Dist: pytest-cov; extra == "all"
141
- Requires-Dist: logfire[fastapi]; extra == "all"
145
+ Requires-Dist: uvicorn[standard]; extra == "all"
142
146
  Requires-Dist: pydantic-settings; extra == "all"
143
- Requires-Dist: httpx; extra == "all"
147
+ Requires-Dist: httpx_retries; extra == "all"
148
+ Requires-Dist: ollama; extra == "all"
149
+ Requires-Dist: logfire[httpx]; extra == "all"
150
+ Requires-Dist: google-auth-oauthlib; extra == "all"
151
+ Requires-Dist: torchvision; extra == "all"
152
+ Requires-Dist: pydantic; extra == "all"
153
+ Requires-Dist: appdirs; extra == "all"
154
+ Requires-Dist: flet[all]; extra == "all"
144
155
  Requires-Dist: regex; extra == "all"
145
- Requires-Dist: google-api-python-client; extra == "all"
146
- Requires-Dist: deepmerge; extra == "all"
147
- Requires-Dist: openai; extra == "all"
148
- Requires-Dist: pandas; extra == "all"
156
+ Requires-Dist: beanie[odm]; extra == "all"
157
+ Requires-Dist: contexttimer; extra == "all"
158
+ Requires-Dist: motor; extra == "all"
159
+ Requires-Dist: dnspython[doh]; extra == "all"
160
+ Requires-Dist: logfire; extra == "all"
149
161
  Requires-Dist: pyyaml; extra == "all"
162
+ Requires-Dist: yamlscript; extra == "all"
163
+ Requires-Dist: docker; extra == "all"
164
+ Requires-Dist: Unidecode; extra == "all"
150
165
  Requires-Dist: semver; extra == "all"
151
- Requires-Dist: flet-webview; extra == "all"
152
- Requires-Dist: filetype; extra == "all"
153
- Requires-Dist: ollama; extra == "all"
154
166
  Requires-Dist: google-auth; extra == "all"
155
- Requires-Dist: tabulate; extra == "all"
156
- Requires-Dist: huggingface_hub; extra == "all"
157
- Requires-Dist: dask[bag]; extra == "all"
158
- Requires-Dist: Unidecode; extra == "all"
167
+ Requires-Dist: google-api-python-client; extra == "all"
168
+ Requires-Dist: deepmerge; extra == "all"
169
+ Requires-Dist: html2text; extra == "all"
170
+ Requires-Dist: diskcache; extra == "all"
171
+ Requires-Dist: google-auth-httplib2; extra == "all"
159
172
  Requires-Dist: cachetools; extra == "all"
160
- Requires-Dist: docker; extra == "all"
161
- Requires-Dist: setuptools; extra == "all"
173
+ Requires-Dist: flet-video; extra == "all"
162
174
  Requires-Dist: json_repair; extra == "all"
163
- Requires-Dist: distributed; extra == "all"
164
- Requires-Dist: pymupdf; extra == "all"
165
- Requires-Dist: html2text; extra == "all"
166
175
  Requires-Dist: openpyxl; extra == "all"
167
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
168
- Requires-Dist: playwright; extra == "all"
169
- Requires-Dist: google-auth-httplib2; extra == "all"
170
- Requires-Dist: torchaudio; extra == "all"
171
- Requires-Dist: uvicorn[standard]; extra == "all"
172
- Requires-Dist: contexttimer; extra == "all"
173
- Requires-Dist: peft; extra == "all"
174
- Requires-Dist: yamlscript; extra == "all"
175
- Requires-Dist: logfire; extra == "all"
176
- Requires-Dist: bokeh; extra == "all"
176
+ Requires-Dist: openai; extra == "all"
177
+ Requires-Dist: pymupdf; extra == "all"
178
+ Requires-Dist: pymupdf4llm; extra == "all"
179
+ Requires-Dist: pandas; extra == "all"
177
180
  Requires-Dist: tokenizers; extra == "all"
178
- Requires-Dist: google-auth-oauthlib; extra == "all"
181
+ Requires-Dist: bokeh; extra == "all"
179
182
  Requires-Dist: tinynetrc; extra == "all"
180
- Requires-Dist: pymupdf4llm; extra == "all"
181
- Requires-Dist: torchvision; extra == "all"
182
- Requires-Dist: diskcache; extra == "all"
183
- Requires-Dist: flet-video; extra == "all"
184
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
185
- Requires-Dist: transformers[sentencepiece]; extra == "all"
186
- Requires-Dist: flet[all]; extra == "all"
187
- Requires-Dist: logfire[httpx]; extra == "all"
188
- Requires-Dist: appdirs; extra == "all"
189
- Requires-Dist: httpx_retries; extra == "all"
183
+ Requires-Dist: peft; extra == "all"
184
+ Requires-Dist: pytest-cov; extra == "all"
185
+ Requires-Dist: torchaudio; extra == "all"
186
+ Requires-Dist: tabulate; extra == "all"
187
+ Requires-Dist: faker; extra == "all"
188
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
189
+ Requires-Dist: logfire[fastapi]; extra == "all"
190
190
  Requires-Dist: sentence_transformers; extra == "all"
191
+ Requires-Dist: flet-webview; extra == "all"
192
+ Requires-Dist: distributed; extra == "all"
193
+ Requires-Dist: httpx; extra == "all"
194
+ Requires-Dist: playwright; extra == "all"
195
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
196
+ Requires-Dist: setuptools; extra == "all"
191
197
  Dynamic: author
192
198
  Dynamic: author-email
193
199
  Dynamic: description
@@ -12,6 +12,7 @@ setup.py
12
12
  ./fmtr/tools/data_modelling_tools.py
13
13
  ./fmtr/tools/dataclass_tools.py
14
14
  ./fmtr/tools/datatype_tools.py
15
+ ./fmtr/tools/datetime_tools.py
15
16
  ./fmtr/tools/debugging_tools.py
16
17
  ./fmtr/tools/docker_tools.py
17
18
  ./fmtr/tools/environment_tools.py
@@ -55,6 +56,8 @@ setup.py
55
56
  ./fmtr/tools/ai_tools/__init__.py
56
57
  ./fmtr/tools/ai_tools/agentic_tools.py
57
58
  ./fmtr/tools/ai_tools/inference_tools.py
59
+ ./fmtr/tools/database_tools/__init__.py
60
+ ./fmtr/tools/database_tools/document.py
58
61
  ./fmtr/tools/dns_tools/__init__.py
59
62
  ./fmtr/tools/dns_tools/client.py
60
63
  ./fmtr/tools/dns_tools/dm.py
@@ -102,6 +105,7 @@ fmtr/tools/context_tools.py
102
105
  fmtr/tools/data_modelling_tools.py
103
106
  fmtr/tools/dataclass_tools.py
104
107
  fmtr/tools/datatype_tools.py
108
+ fmtr/tools/datetime_tools.py
105
109
  fmtr/tools/debugging_tools.py
106
110
  fmtr/tools/docker_tools.py
107
111
  fmtr/tools/environment_tools.py
@@ -145,6 +149,8 @@ fmtr/tools/yaml_tools.py
145
149
  fmtr/tools/ai_tools/__init__.py
146
150
  fmtr/tools/ai_tools/agentic_tools.py
147
151
  fmtr/tools/ai_tools/inference_tools.py
152
+ fmtr/tools/database_tools/__init__.py
153
+ fmtr/tools/database_tools/document.py
148
154
  fmtr/tools/dns_tools/__init__.py
149
155
  fmtr/tools/dns_tools/client.py
150
156
  fmtr/tools/dns_tools/dm.py
@@ -14,62 +14,64 @@ pydantic-ai[logfire,openai]
14
14
  ollama
15
15
 
16
16
  [all]
17
- faker
17
+ filetype
18
18
  fastapi
19
- pydantic
20
- dnspython[doh]
19
+ pydevd-pycharm~=251.25410.159
20
+ huggingface_hub
21
+ dask[bag]
21
22
  sre_yield
22
- pytest-cov
23
- logfire[fastapi]
23
+ uvicorn[standard]
24
24
  pydantic-settings
25
- httpx
25
+ httpx_retries
26
+ ollama
27
+ logfire[httpx]
28
+ google-auth-oauthlib
29
+ torchvision
30
+ pydantic
31
+ appdirs
32
+ flet[all]
26
33
  regex
27
- google-api-python-client
28
- deepmerge
29
- openai
30
- pandas
34
+ beanie[odm]
35
+ contexttimer
36
+ motor
37
+ dnspython[doh]
38
+ logfire
31
39
  pyyaml
40
+ yamlscript
41
+ docker
42
+ Unidecode
32
43
  semver
33
- flet-webview
34
- filetype
35
- ollama
36
44
  google-auth
37
- tabulate
38
- huggingface_hub
39
- dask[bag]
40
- Unidecode
45
+ google-api-python-client
46
+ deepmerge
47
+ html2text
48
+ diskcache
49
+ google-auth-httplib2
41
50
  cachetools
42
- docker
43
- setuptools
51
+ flet-video
44
52
  json_repair
45
- distributed
46
- pymupdf
47
- html2text
48
53
  openpyxl
49
- pydantic-ai[logfire,openai]
50
- playwright
51
- google-auth-httplib2
52
- torchaudio
53
- uvicorn[standard]
54
- contexttimer
55
- peft
56
- yamlscript
57
- logfire
58
- bokeh
54
+ openai
55
+ pymupdf
56
+ pymupdf4llm
57
+ pandas
59
58
  tokenizers
60
- google-auth-oauthlib
59
+ bokeh
61
60
  tinynetrc
62
- pymupdf4llm
63
- torchvision
64
- diskcache
65
- flet-video
66
- pydevd-pycharm~=251.25410.159
67
- transformers[sentencepiece]
68
- flet[all]
69
- logfire[httpx]
70
- appdirs
71
- httpx_retries
61
+ peft
62
+ pytest-cov
63
+ torchaudio
64
+ tabulate
65
+ faker
66
+ pydantic-ai[logfire,openai]
67
+ logfire[fastapi]
72
68
  sentence_transformers
69
+ flet-webview
70
+ distributed
71
+ httpx
72
+ playwright
73
+ transformers[sentencepiece]
74
+ setuptools
73
75
 
74
76
  [api]
75
77
  fastapi
@@ -89,6 +91,12 @@ playwright
89
91
  diskcache
90
92
  cachetools
91
93
 
94
+ [db]
95
+
96
+ [db.document]
97
+ beanie[odm]
98
+ motor
99
+
92
100
  [debug]
93
101
  pydevd-pycharm~=251.25410.159
94
102
 
@@ -41,7 +41,9 @@ DEPENDENCIES = {
41
41
  'http': ['httpx', 'httpx_retries', 'logging', 'logfire[httpx]'],
42
42
  'setup': ['setuptools'],
43
43
  'webhook': ['http'],
44
- 'browsers': ['playwright']
44
+ 'browsers': ['playwright'],
45
+ 'db': [],
46
+ 'db.document': ['beanie[odm]', 'motor']
45
47
  }
46
48
 
47
49
  setup = Setup(
@@ -1 +0,0 @@
1
- 1.3.41
File without changes
File without changes
File without changes
File without changes