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