jupyter-duckdb 1.2.0.6__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.0.6
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
@@ -27,7 +27,7 @@ duckdb_kernel/magics/__init__.py,sha256=DA8gnQeRCUt1Scy3_NQ9w5CPmMEY9i8YwB-g392p
27
27
  duckdb_kernel/parser/DCParser.py,sha256=16c1mxa494KP9OreUKQHsSQKoDGZ7NNp2u_gi_D-dkw,2293
28
28
  duckdb_kernel/parser/LogicParser.py,sha256=_vZwE5OPRUEN8aEC_fSZAYKR_dpexqNthXog9OFHYRY,1233
29
29
  duckdb_kernel/parser/ParserError.py,sha256=qJQVloFtID1HgVDQ1Io247bODT1ic3oO9Z1ZrWR-2Mk,321
30
- duckdb_kernel/parser/RAParser.py,sha256=dL5Q5J8tmlGuKQMfadvJK6cb9KmzfZLkfcUAthqDmXI,2993
30
+ duckdb_kernel/parser/RAParser.py,sha256=vLR2X8zJIJ3cPKdLvU3PKjNakEOvsoFuoK8pr4bA-Fg,3102
31
31
  duckdb_kernel/parser/__init__.py,sha256=nTmDm1ADvNPDHhVJQLxKYmArNJk6967EUXqn5AkT8FM,126
32
32
  duckdb_kernel/parser/elements/DCOperand.py,sha256=qEg_6Us4WV1eK4Bq6oUsmFt_L_x5pJPGce_wSapzIYA,1149
33
33
  duckdb_kernel/parser/elements/LogicElement.py,sha256=YasKHxWLDDP8UdyLIKbXzqIRA8-XaakjmvTj-1Iuzyc,280
@@ -38,28 +38,31 @@ duckdb_kernel/parser/elements/RAElement.py,sha256=d6QWO8KlWcwhA4tXtWsf8K4oT3OMMj
38
38
  duckdb_kernel/parser/elements/RAOperand.py,sha256=pghnTYCrrT6MkvynJRgVFPRoMvxIGNB3FTjaq-uCpDQ,1078
39
39
  duckdb_kernel/parser/elements/RAOperator.py,sha256=rtqMFBIBBqT-Bwg7Qm4WQwbDrE28Nb74F_7XMeR3ks4,255
40
40
  duckdb_kernel/parser/elements/RAUnaryOperator.py,sha256=XC1nphkSm88JaEu5V_HKnb_8JNoeBfE3EvNL4o0qh2c,654
41
- duckdb_kernel/parser/elements/__init__.py,sha256=4DA2M43hh9d1fZb5Z6YnTTI-IBkDyhChSF5L9X3EA-s,547
41
+ duckdb_kernel/parser/elements/__init__.py,sha256=t5H6SVOm3z8r6UWRYOI7HmMIuB4Yh6TLNu4_N3jg2t0,566
42
42
  duckdb_kernel/parser/elements/binary/Add.py,sha256=XGkZMfab01huk9EaI6JUfzkd2STbV1C_-TyC2guKE8I,190
43
43
  duckdb_kernel/parser/elements/binary/And.py,sha256=0jgetTG8yo5TJSeK70Kj-PI9ERyek1eyMQXX5HBxa4Y,274
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=W6S3rNSX0eWWtowRd6KbZ4RJqzhJUOvNt2IABmkLMJo,1383
51
52
  duckdb_kernel/parser/elements/binary/GreaterThan.py,sha256=lW7EPYjwwZ1VLZOE4ai6MBW7Zq5itsUTi_v6FxoAuU0,204
52
53
  duckdb_kernel/parser/elements/binary/GreaterThanEqual.py,sha256=gO1I3J5CZwrpqZb5Oc-WJ_fCnGylpj4YKl4s-ZAr_-4,286
53
54
  duckdb_kernel/parser/elements/binary/Intersection.py,sha256=K6NrwcLTJ1BUccifVQ2R2YHR5B71LhjuLhOalxZcM0g,757
54
55
  duckdb_kernel/parser/elements/binary/Join.py,sha256=9Z3JinEav3ulLbZZZM9DLbprloHC0oGuSm40Kf1A0mM,836
56
+ duckdb_kernel/parser/elements/binary/LeftOuterJoin.py,sha256=qCyHLMboNjzSDK_FREtYVwZx4UYkfRcy3FMo2pEf93o,846
55
57
  duckdb_kernel/parser/elements/binary/LessThan.py,sha256=gNlyAvew0VyvU8x3ol88zbdh_t9GU51Kd2P_PmHUrAc,201
56
58
  duckdb_kernel/parser/elements/binary/LessThanEqual.py,sha256=BKKXBZ4TZQ4EBxBDSNzIpFl4Oz1IGI0tI0Oj7KZUoDo,283
57
59
  duckdb_kernel/parser/elements/binary/Minus.py,sha256=1XUTXCA0GcAcCnv9nq4B9ewT0XHJ91LlZGEW1y60POA,192
58
60
  duckdb_kernel/parser/elements/binary/Multiply.py,sha256=OctlfN71izFYxIpMo09Qwq-3BmQmSh6-PNKBljMsBrg,195
59
61
  duckdb_kernel/parser/elements/binary/Or.py,sha256=e1H_BuY7TQD7XHKGqJYLOebYQvrh1euWOUsXF0FT5dY,264
62
+ duckdb_kernel/parser/elements/binary/RightOuterJoin.py,sha256=bDxTEQ_dJZ-MUuGbU1YL69kPFR0Hdkc1fow3wxOxfAY,867
60
63
  duckdb_kernel/parser/elements/binary/Unequal.py,sha256=1hnC1RcPMxwKKv65OL5prunGgh9cRVDmzJutmtl7gtY,269
61
64
  duckdb_kernel/parser/elements/binary/Union.py,sha256=VYTj4M2PVEhWiDwjnyP8qpVVbGvIBSVshlEt-SZYCBY,739
62
- duckdb_kernel/parser/elements/binary/__init__.py,sha256=PtZgC0vOQONRx0FnFvzaxK9dYobdCykbQATP20djivA,983
65
+ duckdb_kernel/parser/elements/binary/__init__.py,sha256=BieXw51EBgIwUEK-hn4jBb1b4VKJT6sRzaxwOrSXw2A,1342
63
66
  duckdb_kernel/parser/elements/unary/Not.py,sha256=kG0a-dp3TNjPodUMPiQ6ihtsBrbvn1iWeIPCvtyAwdo,632
64
67
  duckdb_kernel/parser/elements/unary/Projection.py,sha256=CJ-MIf1-__1ewTjNZVy5hOz3Z18CWnCDNJBxUdpWXVQ,1112
65
68
  duckdb_kernel/parser/elements/unary/Rename.py,sha256=Zr2n9EJ3nA476lND0Djz2b6493nnsbSpJ9kkEgk5B_Y,1273
@@ -69,8 +72,13 @@ duckdb_kernel/parser/tokenizer/Token.py,sha256=gsCzgU_zLiA-yD0FWvd2qS9LQUXbivESY
69
72
  duckdb_kernel/parser/tokenizer/Tokenizer.py,sha256=PWGgS7gYgpULiKGDho842UbaXuqmwEkccixuF10oi5g,5081
70
73
  duckdb_kernel/parser/tokenizer/__init__.py,sha256=EOSmfc2RJwtB5cE1Hhj1JAra97tckxxS8-legybPy60,58
71
74
  duckdb_kernel/parser/util/RenamableColumn.py,sha256=LxJhFDMUv_OxYYDLwKn63QGpBRfs08jVvhuJTzRtc9c,704
72
- duckdb_kernel/parser/util/RenamableColumnList.py,sha256=GfhdGv4KYT64Z9YA9TCn-7hhcEcc3Gu3vI2zMZ52w-8,3015
75
+ duckdb_kernel/parser/util/RenamableColumnList.py,sha256=5oEDbtvl4YfHbkxu_Ny2pc0EYnhCZsf7EeoNQvftbrU,3281
73
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
74
82
  duckdb_kernel/util/ResultSetComparator.py,sha256=RZDIfjJyx8-eR-HIqQlEYgZd_V1ympbszpVRF4TlA7o,2262
75
83
  duckdb_kernel/util/SQL.py,sha256=-uRfa0IwEQueZNZ7vkBPczLuvm_87y4_nnMBx3FgqNk,643
76
84
  duckdb_kernel/util/TestError.py,sha256=iwlGHr9j6pFDa2cGxqGyvJ-exrFUtPJjVm_OhHi4n3g,97
@@ -80,7 +88,7 @@ duckdb_kernel/visualization/Drawer.py,sha256=D0LkiGMvuJ2v6cQSg_axLTGaM4VXAJEQJAy
80
88
  duckdb_kernel/visualization/RATreeDrawer.py,sha256=j-Vy1zpYMzwZ3CsphyfPW-J7ou9a9tM6aXXgAlQTgDI,2128
81
89
  duckdb_kernel/visualization/SchemaDrawer.py,sha256=9K-TUUmyeGdMYMTFQJ7evIU3p8p2KyMKeizUc7-y8co,3015
82
90
  duckdb_kernel/visualization/__init__.py,sha256=5eMJmxJ01XAXcgWDn3t70eSZF2PGaXdNo6GK-x-0H3s,78
83
- jupyter_duckdb-1.2.0.6.dist-info/METADATA,sha256=CpGdT2u47HAdtsRNJpQJeQvQPIuBVXVLfYyybbrxQnY,9115
84
- jupyter_duckdb-1.2.0.6.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
85
- jupyter_duckdb-1.2.0.6.dist-info/top_level.txt,sha256=KvRRPMnmkQNuhyBsXoPmwyt26LRDp0O-0HN6u0Dm5jA,14
86
- jupyter_duckdb-1.2.0.6.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,,