TypeDAL 3.14.0__tar.gz → 3.14.1__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.
- {typedal-3.14.0 → typedal-3.14.1}/CHANGELOG.md +6 -0
- {typedal-3.14.0 → typedal-3.14.1}/PKG-INFO +2 -2
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/__about__.py +1 -1
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/mixins.py +4 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_mixins.py +8 -1
- {typedal-3.14.0 → typedal-3.14.1}/.github/workflows/su6.yml +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/.gitignore +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/.readthedocs.yml +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/README.md +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/coverage.svg +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/docs/1_getting_started.md +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/docs/2_defining_tables.md +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/docs/3_building_queries.md +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/docs/4_relationships.md +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/docs/5_py4web.md +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/docs/6_migrations.md +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/docs/7_mixins.md +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/docs/css/code_blocks.css +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/docs/index.md +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/docs/requirements.txt +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/example_new.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/example_old.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/mkdocs.yml +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/pyproject.toml +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/__init__.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/caching.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/cli.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/config.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/core.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/fields.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/for_py4web.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/for_web2py.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/helpers.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/py.typed +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/serializers/as_json.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/types.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/src/typedal/web2py_py4web_shared.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/__init__.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/configs/simple.toml +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/configs/valid.env +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/configs/valid.toml +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_cli.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_config.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_docs_examples.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_helpers.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_json.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_main.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_mypy.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_orm.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_py4web.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_query_builder.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_relationships.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_row.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_stats.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_table.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_web2py.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/test_xx_others.py +0 -0
- {typedal-3.14.0 → typedal-3.14.1}/tests/timings.py +0 -0
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
<!--next-version-placeholder-->
|
|
4
4
|
|
|
5
|
+
## v3.14.1 (2025-05-27)
|
|
6
|
+
|
|
7
|
+
### Fix
|
|
8
|
+
|
|
9
|
+
* Don't force slug if already manually set ([`a33b2b5`](https://github.com/trialandsuccess/TypeDAL/commit/a33b2b523a56ae9adc6fb4c49a5708efe7950977))
|
|
10
|
+
|
|
5
11
|
## v3.14.0 (2025-05-15)
|
|
6
12
|
|
|
7
13
|
### Feature
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: TypeDAL
|
|
3
|
-
Version: 3.14.
|
|
3
|
+
Version: 3.14.1
|
|
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
|
|
@@ -197,6 +197,10 @@ class SlugMixin(Mixin):
|
|
|
197
197
|
|
|
198
198
|
@classmethod
|
|
199
199
|
def __generate_slug_before_insert(cls, row: OpRow) -> None:
|
|
200
|
+
if row.get("slug"):
|
|
201
|
+
# manually set -> skip
|
|
202
|
+
return None
|
|
203
|
+
|
|
200
204
|
settings = cls.__settings__
|
|
201
205
|
|
|
202
206
|
text_input = row[settings["slug_field"]]
|
|
@@ -95,7 +95,7 @@ def test_slug(db):
|
|
|
95
95
|
assert error is None
|
|
96
96
|
|
|
97
97
|
assert row.name == "Two Words"
|
|
98
|
-
assert row.slug.startswith("two-words")
|
|
98
|
+
assert row.slug.startswith("two-words-")
|
|
99
99
|
|
|
100
100
|
row, error = TableWithSlugSuffix.validate_and_insert(name="Two Words")
|
|
101
101
|
assert error is None
|
|
@@ -103,6 +103,13 @@ def test_slug(db):
|
|
|
103
103
|
assert row.name == "Two Words"
|
|
104
104
|
assert row.slug.startswith("two-words")
|
|
105
105
|
|
|
106
|
+
# test manual slug:
|
|
107
|
+
manual_slug = "some-other-slug-manually-defined"
|
|
108
|
+
# validate_and_insert will fail because 'slug' is not writable
|
|
109
|
+
row = TableWithMixins.insert(name="Some Name", slug=manual_slug)
|
|
110
|
+
|
|
111
|
+
assert row.slug == manual_slug
|
|
112
|
+
|
|
106
113
|
|
|
107
114
|
def test_timestamps(db):
|
|
108
115
|
row = TableWithTimestamps.insert(unrelated="Hi")
|
|
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
|
|
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
|