jupyter-duckdb 1.2.7__py3-none-any.whl → 1.2.100__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.
@@ -0,0 +1,173 @@
1
+ from duckdb_kernel.util.ResultSetComparator import ResultSetComparator
2
+
3
+
4
+ def test_equals():
5
+ rsc = ResultSetComparator([
6
+ (1, "Alice"),
7
+ (3, "Charlie")
8
+ ], [
9
+ (1, "Alice"),
10
+ (3, "Charlie")
11
+ ])
12
+
13
+ assert rsc.left_only == []
14
+ assert rsc.right_only == []
15
+ assert rsc.ordered_left_only == []
16
+ assert rsc.ordered_right_only == []
17
+
18
+
19
+ def test_equals_only_unordered():
20
+ rsc = ResultSetComparator([
21
+ (1, "Alice"),
22
+ (3, "Charlie")
23
+ ], [
24
+ (3, "Charlie"),
25
+ (1, "Alice")
26
+ ])
27
+
28
+ assert rsc.left_only == []
29
+ assert rsc.right_only == []
30
+ assert rsc.ordered_left_only == [(3, "Charlie")]
31
+ assert rsc.ordered_right_only == [(1, "Alice")]
32
+
33
+
34
+ def test_missing():
35
+ # first missing
36
+ rsc = ResultSetComparator([
37
+ (1, "Alice"),
38
+ (2, "Bob"),
39
+ (3, "Charlie")
40
+ ], [
41
+ (2, "Bob"),
42
+ (3, "Charlie")
43
+ ])
44
+
45
+ assert rsc.left_only == [(1, "Alice")]
46
+ assert rsc.right_only == []
47
+ assert rsc.ordered_left_only == [(1, "Alice")]
48
+ assert rsc.ordered_right_only == []
49
+
50
+ # middle missing
51
+ rsc = ResultSetComparator([
52
+ (1, "Alice"),
53
+ (2, "Bob"),
54
+ (3, "Charlie")
55
+ ], [
56
+ (1, "Alice"),
57
+ (3, "Charlie")
58
+ ])
59
+
60
+ assert rsc.left_only == [(2, "Bob")]
61
+ assert rsc.right_only == []
62
+ assert rsc.ordered_left_only == [(2, "Bob")]
63
+ assert rsc.ordered_right_only == []
64
+
65
+ # last missing
66
+ rsc = ResultSetComparator([
67
+ (1, "Alice"),
68
+ (2, "Bob"),
69
+ (3, "Charlie")
70
+ ], [
71
+ (1, "Alice"),
72
+ (2, "Bob")
73
+ ])
74
+
75
+ assert rsc.left_only == [(3, "Charlie")]
76
+ assert rsc.right_only == []
77
+ assert rsc.ordered_left_only == [(3, "Charlie")]
78
+ assert rsc.ordered_right_only == []
79
+
80
+
81
+ def test_unnecessary():
82
+ # first unnecessary
83
+ rsc = ResultSetComparator([
84
+ (2, "Bob"),
85
+ (3, "Charlie")
86
+ ], [
87
+ (1, "Alice"),
88
+ (2, "Bob"),
89
+ (3, "Charlie")
90
+ ])
91
+
92
+ assert rsc.left_only == []
93
+ assert rsc.right_only == [(1, "Alice")]
94
+ assert rsc.ordered_left_only == []
95
+ assert rsc.ordered_right_only == [(1, "Alice")]
96
+
97
+ # middle unnecessary
98
+ rsc = ResultSetComparator([
99
+ (1, "Alice"),
100
+ (3, "Charlie")
101
+ ], [
102
+ (1, "Alice"),
103
+ (2, "Bob"),
104
+ (3, "Charlie")
105
+ ])
106
+
107
+ assert rsc.left_only == []
108
+ assert rsc.right_only == [(2, "Bob")]
109
+ assert rsc.ordered_left_only == []
110
+ assert rsc.ordered_right_only == [(2, "Bob")]
111
+
112
+ # last unnecessary
113
+ rsc = ResultSetComparator([
114
+ (1, "Alice"),
115
+ (2, "Bob")
116
+ ], [
117
+ (1, "Alice"),
118
+ (2, "Bob"),
119
+ (3, "Charlie")
120
+ ])
121
+
122
+ assert rsc.left_only == []
123
+ assert rsc.right_only == [(3, "Charlie")]
124
+ assert rsc.ordered_left_only == []
125
+ assert rsc.ordered_right_only == [(3, "Charlie")]
126
+
127
+
128
+ def test_repeating():
129
+ # equal
130
+ rsc = ResultSetComparator([
131
+ (2, "Bob"),
132
+ (2, "Bob"),
133
+ (3, "Charlie")
134
+ ], [
135
+ (2, "Bob"),
136
+ (2, "Bob"),
137
+ (3, "Charlie")
138
+ ])
139
+
140
+ assert rsc.left_only == []
141
+ assert rsc.right_only == []
142
+ assert rsc.ordered_left_only == []
143
+ assert rsc.ordered_right_only == []
144
+
145
+ # missing
146
+ rsc = ResultSetComparator([
147
+ (2, "Bob"),
148
+ (2, "Bob"),
149
+ (3, "Charlie")
150
+ ], [
151
+ (2, "Bob"),
152
+ (3, "Charlie")
153
+ ])
154
+
155
+ assert rsc.left_only == [(2, "Bob")]
156
+ assert rsc.right_only == []
157
+ assert rsc.ordered_left_only == [(2, "Bob")]
158
+ assert rsc.ordered_right_only == []
159
+
160
+ # unnecessary
161
+ rsc = ResultSetComparator([
162
+ (2, "Bob"),
163
+ (3, "Charlie")
164
+ ], [
165
+ (2, "Bob"),
166
+ (2, "Bob"),
167
+ (3, "Charlie")
168
+ ])
169
+
170
+ assert rsc.left_only == []
171
+ assert rsc.right_only == [(2, "Bob")]
172
+ assert rsc.ordered_left_only == []
173
+ assert rsc.ordered_right_only == [(2, "Bob")]
@@ -0,0 +1,48 @@
1
+ import pytest
2
+
3
+ from duckdb_kernel.db.error import EmptyResultError
4
+ from . import Connection
5
+
6
+
7
+ def test_simple_queries():
8
+ query = 'SELECT Username FROM Users'
9
+
10
+ with Connection() as con:
11
+ assert con.execute_sql(query) == [
12
+ ('Alice',),
13
+ ('Bob',),
14
+ ('Charlie',)
15
+ ]
16
+
17
+
18
+ def test_empty_result():
19
+ with Connection() as con:
20
+ query = "SELECT Username FROM Users WHERE Username = 'abcdef'"
21
+ assert con.execute_sql(query) == []
22
+
23
+ with Connection() as con:
24
+ query = 'CREATE TABLE foo (bar INTEGER PRIMARY KEY)'
25
+ try:
26
+ assert con.execute_sql(query) == []
27
+ except EmptyResultError:
28
+ pass
29
+
30
+
31
+ def test_empty_queries():
32
+ for query in [
33
+ '',
34
+ ' ',
35
+ '\n',
36
+ '-- this is an empty query too'
37
+ ]:
38
+ with pytest.raises(EmptyResultError):
39
+ with Connection() as con:
40
+ con.execute_sql(query)
41
+
42
+ with pytest.raises(Exception):
43
+ with Connection() as con:
44
+ query = '-- this is a query with syntax errors\nFOR foo IN bar'
45
+ try:
46
+ con.execute_sql(query)
47
+ except EmptyResultError:
48
+ pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: jupyter-duckdb
3
- Version: 1.2.7
3
+ Version: 1.2.100
4
4
  Summary: a basic wrapper kernel for DuckDB
5
5
  Home-page: https://github.com/erictroebs/jupyter-duckdb
6
6
  Author: Eric Tröbs
@@ -14,7 +14,7 @@ Description-Content-Type: text/markdown
14
14
  Requires-Dist: jupyter
15
15
  Requires-Dist: graphviz==0.20.3
16
16
  Requires-Dist: checkmarkandcross
17
- Requires-Dist: duckdb==1.2.0
17
+ Requires-Dist: duckdb==1.2.1
18
18
  Dynamic: author
19
19
  Dynamic: author-email
20
20
  Dynamic: classifier
@@ -44,11 +44,11 @@ duckdb_kernel/parser/elements/binary/And.py,sha256=0jgetTG8yo5TJSeK70Kj-PI9ERyek
44
44
  duckdb_kernel/parser/elements/binary/ArrowLeft.py,sha256=u4fZSoyT9lfvWXBwuhUl4DdjVZAOqyVIKmMVbpElLD4,203
45
45
  duckdb_kernel/parser/elements/binary/ConditionalSet.py,sha256=sZ3qrxPux7pb3fMrlyBg4Hw7n4-Ln-AeN70_Jp5dAPo,17652
46
46
  duckdb_kernel/parser/elements/binary/Cross.py,sha256=jVY3cvD6qDWZkJ7q74lFUPO2VdDt4aAjdk2YAfg-ZC4,687
47
- duckdb_kernel/parser/elements/binary/Difference.py,sha256=ZVRgJHYVMOFwnc97oPvGtKvLvHsjSCsn2Aao6ymxY8Y,742
48
- duckdb_kernel/parser/elements/binary/Divide.py,sha256=d7mzaOeRYSRO1F-2IHsv_C939TuYtLppbf4-5GSRJXs,265
49
- duckdb_kernel/parser/elements/binary/Division.py,sha256=Tq98RzGHN7QYF3R2ZVpwIiLhSIMQXzRgIuZ7l0D2fXg,1624
47
+ duckdb_kernel/parser/elements/binary/Difference.py,sha256=4nyHhjo09UmYjtGNC3xGQxV5ROzCGOpPkyerUN-AlF4,746
48
+ duckdb_kernel/parser/elements/binary/Divide.py,sha256=ubekU4C1wkCTidUSMLEj5neheRx0QjhWSrsPGuXTa1g,265
49
+ duckdb_kernel/parser/elements/binary/Division.py,sha256=FOYxmeNGljRETwygtVn102POCUmt71t9DXdAnLFCXZM,1535
50
50
  duckdb_kernel/parser/elements/binary/Equal.py,sha256=xd5eMwVwM7thXqmoBg-JSux4y6osxxznNzaChmgrnGI,192
51
- duckdb_kernel/parser/elements/binary/FullOuterJoin.py,sha256=WwV9jVFXr0FkfOOGKNZAiEjFKO_l0ND3RAvJYKEyVzY,1133
51
+ duckdb_kernel/parser/elements/binary/FullOuterJoin.py,sha256=W6S3rNSX0eWWtowRd6KbZ4RJqzhJUOvNt2IABmkLMJo,1383
52
52
  duckdb_kernel/parser/elements/binary/GreaterThan.py,sha256=lW7EPYjwwZ1VLZOE4ai6MBW7Zq5itsUTi_v6FxoAuU0,204
53
53
  duckdb_kernel/parser/elements/binary/GreaterThanEqual.py,sha256=gO1I3J5CZwrpqZb5Oc-WJ_fCnGylpj4YKl4s-ZAr_-4,286
54
54
  duckdb_kernel/parser/elements/binary/Intersection.py,sha256=K6NrwcLTJ1BUccifVQ2R2YHR5B71LhjuLhOalxZcM0g,757
@@ -74,6 +74,11 @@ duckdb_kernel/parser/tokenizer/__init__.py,sha256=EOSmfc2RJwtB5cE1Hhj1JAra97tckx
74
74
  duckdb_kernel/parser/util/RenamableColumn.py,sha256=LxJhFDMUv_OxYYDLwKn63QGpBRfs08jVvhuJTzRtc9c,704
75
75
  duckdb_kernel/parser/util/RenamableColumnList.py,sha256=5oEDbtvl4YfHbkxu_Ny2pc0EYnhCZsf7EeoNQvftbrU,3281
76
76
  duckdb_kernel/parser/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
+ duckdb_kernel/tests/__init__.py,sha256=MxC-m85ZyYQVn5_AJyEtXX1T5oQPngjW-Zxa_gpfXLE,2715
78
+ duckdb_kernel/tests/test_dc.py,sha256=HPJ6JGB7yXVKIOnDHB8KwX1A16ljU0I5Y8VFcJs-KVI,15192
79
+ duckdb_kernel/tests/test_ra.py,sha256=UENizwUqSnaObrvfliwkOakBQqNIh8tsQsgtYQ807MY,52371
80
+ duckdb_kernel/tests/test_result_comparison.py,sha256=TQVLPKKNyV2k3i4jCfasetPfVfCzgYZr92wxQmlzPnA,3859
81
+ duckdb_kernel/tests/test_sql.py,sha256=p7UEokoJs2xc-url7xQ4PmWKxtExrDDYnMeoyR1JD0A,1208
77
82
  duckdb_kernel/util/ResultSetComparator.py,sha256=RZDIfjJyx8-eR-HIqQlEYgZd_V1ympbszpVRF4TlA7o,2262
78
83
  duckdb_kernel/util/SQL.py,sha256=-uRfa0IwEQueZNZ7vkBPczLuvm_87y4_nnMBx3FgqNk,643
79
84
  duckdb_kernel/util/TestError.py,sha256=iwlGHr9j6pFDa2cGxqGyvJ-exrFUtPJjVm_OhHi4n3g,97
@@ -83,7 +88,7 @@ duckdb_kernel/visualization/Drawer.py,sha256=D0LkiGMvuJ2v6cQSg_axLTGaM4VXAJEQJAy
83
88
  duckdb_kernel/visualization/RATreeDrawer.py,sha256=j-Vy1zpYMzwZ3CsphyfPW-J7ou9a9tM6aXXgAlQTgDI,2128
84
89
  duckdb_kernel/visualization/SchemaDrawer.py,sha256=9K-TUUmyeGdMYMTFQJ7evIU3p8p2KyMKeizUc7-y8co,3015
85
90
  duckdb_kernel/visualization/__init__.py,sha256=5eMJmxJ01XAXcgWDn3t70eSZF2PGaXdNo6GK-x-0H3s,78
86
- jupyter_duckdb-1.2.7.dist-info/METADATA,sha256=g002q8FOyFbbZlRm-5qyDrf-yb_7n2bok9HqNXSvpbY,9113
87
- jupyter_duckdb-1.2.7.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
88
- jupyter_duckdb-1.2.7.dist-info/top_level.txt,sha256=KvRRPMnmkQNuhyBsXoPmwyt26LRDp0O-0HN6u0Dm5jA,14
89
- jupyter_duckdb-1.2.7.dist-info/RECORD,,
91
+ jupyter_duckdb-1.2.100.dist-info/METADATA,sha256=BEks9lAVLxpWmEfRvB-jyG2V_p-GEiwMqoRPQltPRxY,9115
92
+ jupyter_duckdb-1.2.100.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
93
+ jupyter_duckdb-1.2.100.dist-info/top_level.txt,sha256=KvRRPMnmkQNuhyBsXoPmwyt26LRDp0O-0HN6u0Dm5jA,14
94
+ jupyter_duckdb-1.2.100.dist-info/RECORD,,