dataclassdb 0.1.2__tar.gz → 0.1.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.
Files changed (38) hide show
  1. {dataclassdb-0.1.2/src/dataclassdb.egg-info → dataclassdb-0.1.3}/PKG-INFO +1 -1
  2. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/pyproject.toml +1 -1
  3. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/builders/query_builder.py +15 -1
  4. {dataclassdb-0.1.2 → dataclassdb-0.1.3/src/dataclassdb.egg-info}/PKG-INFO +1 -1
  5. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb.egg-info/SOURCES.txt +1 -0
  6. dataclassdb-0.1.3/tests/test_current_cols.py +59 -0
  7. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/LICENSE +0 -0
  8. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/README.md +0 -0
  9. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/setup.cfg +0 -0
  10. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/__init__.py +0 -0
  11. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/builders/function_builder.py +0 -0
  12. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/builders/list_utils.py +0 -0
  13. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/builders/statement_builder.py +0 -0
  14. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/builders/string_builder.py +0 -0
  15. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/constants.py +0 -0
  16. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/dataclass_db.py +0 -0
  17. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/dataclass_field_codec.py +0 -0
  18. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/dataclass_sqlite_field.py +0 -0
  19. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/dataclass_sqlite_table.py +0 -0
  20. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/dataclass_types.py +0 -0
  21. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/db_engine.py +0 -0
  22. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb/utils.py +0 -0
  23. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb.egg-info/dependency_links.txt +0 -0
  24. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb.egg-info/requires.txt +0 -0
  25. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/src/dataclassdb.egg-info/top_level.txt +0 -0
  26. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_annotation_parsing.py +0 -0
  27. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_builders.py +0 -0
  28. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_custom_codec.py +0 -0
  29. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_dataclass_db.py +0 -0
  30. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_dataclass_field_codec.py +0 -0
  31. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_dataclass_sqlite_codec.py +0 -0
  32. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_date_codec.py +0 -0
  33. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_db_engine.py +0 -0
  34. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_list_utils.py +0 -0
  35. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_no_primary.py +0 -0
  36. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_query_builder.py +0 -0
  37. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_string_builder.py +0 -0
  38. {dataclassdb-0.1.2 → dataclassdb-0.1.3}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataclassdb
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: This module provides a lightweight sqlite3 ORM using normal dataclass.
5
5
  Author-email: "@stuarts-art" <stuartsartemail@gmail.com>
6
6
  Maintainer-email: "@stuarts-art" <stuartsartemail@gmail.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dataclassdb"
3
- version = "0.1.2"
3
+ version = "0.1.3"
4
4
  description = "This module provides a lightweight sqlite3 ORM using normal dataclass."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -107,7 +107,21 @@ class QueryBuilder(DbEngine, StatementBuilder, FunctionBuilder):
107
107
  if not row:
108
108
  return []
109
109
 
110
- cols = row[0].split("(", 1)[-1].rsplit(")", 1)[0].split(",")
110
+ cols_str: str = row[0].split("(", 1)[-1].rsplit(")", 1)[0]
111
+ cols = []
112
+ l_count = 0
113
+ last = 0
114
+ for i in range(len(cols_str)):
115
+ c = cols_str[i]
116
+ if c == "(":
117
+ l_count += 1
118
+ elif c == ")":
119
+ l_count -= 1
120
+ elif c == "," and l_count == 0:
121
+ cols.append(cols_str[last:i])
122
+ last = i + 1
123
+ if last < len(cols_str):
124
+ cols.append(cols_str[last:])
111
125
  cols = [col.replace("\n", "").strip() for col in cols]
112
126
  return cols
113
127
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataclassdb
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: This module provides a lightweight sqlite3 ORM using normal dataclass.
5
5
  Author-email: "@stuarts-art" <stuartsartemail@gmail.com>
6
6
  Maintainer-email: "@stuarts-art" <stuartsartemail@gmail.com>
@@ -22,6 +22,7 @@ src/dataclassdb/builders/statement_builder.py
22
22
  src/dataclassdb/builders/string_builder.py
23
23
  tests/test_annotation_parsing.py
24
24
  tests/test_builders.py
25
+ tests/test_current_cols.py
25
26
  tests/test_custom_codec.py
26
27
  tests/test_dataclass_db.py
27
28
  tests/test_dataclass_field_codec.py
@@ -0,0 +1,59 @@
1
+ from typing import Annotated
2
+
3
+ import pytest
4
+ from dataclasses import dataclass
5
+
6
+ from dataclassdb.dataclass_db import DataclassDb
7
+
8
+
9
+
10
+ @dataclass
11
+ class No_Constraints:
12
+ id: int
13
+ name: str
14
+
15
+ @dataclass
16
+ class Multiple_Unique:
17
+ id: int
18
+ first_name: Annotated[str, "UNIQUE"]
19
+ last_name: Annotated[str, "UNIQUE"]
20
+
21
+ @dataclass
22
+ class Multiple_Primary:
23
+ id: Annotated[int, "PRIMARY KEY"]
24
+ region: Annotated[str, "PRIMARY KEY"]
25
+ name: str
26
+ # first_name: Annotated[str, "UNIQUE"]
27
+ # last_name: Annotated[str, "UNIQUE"]
28
+
29
+ @dataclass
30
+ class Multiple_Primary_and_Unique:
31
+ id: Annotated[int, "PRIMARY KEY"]
32
+ region: Annotated[str, "PRIMARY KEY"]
33
+ first_name: Annotated[str, "UNIQUE"]
34
+ last_name: Annotated[str, "UNIQUE"]
35
+
36
+ @pytest.mark.parametrize(
37
+ "data_class, field_count",
38
+ [
39
+ (No_Constraints, 2),
40
+ (Multiple_Unique, 4),
41
+ (Multiple_Primary, 4),
42
+ (Multiple_Primary_and_Unique, 6),
43
+ ],
44
+ )
45
+ def test_no_constraints(data_class, field_count, db_mem_connection):
46
+ with DataclassDb(data_class, db_mem_connection) as db:
47
+ assert len(db.get_curr_cols(db.data_class)) == field_count
48
+ assert len(db.dataclass_sql_cols()) == field_count
49
+
50
+ assert db.get_curr_cols(db.data_class) == db.dataclass_sql_cols()
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
File without changes
File without changes
File without changes