TypeDAL 3.14.2__tar.gz → 3.14.3__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 TypeDAL might be problematic. Click here for more details.

Files changed (58) hide show
  1. {typedal-3.14.2 → typedal-3.14.3}/CHANGELOG.md +6 -0
  2. {typedal-3.14.2 → typedal-3.14.3}/PKG-INFO +1 -1
  3. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/__about__.py +1 -1
  4. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/fields.py +12 -5
  5. {typedal-3.14.2 → typedal-3.14.3}/tests/test_config.py +1 -1
  6. {typedal-3.14.2 → typedal-3.14.3}/.github/workflows/su6.yml +0 -0
  7. {typedal-3.14.2 → typedal-3.14.3}/.gitignore +0 -0
  8. {typedal-3.14.2 → typedal-3.14.3}/.readthedocs.yml +0 -0
  9. {typedal-3.14.2 → typedal-3.14.3}/README.md +0 -0
  10. {typedal-3.14.2 → typedal-3.14.3}/coverage.svg +0 -0
  11. {typedal-3.14.2 → typedal-3.14.3}/docs/1_getting_started.md +0 -0
  12. {typedal-3.14.2 → typedal-3.14.3}/docs/2_defining_tables.md +0 -0
  13. {typedal-3.14.2 → typedal-3.14.3}/docs/3_building_queries.md +0 -0
  14. {typedal-3.14.2 → typedal-3.14.3}/docs/4_relationships.md +0 -0
  15. {typedal-3.14.2 → typedal-3.14.3}/docs/5_py4web.md +0 -0
  16. {typedal-3.14.2 → typedal-3.14.3}/docs/6_migrations.md +0 -0
  17. {typedal-3.14.2 → typedal-3.14.3}/docs/7_mixins.md +0 -0
  18. {typedal-3.14.2 → typedal-3.14.3}/docs/css/code_blocks.css +0 -0
  19. {typedal-3.14.2 → typedal-3.14.3}/docs/index.md +0 -0
  20. {typedal-3.14.2 → typedal-3.14.3}/docs/requirements.txt +0 -0
  21. {typedal-3.14.2 → typedal-3.14.3}/example_new.py +0 -0
  22. {typedal-3.14.2 → typedal-3.14.3}/example_old.py +0 -0
  23. {typedal-3.14.2 → typedal-3.14.3}/mkdocs.yml +0 -0
  24. {typedal-3.14.2 → typedal-3.14.3}/pyproject.toml +0 -0
  25. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/__init__.py +0 -0
  26. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/caching.py +0 -0
  27. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/cli.py +0 -0
  28. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/config.py +0 -0
  29. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/core.py +0 -0
  30. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/for_py4web.py +0 -0
  31. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/for_web2py.py +0 -0
  32. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/helpers.py +0 -0
  33. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/mixins.py +0 -0
  34. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/py.typed +0 -0
  35. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/serializers/as_json.py +0 -0
  36. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/types.py +0 -0
  37. {typedal-3.14.2 → typedal-3.14.3}/src/typedal/web2py_py4web_shared.py +0 -0
  38. {typedal-3.14.2 → typedal-3.14.3}/tests/__init__.py +0 -0
  39. {typedal-3.14.2 → typedal-3.14.3}/tests/configs/simple.toml +0 -0
  40. {typedal-3.14.2 → typedal-3.14.3}/tests/configs/valid.env +0 -0
  41. {typedal-3.14.2 → typedal-3.14.3}/tests/configs/valid.toml +0 -0
  42. {typedal-3.14.2 → typedal-3.14.3}/tests/test_cli.py +0 -0
  43. {typedal-3.14.2 → typedal-3.14.3}/tests/test_docs_examples.py +0 -0
  44. {typedal-3.14.2 → typedal-3.14.3}/tests/test_helpers.py +0 -0
  45. {typedal-3.14.2 → typedal-3.14.3}/tests/test_json.py +0 -0
  46. {typedal-3.14.2 → typedal-3.14.3}/tests/test_main.py +0 -0
  47. {typedal-3.14.2 → typedal-3.14.3}/tests/test_mixins.py +0 -0
  48. {typedal-3.14.2 → typedal-3.14.3}/tests/test_mypy.py +0 -0
  49. {typedal-3.14.2 → typedal-3.14.3}/tests/test_orm.py +0 -0
  50. {typedal-3.14.2 → typedal-3.14.3}/tests/test_py4web.py +0 -0
  51. {typedal-3.14.2 → typedal-3.14.3}/tests/test_query_builder.py +0 -0
  52. {typedal-3.14.2 → typedal-3.14.3}/tests/test_relationships.py +0 -0
  53. {typedal-3.14.2 → typedal-3.14.3}/tests/test_row.py +0 -0
  54. {typedal-3.14.2 → typedal-3.14.3}/tests/test_stats.py +0 -0
  55. {typedal-3.14.2 → typedal-3.14.3}/tests/test_table.py +0 -0
  56. {typedal-3.14.2 → typedal-3.14.3}/tests/test_web2py.py +0 -0
  57. {typedal-3.14.2 → typedal-3.14.3}/tests/test_xx_others.py +0 -0
  58. {typedal-3.14.2 → typedal-3.14.3}/tests/timings.py +0 -0
@@ -2,6 +2,12 @@
2
2
 
3
3
  <!--next-version-placeholder-->
4
4
 
5
+ ## v3.14.3 (2025-06-09)
6
+
7
+ ### Fix
8
+
9
+ * Improved `point` parsing ([`9d8aa8a`](https://github.com/trialandsuccess/TypeDAL/commit/9d8aa8a9e23e09b5818153f0d9674176822d3893))
10
+
5
11
  ## v3.14.2 (2025-06-05)
6
12
 
7
13
  ### Fix
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: TypeDAL
3
- Version: 3.14.2
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
@@ -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.2"
8
+ __version__ = "3.14.3"
@@ -267,16 +267,23 @@ def safe_decode_native_point(value: str | None):
267
267
  return ()
268
268
 
269
269
 
270
- def safe_encode_native_point(value):
270
+ def safe_encode_native_point(value: tuple[str, str] | str) -> str:
271
271
  if not value:
272
272
  return ""
273
273
 
274
+ # Convert string to tuple if needed
274
275
  if isinstance(value, str):
275
- value = tuple(float(_) for _ in value.strip("(").strip(")").split(","))
276
- if not (isinstance(value, tuple) and len(value) == 2):
277
- raise ValueError("Invalid point tuple")
276
+ value = value.strip("() ")
277
+ if not value:
278
+ return ""
279
+ value = tuple(float(x.strip()) for x in value.split(","))
278
280
 
279
- return str(value)
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})"
280
287
 
281
288
 
282
289
  NativePointField = SQLCustomType(
@@ -288,7 +288,7 @@ def test_point_fields_psql(at_temp_dir):
288
288
 
289
289
  db.rollback()
290
290
 
291
- row3 = OptionalPoint.insert(maybe_pt=())
291
+ row3 = OptionalPoint.insert(maybe_pt="()")
292
292
  assert row3.maybe_pt == ()
293
293
 
294
294
  assert '"pt" point NOT NULL' in Point._sql()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes