TypeDAL 3.14.1__py3-none-any.whl → 3.14.3__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 TypeDAL might be problematic. Click here for more details.

typedal/__about__.py CHANGED
@@ -5,4 +5,4 @@ This file contains the Version info for this package.
5
5
  # SPDX-FileCopyrightText: 2023-present Robin van der Noord <robinvandernoord@gmail.com>
6
6
  #
7
7
  # SPDX-License-Identifier: MIT
8
- __version__ = "3.14.1"
8
+ __version__ = "3.14.3"
typedal/cli.py CHANGED
@@ -392,8 +392,7 @@ def fake_migrations(
392
392
 
393
393
  previously_migrated = (
394
394
  db(
395
- db.ewh_implemented_features.name.belongs(to_fake)
396
- & (db.ewh_implemented_features.installed == True) # noqa E712
395
+ db.ewh_implemented_features.name.belongs(to_fake) & (db.ewh_implemented_features.installed == True) # noqa E712
397
396
  )
398
397
  .select(db.ewh_implemented_features.name)
399
398
  .column("name")
typedal/fields.py CHANGED
@@ -256,11 +256,41 @@ def TimestampField(**kw: Unpack[FieldSettings]) -> TypedField[dt.datetime]:
256
256
  )
257
257
 
258
258
 
259
+ def safe_decode_native_point(value: str | None):
260
+ if not value:
261
+ return ()
262
+
263
+ try:
264
+ return ast.literal_eval(value)
265
+ except ValueError: # pragma: no cover
266
+ # should not happen when inserted with `safe_encode_native_point` but you never know
267
+ return ()
268
+
269
+
270
+ def safe_encode_native_point(value: tuple[str, str] | str) -> str:
271
+ if not value:
272
+ return ""
273
+
274
+ # Convert string to tuple if needed
275
+ if isinstance(value, str):
276
+ value = value.strip("() ")
277
+ if not value:
278
+ return ""
279
+ value = tuple(float(x.strip()) for x in value.split(","))
280
+
281
+ # Validate and format
282
+ if len(value) != 2:
283
+ raise ValueError("Point must have exactly 2 coordinates")
284
+
285
+ x, y = value
286
+ return f"({x},{y})"
287
+
288
+
259
289
  NativePointField = SQLCustomType(
260
290
  type="string",
261
291
  native="point",
262
- encoder=str,
263
- decoder=ast.literal_eval,
292
+ encoder=safe_encode_native_point,
293
+ decoder=safe_decode_native_point,
264
294
  )
265
295
 
266
296
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: TypeDAL
3
- Version: 3.14.1
3
+ Version: 3.14.3
4
4
  Summary: Typing support for PyDAL
5
5
  Project-URL: Documentation, https://typedal.readthedocs.io/
6
6
  Project-URL: Issues, https://github.com/trialandsuccess/TypeDAL/issues
@@ -1,10 +1,10 @@
1
- typedal/__about__.py,sha256=gPFJHgdYiAC_OUYO9TMMtO1NL7YgNLC8HD2pq-8nyuA,207
1
+ typedal/__about__.py,sha256=Ybj7WLRqCZenUAKsMy7nfQIS_YJfO5wEBBmLNUtp7wQ,207
2
2
  typedal/__init__.py,sha256=Y6LT5UE3HrfWND_drJddYFbDjfnvqQER8MxZiEREFGw,366
3
3
  typedal/caching.py,sha256=6YUzUMpan56nSy3D-Jl0FS-8V4LbTnpRSoDJHj6yPYo,11782
4
- typedal/cli.py,sha256=e08L8k6q1NGSzpKs7ywin0uwkK7Kz07I4REVjHdbyyE,19267
4
+ typedal/cli.py,sha256=SnWceLPDd-t90VPHAV9O3RR7JZtpVniT55TqtrRv3VM,19255
5
5
  typedal/config.py,sha256=0qy1zrTUdtmXPM9jHzFnSR1DJsqGJqcdG6pvhzKQHe0,11625
6
6
  typedal/core.py,sha256=GYNX7aGaqaPWZUYTxiNDAswQi7jeP87qAlYk1OzCO5g,108942
7
- typedal/fields.py,sha256=ThkI0_E6Oq_2Vj30j0AWHRSOLvUEPu1gyECtStoECjs,6556
7
+ typedal/fields.py,sha256=oOmTonXG-g4Lpj5_gSr8GJ-EZIEqO435Fm8-MS_cmoc,7356
8
8
  typedal/for_py4web.py,sha256=KIIu8XgnAfRQCJfZCra79k8SInOHiFuLDKUv3hzTJng,1908
9
9
  typedal/for_web2py.py,sha256=xn7zo6ImsmTkH6LacbjLQl2oqyBvP0zLqRxEJvMQk1w,1929
10
10
  typedal/helpers.py,sha256=LpBgTwKmt9f1b4Mz98mxusvIHGiCpW_abDMZLP81g6Y,8850
@@ -13,7 +13,7 @@ typedal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  typedal/types.py,sha256=1FIgv1s0be0E8r5Wd9E1nvDvK4ETV8u2NlfI7_P6UUY,6752
14
14
  typedal/web2py_py4web_shared.py,sha256=VK9T8P5UwVLvfNBsY4q79ANcABv-jX76YKADt1Zz_co,1539
15
15
  typedal/serializers/as_json.py,sha256=3JZlFhPrdvZVFAmH7P5DUAz8-TIk-br0F1CjKG3PFDM,2246
16
- typedal-3.14.1.dist-info/METADATA,sha256=o-C0UjB75DrK1EyzNpDLiNWLSv56My69QO9z89IwWeU,10461
17
- typedal-3.14.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
18
- typedal-3.14.1.dist-info/entry_points.txt,sha256=m1wqcc_10rHWPdlQ71zEkmJDADUAnZtn7Jac_6mbyUc,44
19
- typedal-3.14.1.dist-info/RECORD,,
16
+ typedal-3.14.3.dist-info/METADATA,sha256=Zuxsdy0jCzjUwGvkxIRtIJNfxpxL03J_2QAOlFHr1bk,10461
17
+ typedal-3.14.3.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
18
+ typedal-3.14.3.dist-info/entry_points.txt,sha256=m1wqcc_10rHWPdlQ71zEkmJDADUAnZtn7Jac_6mbyUc,44
19
+ typedal-3.14.3.dist-info/RECORD,,