fmtr.tools 1.3.57__py3-none-any.whl → 1.3.59__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.

@@ -1,6 +1,7 @@
1
1
  from datetime import datetime, timezone
2
- from functools import lru_cache
3
2
 
3
+ MIN = datetime.min.replace(tzinfo=timezone.utc)
4
+ MAX = datetime.max.replace(tzinfo=timezone.utc)
4
5
 
5
6
  def now() -> datetime:
6
7
  """
@@ -9,23 +10,3 @@ def now() -> datetime:
9
10
 
10
11
  """
11
12
  return datetime.now(tz=timezone.utc)
12
-
13
-
14
- @lru_cache
15
- def min() -> datetime:
16
- """
17
-
18
- Min UTC
19
-
20
- """
21
- return now().min
22
-
23
-
24
- @lru_cache
25
- def max():
26
- """
27
-
28
- Max UTC
29
-
30
- """
31
- return now().max
@@ -45,7 +45,20 @@ class Cell(ft.DataCell):
45
45
  Cell contents text
46
46
 
47
47
  """
48
- return ft.Text(str(self.value))
48
+
49
+ return ft.Text(str(self.value), color=self.color)
50
+
51
+ @property
52
+ def color(self):
53
+ """
54
+
55
+ Basic conditional formatting
56
+
57
+ """
58
+ if self.value is None:
59
+ return ft.Colors.GREY
60
+ else:
61
+ return None
49
62
 
50
63
  @property
51
64
  def gesture_detector(self):
@@ -115,7 +128,16 @@ class Column(ft.DataColumn):
115
128
  Cell contents text
116
129
 
117
130
  """
118
- return ft.Text(str(self.col_name))
131
+ return ft.Text(str(self.col_name), weight=self.weight)
132
+
133
+ @property
134
+ def weight(self):
135
+ """
136
+
137
+ Default bold headers
138
+
139
+ """
140
+ return ft.FontWeight.BOLD
119
141
 
120
142
 
121
143
  class Table(ft.DataTable):
fmtr/tools/version CHANGED
@@ -1 +1 @@
1
- 1.3.57
1
+ 1.3.59
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.3.57
3
+ Version: 1.3.59
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: uvicorn[standard]; extra == "all"
158
+ Requires-Dist: pydantic; extra == "all"
159
+ Requires-Dist: tabulate; extra == "all"
160
+ Requires-Dist: peft; extra == "all"
157
161
  Requires-Dist: sre_yield; extra == "all"
158
- Requires-Dist: sentence_transformers; extra == "all"
162
+ Requires-Dist: pymupdf4llm; extra == "all"
163
+ Requires-Dist: google-api-python-client; extra == "all"
164
+ Requires-Dist: torchaudio; extra == "all"
165
+ Requires-Dist: cachetools; extra == "all"
166
+ Requires-Dist: httpx; extra == "all"
167
+ Requires-Dist: pyyaml; extra == "all"
168
+ Requires-Dist: google-auth; extra == "all"
169
+ Requires-Dist: motor; extra == "all"
159
170
  Requires-Dist: pycountry; extra == "all"
160
- Requires-Dist: flet-webview; extra == "all"
171
+ Requires-Dist: sentence_transformers; extra == "all"
172
+ Requires-Dist: deepmerge; extra == "all"
161
173
  Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
162
- Requires-Dist: beanie[odm]; extra == "all"
163
- Requires-Dist: openpyxl; extra == "all"
164
- Requires-Dist: Unidecode; extra == "all"
165
- Requires-Dist: pandas; extra == "all"
166
- Requires-Dist: flet[all]; extra == "all"
167
- Requires-Dist: logfire[httpx]; extra == "all"
168
174
  Requires-Dist: pymupdf; extra == "all"
169
- Requires-Dist: torchaudio; extra == "all"
170
- Requires-Dist: openai; extra == "all"
171
- Requires-Dist: fastapi; extra == "all"
172
- Requires-Dist: pydantic-settings; extra == "all"
173
- Requires-Dist: appdirs; extra == "all"
174
- Requires-Dist: google-auth-oauthlib; extra == "all"
175
+ Requires-Dist: google-auth-httplib2; extra == "all"
175
176
  Requires-Dist: logfire[fastapi]; extra == "all"
176
- Requires-Dist: bokeh; extra == "all"
177
- Requires-Dist: semver; extra == "all"
178
- Requires-Dist: pyyaml; extra == "all"
179
- Requires-Dist: pydantic-extra-types; extra == "all"
177
+ Requires-Dist: httpx_retries; extra == "all"
178
+ Requires-Dist: fastapi; extra == "all"
180
179
  Requires-Dist: deepdiff; extra == "all"
181
- Requires-Dist: logfire; extra == "all"
182
- Requires-Dist: dnspython[doh]; extra == "all"
183
- Requires-Dist: cachetools; extra == "all"
184
180
  Requires-Dist: pytest-cov; extra == "all"
185
- Requires-Dist: motor; extra == "all"
186
- Requires-Dist: contexttimer; extra == "all"
187
- Requires-Dist: deepmerge; extra == "all"
188
- Requires-Dist: json_repair; extra == "all"
189
- Requires-Dist: html2text; extra == "all"
190
- Requires-Dist: distributed; extra == "all"
191
- Requires-Dist: httpx_retries; extra == "all"
192
- Requires-Dist: tokenizers; extra == "all"
193
181
  Requires-Dist: faker; extra == "all"
194
- Requires-Dist: regex; extra == "all"
195
182
  Requires-Dist: huggingface_hub; extra == "all"
196
- Requires-Dist: ollama; extra == "all"
197
- Requires-Dist: google-api-python-client; extra == "all"
183
+ Requires-Dist: openpyxl; extra == "all"
184
+ Requires-Dist: flet[all]; extra == "all"
185
+ Requires-Dist: flet-video; extra == "all"
186
+ Requires-Dist: regex; extra == "all"
187
+ Requires-Dist: logfire[httpx]; extra == "all"
188
+ Requires-Dist: pandas; extra == "all"
189
+ Requires-Dist: beanie[odm]; extra == "all"
190
+ Requires-Dist: contexttimer; extra == "all"
198
191
  Requires-Dist: diskcache; extra == "all"
199
- Requires-Dist: peft; extra == "all"
200
192
  Requires-Dist: playwright; extra == "all"
201
- Requires-Dist: setuptools; extra == "all"
193
+ Requires-Dist: appdirs; extra == "all"
194
+ Requires-Dist: pydantic-extra-types; extra == "all"
195
+ Requires-Dist: tokenizers; extra == "all"
196
+ Requires-Dist: tinynetrc; extra == "all"
197
+ Requires-Dist: pydantic-settings; extra == "all"
198
+ Requires-Dist: logfire; extra == "all"
202
199
  Requires-Dist: yamlscript; extra == "all"
203
- Requires-Dist: google-auth; extra == "all"
204
- Requires-Dist: tabulate; extra == "all"
205
- Requires-Dist: flet-video; extra == "all"
200
+ Requires-Dist: distributed; extra == "all"
201
+ Requires-Dist: dnspython[doh]; extra == "all"
202
+ Requires-Dist: html2text; extra == "all"
203
+ Requires-Dist: setuptools; extra == "all"
204
+ Requires-Dist: json_repair; extra == "all"
205
+ Requires-Dist: flet-webview; extra == "all"
206
206
  Requires-Dist: torchvision; extra == "all"
207
- Requires-Dist: pymupdf4llm; extra == "all"
207
+ Requires-Dist: Unidecode; extra == "all"
208
+ Requires-Dist: semver; extra == "all"
209
+ Requires-Dist: odfpy; extra == "all"
210
+ Requires-Dist: google-auth-oauthlib; extra == "all"
208
211
  Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
209
- Requires-Dist: httpx; extra == "all"
210
- Requires-Dist: google-auth-httplib2; extra == "all"
211
- Requires-Dist: python-on-whales; extra == "all"
212
- Requires-Dist: dask[bag]; extra == "all"
213
212
  Requires-Dist: transformers[sentencepiece]; extra == "all"
214
- Requires-Dist: pydantic; extra == "all"
215
213
  Requires-Dist: filetype; extra == "all"
216
- Requires-Dist: odfpy; extra == "all"
217
- Requires-Dist: tinynetrc; extra == "all"
218
- Requires-Dist: uvicorn[standard]; extra == "all"
214
+ Requires-Dist: python-on-whales; extra == "all"
215
+ Requires-Dist: dask[bag]; extra == "all"
216
+ Requires-Dist: openai; extra == "all"
217
+ Requires-Dist: ollama; extra == "all"
218
+ Requires-Dist: bokeh; extra == "all"
219
219
  Dynamic: author
220
220
  Dynamic: author-email
221
221
  Dynamic: description
@@ -8,7 +8,7 @@ fmtr/tools/context_tools.py,sha256=4UvIHYgLqAh7dXMX9EBrLEpYp81qfzhSVrkffOSAoGA,3
8
8
  fmtr/tools/data_modelling_tools.py,sha256=0BFm-F_cYzVTxftWQwORkPd0FM2BTLVh9-s0-rTTFoo,1744
9
9
  fmtr/tools/dataclass_tools.py,sha256=0Gt6KeLhtPgubo_2tYkIVqB8oQ91Qzag8OAGZDdjvMU,1209
10
10
  fmtr/tools/datatype_tools.py,sha256=3P4AWIFGkJ-UqvXlj0Jc9IvkIIgTOE9jRrOk3NVbpH8,1508
11
- fmtr/tools/datetime_tools.py,sha256=StliYw51ZXi-miVB4O9Ps0zI6wsT_nbWhIb6R2ybNuo,330
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
14
14
  fmtr/tools/function_tools.py,sha256=O1K8HwftXfzrBblNZrj-BhWNbr4poJghrXNr2mFcylI,2831
@@ -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=CAsApa1YwVdNE6H66Vjivs_mXYvOas3rh7fPELAnTpk,795
47
47
  fmtr/tools/unicode_tools.py,sha256=yS_9wpu8ogNoiIL7s1G_8bETFFO_YQlo4LNPv1NLDeY,52
48
- fmtr/tools/version,sha256=df4zgDNrLsS4O6Sw_xk0AxtvV2GeXPgFyjVdn4_E9qA,6
48
+ fmtr/tools/version,sha256=GLIvT9UpgOfR5eMy3tLt3pC5v1vyNChBHJb4URw1OpY,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
@@ -67,7 +67,7 @@ fmtr/tools/entrypoints/remote_debug_test.py,sha256=wmKg9o2pQq7eqeHmaO8oviujNgtns
67
67
  fmtr/tools/entrypoints/shell_debug.py,sha256=0No3tAg9Ri4_vvSlQCUtAY-11HR0nE45i0VVtiAViwY,106
68
68
  fmtr/tools/interface_tools/__init__.py,sha256=_bgZRTqmygtYM75o6_zyQRhT_XZnDERZEHmsYVrzyxw,393
69
69
  fmtr/tools/interface_tools/context.py,sha256=VpoR_ZCndDbwS0AzIPKi1hB2QckwJU5dJqAJavF3mqk,151
70
- fmtr/tools/interface_tools/controls.py,sha256=rLa80ujAcwPEBRHjV_pAoSsVlmibtj0jeYyzznQRf-Q,2663
70
+ fmtr/tools/interface_tools/controls.py,sha256=KYjo-TLQuoh8gCgw6saZs6Sz1zDwCm5wfIgqta4mKrE,3030
71
71
  fmtr/tools/interface_tools/interface_tools.py,sha256=GXnBkSO_Y-F7E5sErJdyyEkO3PyTz97yQBXlTEw_Ufw,4295
72
72
  fmtr/tools/path_tools/__init__.py,sha256=XrJXt7Zzo90tYUVksMlDfKkWt775zJ9OSi2NbhnqMDI,459
73
73
  fmtr/tools/path_tools/app_path_tools.py,sha256=JrJvtTDd_gkCKcZtBCDTMktsM77PZwGV_hzQX0g5GU8,1722
@@ -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.57.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
89
- fmtr_tools-1.3.57.dist-info/METADATA,sha256=E96Kl8LdTpsrYoTwOe8YWpJ3w3gZIXxWL82y42WRwio,17455
90
- fmtr_tools-1.3.57.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
91
- fmtr_tools-1.3.57.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
92
- fmtr_tools-1.3.57.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
93
- fmtr_tools-1.3.57.dist-info/RECORD,,
88
+ fmtr_tools-1.3.59.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
89
+ fmtr_tools-1.3.59.dist-info/METADATA,sha256=7iNgPOAPyFzPnFk27qaw51DComPnrtV28w7W_0E8toE,17455
90
+ fmtr_tools-1.3.59.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
91
+ fmtr_tools-1.3.59.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
92
+ fmtr_tools-1.3.59.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
93
+ fmtr_tools-1.3.59.dist-info/RECORD,,