TypeDAL 4.6.2__tar.gz → 4.6.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.
- {typedal-4.6.2 → typedal-4.6.3}/CHANGELOG.md +6 -0
- {typedal-4.6.2 → typedal-4.6.3}/PKG-INFO +1 -1
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/__about__.py +1 -1
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/cli.py +1 -2
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/fields.py +1 -3
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/tables.py +1 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_row.py +20 -0
- {typedal-4.6.2 → typedal-4.6.3}/.crush/.gitignore +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/.crush/crush.db-shm +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/.crush/crush.db-wal +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/.crush/init +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/.crush/logs/crush.log +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/.github/workflows/su6.yml +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/.gitignore +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/.readthedocs.yml +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/README.md +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/coverage.svg +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/10_advanced_apis.md +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/1_getting_started.md +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/2_defining_tables.md +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/3_building_queries.md +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/4_relationships.md +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/5_py4web.md +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/6_migrations.md +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/7_configuration.md +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/8_mixins.md +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/9_memoization.md +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/css/code_blocks.css +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/index.md +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/docs/requirements.txt +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/example_new.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/example_old.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/mkdocs.yml +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/pyproject.toml +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/__init__.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/caching.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/config.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/constants.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/core.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/define.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/for_py4web.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/for_web2py.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/helpers.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/mixins.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/py.typed +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/query_builder.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/relationships.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/rows.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/serializers/as_json.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/types.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/src/typedal/web2py_py4web_shared.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tasks.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/__init__.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/configs/simple.toml +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/configs/valid.env +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/configs/valid.toml +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/py314_tests.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_cli.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_config.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_docs_examples.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_helpers.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_json.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_main.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_mixins.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_mypy.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_orm.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_py4web.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_query_builder.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_relationships.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_stats.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_table.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_web2py.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/test_xx_others.py +0 -0
- {typedal-4.6.2 → typedal-4.6.3}/tests/timings.py +0 -0
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
<!--next-version-placeholder-->
|
|
4
4
|
|
|
5
|
+
## v4.6.3 (2026-03-19)
|
|
6
|
+
|
|
7
|
+
### Fix
|
|
8
|
+
|
|
9
|
+
* `as_dict()` and similar changed behavior after doing `.render()` ([`8241503`](https://github.com/trialandsuccess/TypeDAL/commit/8241503073c5a9fd76cc898048f6c7796de3ce7a))
|
|
10
|
+
|
|
5
11
|
## v4.6.2 (2026-03-13)
|
|
6
12
|
|
|
7
13
|
### Fix
|
|
@@ -390,8 +390,7 @@ def fake_migrations(
|
|
|
390
390
|
|
|
391
391
|
previously_migrated = (
|
|
392
392
|
db(
|
|
393
|
-
db.ewh_implemented_features.name.belongs(to_fake)
|
|
394
|
-
& (db.ewh_implemented_features.installed == True) # noqa E712
|
|
393
|
+
db.ewh_implemented_features.name.belongs(to_fake) & (db.ewh_implemented_features.installed == True) # noqa E712
|
|
395
394
|
)
|
|
396
395
|
.select(db.ewh_implemented_features.name)
|
|
397
396
|
.column("name")
|
|
@@ -373,9 +373,7 @@ def UploadField(**kw: t.Unpack[FieldSettings]) -> TypedField[str]:
|
|
|
373
373
|
Upload = UploadField
|
|
374
374
|
|
|
375
375
|
|
|
376
|
-
def ReferenceField[
|
|
377
|
-
T_subclass: (TypedTable, Table)
|
|
378
|
-
](
|
|
376
|
+
def ReferenceField[T_subclass: (TypedTable, Table)](
|
|
379
377
|
other_table: str | t.Type[TypedTable] | TypedTable | Table | T_subclass,
|
|
380
378
|
**kw: t.Unpack[FieldSettings],
|
|
381
379
|
) -> TypedField[int]:
|
|
@@ -1104,6 +1104,7 @@ class TypedTable(_TypedTable, metaclass=TableMeta):
|
|
|
1104
1104
|
# then create a new (more empty) row object:
|
|
1105
1105
|
state["_row"] = Row(json.loads(state["_row"]))
|
|
1106
1106
|
self.__dict__ |= state
|
|
1107
|
+
self._setup_instance_methods()
|
|
1107
1108
|
|
|
1108
1109
|
@classmethod
|
|
1109
1110
|
def _sql(cls) -> str:
|
|
@@ -266,6 +266,15 @@ def test_render():
|
|
|
266
266
|
assert rendered_two.normal == "123"
|
|
267
267
|
assert rendered_two.list_field == "abc, def"
|
|
268
268
|
assert rendered_two.related.also_normal == "321"
|
|
269
|
+
assert json.loads(rendered_two.as_json()) == {
|
|
270
|
+
"id": rendered_two.id,
|
|
271
|
+
"normal": "123",
|
|
272
|
+
"list_field": "abc, def",
|
|
273
|
+
"related": {
|
|
274
|
+
"id": rendered_two.related.id,
|
|
275
|
+
"also_normal": "321",
|
|
276
|
+
},
|
|
277
|
+
}
|
|
269
278
|
|
|
270
279
|
# test list:
|
|
271
280
|
|
|
@@ -287,3 +296,14 @@ def test_render():
|
|
|
287
296
|
assert rendered_four.normal == "123"
|
|
288
297
|
assert rendered_four.list_field == "abc, def"
|
|
289
298
|
assert rendered_four.related_list[0].also_normal == "321"
|
|
299
|
+
assert json.loads(rendered_four.as_json()) == {
|
|
300
|
+
"id": rendered_four.id,
|
|
301
|
+
"normal": "123",
|
|
302
|
+
"list_field": "abc, def",
|
|
303
|
+
"related_list": [
|
|
304
|
+
{
|
|
305
|
+
"id": rendered_four.related_list[0].id,
|
|
306
|
+
"also_normal": "321",
|
|
307
|
+
}
|
|
308
|
+
],
|
|
309
|
+
}
|
|
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
|
|
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
|