fmtr.tools 1.3.68__py3-none-any.whl → 1.3.70__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of fmtr.tools might be problematic. Click here for more details.

@@ -43,7 +43,6 @@ class Field(FieldInfo):
43
43
  self.annotation = self.ANNOTATION if annotation is Empty else annotation
44
44
  if self.annotation is Empty:
45
45
  raise ValueError("Annotation must be specified.")
46
- annotation = self.annotation
47
46
 
48
47
  default = self.get_default_auto(default)
49
48
  if default is Required:
@@ -53,8 +52,7 @@ class Field(FieldInfo):
53
52
  title = self.get_title_auto(title)
54
53
  kwargs |= (self.CONFIG or {})
55
54
 
56
- super().__init__(default=default, title=title, description=description, exclude=exclude, **kwargs)
57
- self.annotation = annotation
55
+ super().__init__(annotation=self.annotation, default=default, title=title, description=description, exclude=exclude, **kwargs)
58
56
 
59
57
  @classmethod
60
58
  def get_name_auto(cls) -> str:
@@ -1,5 +1,5 @@
1
1
  from types import UnionType, NoneType
2
- from typing import Any, get_origin, get_args
2
+ from typing import Any, get_origin, get_args, Union, Annotated
3
3
 
4
4
  from fmtr.tools.tools import Raise
5
5
 
@@ -98,5 +98,9 @@ def is_optional(annotation) -> bool:
98
98
 
99
99
  origin = get_origin(annotation)
100
100
  args = get_args(annotation)
101
- is_opt = origin is UnionType and NoneType in args
101
+
102
+ if origin is Annotated:
103
+ return is_optional(args[0])
104
+
105
+ is_opt = (origin is UnionType or origin is Union) and NoneType in args
102
106
  return is_opt
fmtr/tools/version CHANGED
@@ -1 +1 @@
1
- 1.3.68
1
+ 1.3.70
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.68
3
+ Version: 1.3.70
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
@@ -168,68 +168,68 @@ Provides-Extra: db-document
168
168
  Requires-Dist: beanie[odm]; extra == "db-document"
169
169
  Requires-Dist: motor; extra == "db-document"
170
170
  Provides-Extra: all
171
- Requires-Dist: tinynetrc; extra == "all"
172
- Requires-Dist: flet-video; extra == "all"
173
- Requires-Dist: google-auth-httplib2; extra == "all"
174
- Requires-Dist: pymupdf4llm; extra == "all"
175
- Requires-Dist: tabulate; extra == "all"
171
+ Requires-Dist: logfire; extra == "all"
176
172
  Requires-Dist: huggingface_hub; extra == "all"
177
- Requires-Dist: cachetools; extra == "all"
178
- Requires-Dist: beanie[odm]; extra == "all"
179
- Requires-Dist: pytest-cov; extra == "all"
173
+ Requires-Dist: google-auth-httplib2; extra == "all"
180
174
  Requires-Dist: html2text; extra == "all"
181
- Requires-Dist: appdirs; extra == "all"
182
- Requires-Dist: filetype; extra == "all"
183
- Requires-Dist: motor; extra == "all"
175
+ Requires-Dist: fastapi; extra == "all"
184
176
  Requires-Dist: dask[bag]; extra == "all"
185
- Requires-Dist: pyyaml; extra == "all"
177
+ Requires-Dist: motor; extra == "all"
178
+ Requires-Dist: distributed; extra == "all"
179
+ Requires-Dist: deepmerge; extra == "all"
180
+ Requires-Dist: pandas; extra == "all"
181
+ Requires-Dist: deepdiff; extra == "all"
186
182
  Requires-Dist: json_repair; extra == "all"
187
- Requires-Dist: pymupdf; extra == "all"
188
- Requires-Dist: httpx_retries; extra == "all"
189
- Requires-Dist: transformers[sentencepiece]; extra == "all"
190
183
  Requires-Dist: dnspython[doh]; extra == "all"
191
- Requires-Dist: playwright; extra == "all"
192
- Requires-Dist: fastapi; extra == "all"
193
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
194
- Requires-Dist: flet-webview; extra == "all"
195
- Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
196
- Requires-Dist: openai; extra == "all"
184
+ Requires-Dist: tokenizers; extra == "all"
185
+ Requires-Dist: flet[all]; extra == "all"
186
+ Requires-Dist: google-auth; extra == "all"
187
+ Requires-Dist: httpx_retries; extra == "all"
188
+ Requires-Dist: sre_yield; extra == "all"
189
+ Requires-Dist: odfpy; extra == "all"
190
+ Requires-Dist: logfire[httpx]; extra == "all"
197
191
  Requires-Dist: pycountry; extra == "all"
198
- Requires-Dist: httpx; extra == "all"
199
- Requires-Dist: semver; extra == "all"
200
192
  Requires-Dist: pydantic; extra == "all"
193
+ Requires-Dist: uvicorn[standard]; extra == "all"
194
+ Requires-Dist: pymupdf; extra == "all"
195
+ Requires-Dist: yamlscript; extra == "all"
201
196
  Requires-Dist: diskcache; extra == "all"
202
- Requires-Dist: pandas; extra == "all"
203
- Requires-Dist: bokeh; extra == "all"
204
- Requires-Dist: sre_yield; extra == "all"
205
- Requires-Dist: faker; extra == "all"
206
- Requires-Dist: tokenizers; extra == "all"
207
- Requires-Dist: peft; extra == "all"
208
- Requires-Dist: distributed; extra == "all"
209
- Requires-Dist: openpyxl; extra == "all"
197
+ Requires-Dist: httpx; extra == "all"
198
+ Requires-Dist: contexttimer; extra == "all"
199
+ Requires-Dist: setuptools; extra == "all"
210
200
  Requires-Dist: python-on-whales; extra == "all"
211
- Requires-Dist: google-auth; extra == "all"
212
- Requires-Dist: uvicorn[standard]; extra == "all"
201
+ Requires-Dist: tinynetrc; extra == "all"
202
+ Requires-Dist: pytest-cov; extra == "all"
203
+ Requires-Dist: torchaudio; extra == "all"
204
+ Requires-Dist: tabulate; extra == "all"
205
+ Requires-Dist: beanie[odm]; extra == "all"
206
+ Requires-Dist: pymupdf4llm; extra == "all"
207
+ Requires-Dist: google-auth-oauthlib; extra == "all"
208
+ Requires-Dist: semver; extra == "all"
209
+ Requires-Dist: bokeh; extra == "all"
210
+ Requires-Dist: filetype; extra == "all"
211
+ Requires-Dist: pydantic-settings; extra == "all"
212
+ Requires-Dist: google-api-python-client; extra == "all"
213
+ Requires-Dist: ollama; extra == "all"
213
214
  Requires-Dist: regex; extra == "all"
215
+ Requires-Dist: flet-webview; extra == "all"
214
216
  Requires-Dist: torchvision; extra == "all"
215
- Requires-Dist: yamlscript; extra == "all"
216
- Requires-Dist: Unidecode; extra == "all"
217
- Requires-Dist: google-api-python-client; extra == "all"
218
- Requires-Dist: deepdiff; extra == "all"
219
- Requires-Dist: sentence_transformers; extra == "all"
220
- Requires-Dist: setuptools; extra == "all"
221
217
  Requires-Dist: pydantic-extra-types; extra == "all"
222
- Requires-Dist: ollama; extra == "all"
223
- Requires-Dist: flet[all]; extra == "all"
224
- Requires-Dist: deepmerge; extra == "all"
225
- Requires-Dist: odfpy; extra == "all"
226
- Requires-Dist: google-auth-oauthlib; extra == "all"
227
- Requires-Dist: logfire[httpx]; extra == "all"
218
+ Requires-Dist: appdirs; extra == "all"
219
+ Requires-Dist: cachetools; extra == "all"
220
+ Requires-Dist: flet-video; extra == "all"
221
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
222
+ Requires-Dist: pyyaml; extra == "all"
223
+ Requires-Dist: faker; extra == "all"
224
+ Requires-Dist: sentence_transformers; extra == "all"
225
+ Requires-Dist: openpyxl; extra == "all"
226
+ Requires-Dist: peft; extra == "all"
228
227
  Requires-Dist: logfire[fastapi]; extra == "all"
229
- Requires-Dist: contexttimer; extra == "all"
230
- Requires-Dist: torchaudio; extra == "all"
231
- Requires-Dist: pydantic-settings; extra == "all"
232
- Requires-Dist: logfire; extra == "all"
228
+ Requires-Dist: Unidecode; extra == "all"
229
+ Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
230
+ Requires-Dist: openai; extra == "all"
231
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
232
+ Requires-Dist: playwright; extra == "all"
233
233
  Dynamic: author
234
234
  Dynamic: author-email
235
235
  Dynamic: description
@@ -5,9 +5,9 @@ fmtr/tools/augmentation_tools.py,sha256=-6ESbO4CDlKqVOV1J1V6qBeoBMzbFIinkDHRHnCB
5
5
  fmtr/tools/caching_tools.py,sha256=74p7m2GLFfeP41LX69wxgfkilxEAoWkMIfFMjKsYpyg,4976
6
6
  fmtr/tools/constants.py,sha256=90wCirUpw4bWMAbjhip0LL6k57eS5VmxRUP9pLCChBg,1812
7
7
  fmtr/tools/context_tools.py,sha256=4UvIHYgLqAh7dXMX9EBrLEpYp81qfzhSVrkffOSAoGA,350
8
- fmtr/tools/data_modelling_tools.py,sha256=iu_TQ44Ild9nYWqdzAutFKn4Gjj0kWabHNsuw_CmcbI,6101
8
+ fmtr/tools/data_modelling_tools.py,sha256=0lTV8LSnsqRR7hZMY7r8B-1MoB-e7sTDwupIl4C1UKc,6055
9
9
  fmtr/tools/dataclass_tools.py,sha256=0Gt6KeLhtPgubo_2tYkIVqB8oQ91Qzag8OAGZDdjvMU,1209
10
- fmtr/tools/datatype_tools.py,sha256=89QmlQ_fANqFQKsEMzhhRftfby-1PcrR3cylfbQNt9U,1878
10
+ fmtr/tools/datatype_tools.py,sha256=qFPFrZK70-an4w7H46g8eT5j6Jez--U2XnmFdrQibeE,1983
11
11
  fmtr/tools/datetime_tools.py,sha256=L7wmBoQbD9h_pJIL92WQOX32r_vrXgRvE-_0PVPRAGY,232
12
12
  fmtr/tools/debugging_tools.py,sha256=_xzqS0V5BpL8d06j-jVQjGgI7T020QsqVXKAKMz7Du8,2082
13
13
  fmtr/tools/environment_tools.py,sha256=43uqfj1G1bNX0IwKz-NKbu3AbFYSdbBuGN9rlThe030,1845
@@ -45,7 +45,7 @@ fmtr/tools/tabular_tools.py,sha256=mw6vOij1Ch-pVAyHMPtm5zj__ULZN_TKeBYOfj33wFM,1
45
45
  fmtr/tools/tokenization_tools.py,sha256=me-IBzSLyNYejLybwjO9CNB6Mj2NYfKPaOVThXyaGNg,4268
46
46
  fmtr/tools/tools.py,sha256=sLMXk8juOL8_n_D776cJ-kzjyMHqFI_fctDEjy6PIKs,1115
47
47
  fmtr/tools/unicode_tools.py,sha256=yS_9wpu8ogNoiIL7s1G_8bETFFO_YQlo4LNPv1NLDeY,52
48
- fmtr/tools/version,sha256=xSnaCIMu8ziy2CYAjf46a3tfho_wAnH5SGYlFyByUzU,6
48
+ fmtr/tools/version,sha256=-yW6m0NUFNhw0WCC_XSmQtpIOvu23CyMqcYLM_0guO0,6
49
49
  fmtr/tools/webhook_tools.py,sha256=q3pVJ1NCem2SrMuFcLxiWd7DibFs7Q-uGtojfXd3Qcg,380
50
50
  fmtr/tools/yaml_tools.py,sha256=Bhhyd6GQVKO72Lp8ky7bAUjIB_65Hdh0Q45SKIEe6S8,1901
51
51
  fmtr/tools/ai_tools/__init__.py,sha256=O8VRlPnnQCncg2ZZ2l_VdWLJf4jkKH6dkZFVbv6o7IM,388
@@ -85,9 +85,9 @@ fmtr/tools/tests/test_path.py,sha256=AkZQa6_8BQ-VaCyL_J-iKmdf2ZaM-xFYR37Kun3k4_g
85
85
  fmtr/tools/tests/test_yaml.py,sha256=jc0TwwKu9eC0LvFGNMERdgBue591xwLxYXFbtsRwXVM,287
86
86
  fmtr/tools/version_tools/__init__.py,sha256=cjE6nO6AoVOUp3RwgTbqL9wiw8J1l2pHJOz6Gn6bxjA,326
87
87
  fmtr/tools/version_tools/version_tools.py,sha256=Hcc6yferZS1hHbugRTdiHhSNmXEEG0hjCiTTXKna-YY,1127
88
- fmtr_tools-1.3.68.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
89
- fmtr_tools-1.3.68.dist-info/METADATA,sha256=_kxvibJHT2KtDhSgtrOhyOdNkV4SPU_ctDtX1pfsb7Y,18035
90
- fmtr_tools-1.3.68.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
91
- fmtr_tools-1.3.68.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
92
- fmtr_tools-1.3.68.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
93
- fmtr_tools-1.3.68.dist-info/RECORD,,
88
+ fmtr_tools-1.3.70.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
89
+ fmtr_tools-1.3.70.dist-info/METADATA,sha256=ow1onnJrFfNP-pYjuXbaLmf09nwBAe6fIRBpHDPxueA,18035
90
+ fmtr_tools-1.3.70.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
91
+ fmtr_tools-1.3.70.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
92
+ fmtr_tools-1.3.70.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
93
+ fmtr_tools-1.3.70.dist-info/RECORD,,