crate 0.29.0__py2.py3-none-any.whl → 0.30.1__py2.py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- crate/client/__init__.py +1 -1
- crate/client/_pep440.py +501 -0
- crate/client/connection.py +3 -3
- crate/client/sqlalchemy/__init__.py +24 -0
- crate/client/sqlalchemy/compat/__init__.py +0 -0
- crate/client/sqlalchemy/compat/api13.py +156 -0
- crate/client/sqlalchemy/compat/core10.py +264 -0
- crate/client/sqlalchemy/compat/core14.py +359 -0
- crate/client/sqlalchemy/compat/core20.py +447 -0
- crate/client/sqlalchemy/compiler.py +1 -481
- crate/client/sqlalchemy/dialect.py +32 -17
- crate/client/sqlalchemy/sa_version.py +4 -3
- crate/client/sqlalchemy/tests/__init__.py +17 -6
- crate/client/sqlalchemy/tests/array_test.py +6 -3
- crate/client/sqlalchemy/tests/bulk_test.py +7 -4
- crate/client/sqlalchemy/tests/compiler_test.py +10 -9
- crate/client/sqlalchemy/tests/connection_test.py +25 -11
- crate/client/sqlalchemy/tests/create_table_test.py +19 -16
- crate/client/sqlalchemy/tests/datetime_test.py +6 -3
- crate/client/sqlalchemy/tests/dialect_test.py +42 -13
- crate/client/sqlalchemy/tests/dict_test.py +17 -13
- crate/client/sqlalchemy/tests/function_test.py +6 -3
- crate/client/sqlalchemy/tests/insert_from_select_test.py +9 -6
- crate/client/sqlalchemy/tests/match_test.py +6 -3
- crate/client/sqlalchemy/tests/update_test.py +6 -3
- crate/client/sqlalchemy/tests/warnings_test.py +33 -0
- crate/client/test_connection.py +25 -0
- crate/client/tests.py +98 -119
- crate/testing/layer.py +1 -1
- crate/testing/settings.py +51 -0
- crate/testing/test_layer.py +188 -2
- crate/testing/tests.py +2 -38
- crate/testing/util.py +20 -0
- {crate-0.29.0.dist-info → crate-0.30.1.dist-info}/METADATA +10 -8
- crate-0.30.1.dist-info/RECORD +53 -0
- crate-0.29.0.dist-info/RECORD +0 -44
- /crate-0.29.0-py3.9-nspkg.pth → /crate-0.30.1-py3.9-nspkg.pth +0 -0
- {crate-0.29.0.dist-info → crate-0.30.1.dist-info}/LICENSE +0 -0
- {crate-0.29.0.dist-info → crate-0.30.1.dist-info}/NOTICE +0 -0
- {crate-0.29.0.dist-info → crate-0.30.1.dist-info}/WHEEL +0 -0
- {crate-0.29.0.dist-info → crate-0.30.1.dist-info}/entry_points.txt +0 -0
- {crate-0.29.0.dist-info → crate-0.30.1.dist-info}/namespace_packages.txt +0 -0
- {crate-0.29.0.dist-info → crate-0.30.1.dist-info}/top_level.txt +0 -0
crate/testing/test_layer.py
CHANGED
@@ -22,12 +22,15 @@ import json
|
|
22
22
|
import os
|
23
23
|
import tempfile
|
24
24
|
import urllib
|
25
|
-
from
|
25
|
+
from crate.client._pep440 import Version
|
26
26
|
from unittest import TestCase, mock
|
27
27
|
from io import BytesIO
|
28
28
|
|
29
|
+
import urllib3
|
30
|
+
|
29
31
|
import crate
|
30
32
|
from .layer import CrateLayer, prepend_http, http_url_from_host_port, wait_for_http_url
|
33
|
+
from .settings import crate_path
|
31
34
|
|
32
35
|
|
33
36
|
class LayerUtilsTest(TestCase):
|
@@ -72,7 +75,7 @@ class LayerUtilsTest(TestCase):
|
|
72
75
|
versions = json.loads(response.read().decode())
|
73
76
|
version = versions["crate_testing"]
|
74
77
|
|
75
|
-
self.assertGreaterEqual(
|
78
|
+
self.assertGreaterEqual(Version(version), Version("4.5.0"))
|
76
79
|
|
77
80
|
uri = "https://cdn.crate.io/downloads/releases/crate-{}.tar.gz".format(version)
|
78
81
|
layer = CrateLayer.from_uri(uri, name="crate-by-uri", http_port=42203)
|
@@ -102,3 +105,186 @@ class LayerUtilsTest(TestCase):
|
|
102
105
|
os.environ['JAVA_HOME'] = java_11_home
|
103
106
|
layer = CrateLayer('java-home-test', tmpdir, env={'JAVA_HOME': java_12_home})
|
104
107
|
self.assertEqual(layer.env['JAVA_HOME'], java_12_home)
|
108
|
+
|
109
|
+
|
110
|
+
class LayerTest(TestCase):
|
111
|
+
|
112
|
+
def test_basic(self):
|
113
|
+
"""
|
114
|
+
This layer starts and stops a ``Crate`` instance on a given host, port,
|
115
|
+
a given crate node name and, optionally, a given cluster name::
|
116
|
+
"""
|
117
|
+
|
118
|
+
port = 44219
|
119
|
+
transport_port = 44319
|
120
|
+
|
121
|
+
layer = CrateLayer('crate',
|
122
|
+
crate_home=crate_path(),
|
123
|
+
host='127.0.0.1',
|
124
|
+
port=port,
|
125
|
+
transport_port=transport_port,
|
126
|
+
cluster_name='my_cluster'
|
127
|
+
)
|
128
|
+
|
129
|
+
# The working directory is defined on layer instantiation.
|
130
|
+
# It is sometimes required to know it before starting the layer.
|
131
|
+
self.assertRegex(layer.wdPath(), r".+/crate_layer/crate")
|
132
|
+
|
133
|
+
# Start the layer.
|
134
|
+
layer.start()
|
135
|
+
|
136
|
+
# The urls of the crate servers to be instantiated can be obtained
|
137
|
+
# via `crate_servers`.
|
138
|
+
self.assertEqual(layer.crate_servers, ["http://127.0.0.1:44219"])
|
139
|
+
|
140
|
+
# Access the CrateDB instance on the HTTP interface.
|
141
|
+
|
142
|
+
http = urllib3.PoolManager()
|
143
|
+
|
144
|
+
stats_uri = "http://127.0.0.1:{0}/".format(port)
|
145
|
+
response = http.request('GET', stats_uri)
|
146
|
+
self.assertEqual(response.status, 200)
|
147
|
+
|
148
|
+
# The layer can be shutdown using its `stop()` method.
|
149
|
+
layer.stop()
|
150
|
+
|
151
|
+
def test_dynamic_http_port(self):
|
152
|
+
"""
|
153
|
+
It is also possible to define a port range instead of a static HTTP port for the layer.
|
154
|
+
|
155
|
+
Crate will start with the first available port in the given range and the test
|
156
|
+
layer obtains the chosen port from the startup logs of the Crate process.
|
157
|
+
Note, that this feature requires a logging configuration with at least loglevel
|
158
|
+
``INFO`` on ``http``.
|
159
|
+
"""
|
160
|
+
port = '44200-44299'
|
161
|
+
layer = CrateLayer('crate', crate_home=crate_path(), port=port)
|
162
|
+
layer.start()
|
163
|
+
self.assertRegex(layer.crate_servers[0], r"http://127.0.0.1:442\d\d")
|
164
|
+
layer.stop()
|
165
|
+
|
166
|
+
def test_default_settings(self):
|
167
|
+
"""
|
168
|
+
Starting a CrateDB layer leaving out optional parameters will apply the following
|
169
|
+
defaults.
|
170
|
+
|
171
|
+
The default http port is the first free port in the range of ``4200-4299``,
|
172
|
+
the default transport port is the first free port in the range of ``4300-4399``,
|
173
|
+
the host defaults to ``127.0.0.1``.
|
174
|
+
|
175
|
+
The command to call is ``bin/crate`` inside the ``crate_home`` path.
|
176
|
+
The default config file is ``config/crate.yml`` inside ``crate_home``.
|
177
|
+
The default cluster name will be auto generated using the HTTP port.
|
178
|
+
"""
|
179
|
+
layer = CrateLayer('crate_defaults', crate_home=crate_path())
|
180
|
+
layer.start()
|
181
|
+
self.assertEqual(layer.crate_servers[0], "http://127.0.0.1:4200")
|
182
|
+
layer.stop()
|
183
|
+
|
184
|
+
def test_additional_settings(self):
|
185
|
+
"""
|
186
|
+
The ``Crate`` layer can be started with additional settings as well.
|
187
|
+
Add a dictionary for keyword argument ``settings`` which contains your settings.
|
188
|
+
Those additional setting will override settings given as keyword argument.
|
189
|
+
|
190
|
+
The settings will be handed over to the ``Crate`` process with the ``-C`` flag.
|
191
|
+
So the setting ``threadpool.bulk.queue_size: 100`` becomes
|
192
|
+
the command line flag: ``-Cthreadpool.bulk.queue_size=100``::
|
193
|
+
"""
|
194
|
+
layer = CrateLayer(
|
195
|
+
'custom',
|
196
|
+
crate_path(),
|
197
|
+
port=44401,
|
198
|
+
settings={
|
199
|
+
"cluster.graceful_stop.min_availability": "none",
|
200
|
+
"http.port": 44402
|
201
|
+
}
|
202
|
+
)
|
203
|
+
layer.start()
|
204
|
+
self.assertEqual(layer.crate_servers[0], "http://127.0.0.1:44402")
|
205
|
+
self.assertIn("-Ccluster.graceful_stop.min_availability=none", layer.start_cmd)
|
206
|
+
layer.stop()
|
207
|
+
|
208
|
+
def test_verbosity(self):
|
209
|
+
"""
|
210
|
+
The test layer hides the standard output of Crate per default. To increase the
|
211
|
+
verbosity level the additional keyword argument ``verbose`` needs to be set
|
212
|
+
to ``True``::
|
213
|
+
"""
|
214
|
+
layer = CrateLayer('crate',
|
215
|
+
crate_home=crate_path(),
|
216
|
+
verbose=True)
|
217
|
+
layer.start()
|
218
|
+
self.assertTrue(layer.verbose)
|
219
|
+
layer.stop()
|
220
|
+
|
221
|
+
def test_environment_variables(self):
|
222
|
+
"""
|
223
|
+
It is possible to provide environment variables for the ``Crate`` testing
|
224
|
+
layer.
|
225
|
+
"""
|
226
|
+
layer = CrateLayer('crate',
|
227
|
+
crate_home=crate_path(),
|
228
|
+
env={"CRATE_HEAP_SIZE": "300m"})
|
229
|
+
|
230
|
+
layer.start()
|
231
|
+
|
232
|
+
sql_uri = layer.crate_servers[0] + "/_sql"
|
233
|
+
|
234
|
+
http = urllib3.PoolManager()
|
235
|
+
response = http.urlopen('POST', sql_uri,
|
236
|
+
body='{"stmt": "select heap[\'max\'] from sys.nodes"}')
|
237
|
+
json_response = json.loads(response.data.decode('utf-8'))
|
238
|
+
|
239
|
+
self.assertEqual(json_response["rows"][0][0], 314572800)
|
240
|
+
|
241
|
+
layer.stop()
|
242
|
+
|
243
|
+
def test_cluster(self):
|
244
|
+
"""
|
245
|
+
To start a cluster of ``Crate`` instances, give each instance the same
|
246
|
+
``cluster_name``. If you want to start instances on the same machine then
|
247
|
+
use value ``_local_`` for ``host`` and give every node different ports::
|
248
|
+
"""
|
249
|
+
cluster_layer1 = CrateLayer(
|
250
|
+
'crate1',
|
251
|
+
crate_path(),
|
252
|
+
host='_local_',
|
253
|
+
cluster_name='my_cluster',
|
254
|
+
)
|
255
|
+
cluster_layer2 = CrateLayer(
|
256
|
+
'crate2',
|
257
|
+
crate_path(),
|
258
|
+
host='_local_',
|
259
|
+
cluster_name='my_cluster',
|
260
|
+
settings={"discovery.initial_state_timeout": "10s"}
|
261
|
+
)
|
262
|
+
|
263
|
+
# If we start both layers, they will, after a small amount of time, find each other
|
264
|
+
# and form a cluster.
|
265
|
+
cluster_layer1.start()
|
266
|
+
cluster_layer2.start()
|
267
|
+
|
268
|
+
# We can verify that by checking the number of nodes a node knows about.
|
269
|
+
http = urllib3.PoolManager()
|
270
|
+
|
271
|
+
def num_cluster_nodes(crate_layer):
|
272
|
+
sql_uri = crate_layer.crate_servers[0] + "/_sql"
|
273
|
+
response = http.urlopen('POST', sql_uri, body='{"stmt":"select count(*) from sys.nodes"}')
|
274
|
+
json_response = json.loads(response.data.decode('utf-8'))
|
275
|
+
return json_response["rows"][0][0]
|
276
|
+
|
277
|
+
# We might have to wait a moment before the cluster is finally created.
|
278
|
+
num_nodes = num_cluster_nodes(cluster_layer1)
|
279
|
+
import time
|
280
|
+
retries = 0
|
281
|
+
while num_nodes < 2: # pragma: no cover
|
282
|
+
time.sleep(1)
|
283
|
+
num_nodes = num_cluster_nodes(cluster_layer1)
|
284
|
+
retries += 1
|
285
|
+
if retries == 30:
|
286
|
+
break
|
287
|
+
self.assertEqual(num_nodes, 2)
|
288
|
+
|
289
|
+
cluster_layer1.stop()
|
290
|
+
cluster_layer2.stop()
|
crate/testing/tests.py
CHANGED
@@ -20,48 +20,12 @@
|
|
20
20
|
# with Crate these terms will supersede the license and you may use the
|
21
21
|
# software solely pursuant to the terms of the relevant commercial agreement.
|
22
22
|
|
23
|
-
import os
|
24
23
|
import unittest
|
25
|
-
import
|
26
|
-
import tempfile
|
27
|
-
from .test_layer import LayerUtilsTest
|
28
|
-
|
29
|
-
|
30
|
-
def docs_path(*parts):
|
31
|
-
return os.path.abspath(
|
32
|
-
os.path.join(
|
33
|
-
os.path.dirname(os.path.dirname(__file__)), *parts
|
34
|
-
)
|
35
|
-
)
|
36
|
-
|
37
|
-
|
38
|
-
def project_root(*parts):
|
39
|
-
return os.path.abspath(
|
40
|
-
os.path.join(docs_path("..", ".."), *parts)
|
41
|
-
)
|
42
|
-
|
43
|
-
|
44
|
-
def crate_path(*parts):
|
45
|
-
return os.path.abspath(
|
46
|
-
project_root("parts", "crate", *parts)
|
47
|
-
)
|
48
|
-
|
49
|
-
|
50
|
-
def setUp(test):
|
51
|
-
test.globs['project_root'] = project_root
|
52
|
-
test.globs['crate_path'] = crate_path
|
53
|
-
test.globs['tempfile'] = tempfile
|
54
|
-
test.globs['os'] = os
|
24
|
+
from .test_layer import LayerUtilsTest, LayerTest
|
55
25
|
|
56
26
|
|
57
27
|
def test_suite():
|
58
28
|
suite = unittest.TestSuite()
|
59
|
-
s = doctest.DocFileSuite(
|
60
|
-
'doctests/layer.txt',
|
61
|
-
setUp=setUp,
|
62
|
-
optionflags=doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS,
|
63
|
-
encoding='utf-8'
|
64
|
-
)
|
65
|
-
suite.addTest(s)
|
66
29
|
suite.addTest(unittest.makeSuite(LayerUtilsTest))
|
30
|
+
suite.addTest(unittest.makeSuite(LayerTest))
|
67
31
|
return suite
|
crate/testing/util.py
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
class ExtraAssertions:
|
2
|
+
"""
|
3
|
+
Additional assert methods for unittest.
|
4
|
+
|
5
|
+
- https://github.com/python/cpython/issues/71339
|
6
|
+
- https://bugs.python.org/issue14819
|
7
|
+
- https://bugs.python.org/file43047/extra_assertions.patch
|
8
|
+
"""
|
9
|
+
|
10
|
+
def assertIsSubclass(self, cls, superclass, msg=None):
|
11
|
+
try:
|
12
|
+
r = issubclass(cls, superclass)
|
13
|
+
except TypeError:
|
14
|
+
if not isinstance(cls, type):
|
15
|
+
self.fail(self._formatMessage(msg,
|
16
|
+
'%r is not a class' % (cls,)))
|
17
|
+
raise
|
18
|
+
if not r:
|
19
|
+
self.fail(self._formatMessage(msg,
|
20
|
+
'%r is not a subclass of %r' % (cls, superclass)))
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: crate
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.30.1
|
4
4
|
Summary: CrateDB Python Client
|
5
5
|
Home-page: https://github.com/crate/crate-python
|
6
6
|
Author: Crate.io
|
@@ -28,20 +28,22 @@ License-File: LICENSE
|
|
28
28
|
License-File: NOTICE
|
29
29
|
Requires-Dist: urllib3 (<2,>=1.9)
|
30
30
|
Provides-Extra: doc
|
31
|
-
Requires-Dist: sphinx (<
|
32
|
-
Requires-Dist: crate-docs-theme ; extra == 'doc'
|
31
|
+
Requires-Dist: sphinx (<7,>=3.5) ; extra == 'doc'
|
32
|
+
Requires-Dist: crate-docs-theme (>=0.26.5) ; extra == 'doc'
|
33
33
|
Provides-Extra: sqlalchemy
|
34
|
-
Requires-Dist: sqlalchemy (<1
|
35
|
-
Requires-Dist: geojson (<
|
34
|
+
Requires-Dist: sqlalchemy (<2.1,>=1.0) ; extra == 'sqlalchemy'
|
35
|
+
Requires-Dist: geojson (<4,>=2.5.0) ; extra == 'sqlalchemy'
|
36
36
|
Requires-Dist: backports.zoneinfo (<1) ; (python_version < "3.9") and extra == 'sqlalchemy'
|
37
37
|
Provides-Extra: test
|
38
|
-
Requires-Dist: tox (<
|
39
|
-
Requires-Dist: zope.testing (<
|
38
|
+
Requires-Dist: tox (<5,>=3) ; extra == 'test'
|
39
|
+
Requires-Dist: zope.testing (<6,>=4) ; extra == 'test'
|
40
40
|
Requires-Dist: zope.testrunner (<6,>=5) ; extra == 'test'
|
41
41
|
Requires-Dist: zc.customdoctests (<2,>=1.0.1) ; extra == 'test'
|
42
42
|
Requires-Dist: createcoverage (<2,>=1) ; extra == 'test'
|
43
43
|
Requires-Dist: stopit (<2,>=1.1.2) ; extra == 'test'
|
44
|
-
Requires-Dist: flake8 (<
|
44
|
+
Requires-Dist: flake8 (<7,>=4) ; extra == 'test'
|
45
|
+
Requires-Dist: pytz ; extra == 'test'
|
46
|
+
Requires-Dist: setuptools (<57) ; extra == 'test'
|
45
47
|
|
46
48
|
=====================
|
47
49
|
CrateDB Python Client
|
@@ -0,0 +1,53 @@
|
|
1
|
+
crate-0.30.1-py3.9-nspkg.pth,sha256=nqN0-lx5dVfXKgm9N7WRgI0lrvtTYi2PUOtTjfAMtjY,534
|
2
|
+
crate/client/__init__.py,sha256=aMAGsfGO3MHvq3jgbmIS_lW8HceoBkyDx2-yuzPwsiQ,1305
|
3
|
+
crate/client/_pep440.py,sha256=5KfZQ9kC9qfVK2YhRaMCuTETTbu-d3bMUOuC4RgHM38,14585
|
4
|
+
crate/client/blob.py,sha256=plTwGEULg5s1VdKIMW6a0Zljdkng7xw0WXkXyiwNaSU,3496
|
5
|
+
crate/client/connection.py,sha256=evWWrPFzI0lg2gPVz3Oy8PIo5AwfR-NhCSHowlpnYlw,8297
|
6
|
+
crate/client/converter.py,sha256=9_-FBp8l9LwCfBsoWO0YOW0ASkwJ-le-YJFfJMLKCew,4301
|
7
|
+
crate/client/cursor.py,sha256=qnrNM9QDQgo9RFVGU7HPmCxK15EFUWiOxW3BNlZcuNw,10758
|
8
|
+
crate/client/exceptions.py,sha256=RINQtVF9jD5f_tcKpZ8A1haztKilf9HUwjESYx-W1Bk,2242
|
9
|
+
crate/client/http.py,sha256=LFlfGra1K3LrEC0p_qK2e-ma8VdfQjaekcioL6PWdeo,20900
|
10
|
+
crate/client/test_connection.py,sha256=BUh6FmpH4tPNWk-HuDxx0Pgt5SCoPWddmdoRjYiCRRE,2808
|
11
|
+
crate/client/test_cursor.py,sha256=Q9Npq55zTY4g51kf3P7DnmTsYdv0iRwqDptKOj9ffxA,12858
|
12
|
+
crate/client/test_http.py,sha256=lm9hUnHjFFE4e188rcGxKF8ooZ-IuYlfWR8ciMQj_0U,21783
|
13
|
+
crate/client/test_util.py,sha256=xR9bdoHZplNBqIPnXSkHPNIo6bzUeKLnyqxcCmy-4Jw,1639
|
14
|
+
crate/client/tests.py,sha256=UBRgBRskvPNHfiyXF1PywVkjfZUdtFzW2Wm-nx-RrPE,12986
|
15
|
+
crate/client/sqlalchemy/__init__.py,sha256=RKwu3filTgFGaw-X200qaQa89gRutnFaG-vlxjA6elU,1965
|
16
|
+
crate/client/sqlalchemy/compiler.py,sha256=DL6exuoe-liZR4BqbAyYfi2PzlXnl3ccf1gfFJEh8Rc,7837
|
17
|
+
crate/client/sqlalchemy/dialect.py,sha256=Kz83VQNJNYdqxlLL4Sg4H0n7jN_Kg17-L-fSxb3SMgA,12940
|
18
|
+
crate/client/sqlalchemy/sa_version.py,sha256=exLPKCalcinLZ9geiqPX_pFWOoxnDkkxTy5AOabf9zw,1181
|
19
|
+
crate/client/sqlalchemy/types.py,sha256=8aXPln79WQ5QNqDJZL2TSvG31XO0pWo9EqF2XOzzgYU,8257
|
20
|
+
crate/client/sqlalchemy/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
+
crate/client/sqlalchemy/compat/api13.py,sha256=koqqq48UmAmrjXOyc5lV7gaVEl8xmi5xHUqTBVE5f5s,5687
|
22
|
+
crate/client/sqlalchemy/compat/core10.py,sha256=7JQZte_PXqK20znpLFJZJR_FbooJ6RJFjPTG5Z6uYWY,8641
|
23
|
+
crate/client/sqlalchemy/compat/core14.py,sha256=9cAbzR3jexN7x-iFTmr-7OjlfL7fPX4w6tGG-tZGOR4,11611
|
24
|
+
crate/client/sqlalchemy/compat/core20.py,sha256=GVHzALhSX4WV3PQvltT_RnsGtab5lR92wcs9yRZgbMU,15150
|
25
|
+
crate/client/sqlalchemy/predicates/__init__.py,sha256=HT7tHF7PxX71G8m91lqpH732iVQZtO8_NPZUIsllcys,3622
|
26
|
+
crate/client/sqlalchemy/tests/__init__.py,sha256=JhFEQQYu0QGVmUAWzhD2tTCKDcpgGn3GvCTF_O7WwL8,1933
|
27
|
+
crate/client/sqlalchemy/tests/array_test.py,sha256=9qGFk2QbtJQYNHALb0P3wOndJosUoSfVVDzBOGs07w4,4052
|
28
|
+
crate/client/sqlalchemy/tests/bulk_test.py,sha256=HBt0oCcJSjK79LEKb0vLNnKrRwmia-7e-3DuNyi8fNY,2793
|
29
|
+
crate/client/sqlalchemy/tests/compiler_test.py,sha256=M62a0h23jDjfO5Ohkw4pv_8eahKabC2hT-pQzp6DuYk,4092
|
30
|
+
crate/client/sqlalchemy/tests/connection_test.py,sha256=LW2hIlEbhQWopZZ-Zp1nejRxEfMmaGwFbxwfQFQ8sBk,4596
|
31
|
+
crate/client/sqlalchemy/tests/create_table_test.py,sha256=nvVphw-shsf8JMUopQk66-jJN89AVxYSIiAPV43KmtI,9176
|
32
|
+
crate/client/sqlalchemy/tests/datetime_test.py,sha256=E84Xd-g7kIshKdGQ6J2RMvuao-Od0iCpz11JLfyA5s8,3170
|
33
|
+
crate/client/sqlalchemy/tests/dialect_test.py,sha256=ugTljMQZ5Qkloxop3G5ptkCuBLSR_2h_2UZaiX8Dl2c,6275
|
34
|
+
crate/client/sqlalchemy/tests/dict_test.py,sha256=SJPBUs3-MPZ3XxYPF1KGz7bxbWKCArZz0dvtqhysuWk,16600
|
35
|
+
crate/client/sqlalchemy/tests/function_test.py,sha256=XQrPW8WKPI_aLgZo9kpfO2Wjx6dWp3ureqtgkghl2xk,1824
|
36
|
+
crate/client/sqlalchemy/tests/insert_from_select_test.py,sha256=UeSk-34qh_mrZNr4q1uriFI9UxPieFPJ2eKjNhHkEPc,3256
|
37
|
+
crate/client/sqlalchemy/tests/match_test.py,sha256=DpGOl5xhDdhgqyjmmPEQLUp21SwruwbLJ6wYptZXP5o,5193
|
38
|
+
crate/client/sqlalchemy/tests/update_test.py,sha256=HLLTnw3kQxtTkP6IDhnuIuaHhiWYYPwG8c8S9sD82k8,4155
|
39
|
+
crate/client/sqlalchemy/tests/warnings_test.py,sha256=KazBLNiWtNCGKL6jI5fDhVL6AAaAcUMestY49NiRPRg,1302
|
40
|
+
crate/testing/__init__.py,sha256=UnxmjVrk-eNORsitiM48W0pB6yfsaErOak8RYh_ELt8,10
|
41
|
+
crate/testing/layer.py,sha256=rIIcliZl_Elx1yQFKP-4IFcwb5jLIBKlJf8puW6oOWs,13378
|
42
|
+
crate/testing/settings.py,sha256=YTqod79NO4Lv_agPgMLGlB_fMe6baAhLXFKBZnuytBk,1652
|
43
|
+
crate/testing/test_layer.py,sha256=9x3FiyJcsB9oSY5vVzMaL_DvwJt91a_hquXS7gbDYdQ,11525
|
44
|
+
crate/testing/tests.py,sha256=seACn7a4HbQIGxJmKXiUDkuE9ossO7UsSMTwMYimOA0,1287
|
45
|
+
crate/testing/util.py,sha256=qtc72rKfvfTA9VMKjE2JSukffobd7ffCcddoTiAdO6A,690
|
46
|
+
crate-0.30.1.dist-info/LICENSE,sha256=1QGh4tR_JmDKn33ztoDv2UkER0Q4Zh1kC5J3vMWwRso,12854
|
47
|
+
crate-0.30.1.dist-info/METADATA,sha256=_BAElXFOJzZY9u7hMcU-PEHoUCxuocEDwTjYAYw2XIU,4526
|
48
|
+
crate-0.30.1.dist-info/NOTICE,sha256=vwbBS8sykCOndA1kjuu8dUInljH27kk3lcPBzQ2SMns,1159
|
49
|
+
crate-0.30.1.dist-info/WHEEL,sha256=bb2Ot9scclHKMOLDEHY6B2sicWOgugjFKaJsT7vwMQo,110
|
50
|
+
crate-0.30.1.dist-info/entry_points.txt,sha256=DN4zBP45-6hmDwuOAR9LFoxzrg-A9MqPh1Hn6UXEFPQ,68
|
51
|
+
crate-0.30.1.dist-info/namespace_packages.txt,sha256=2wP2HlpxdhgTLMl9ipi168xkm6FMq9_2bf0xGGxF_OI,6
|
52
|
+
crate-0.30.1.dist-info/top_level.txt,sha256=2wP2HlpxdhgTLMl9ipi168xkm6FMq9_2bf0xGGxF_OI,6
|
53
|
+
crate-0.30.1.dist-info/RECORD,,
|
crate-0.29.0.dist-info/RECORD
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
crate-0.29.0-py3.9-nspkg.pth,sha256=nqN0-lx5dVfXKgm9N7WRgI0lrvtTYi2PUOtTjfAMtjY,534
|
2
|
-
crate/client/__init__.py,sha256=1RIji7qpUc70hiVboUbUBneANt_rvD0arD9S9__nOhY,1305
|
3
|
-
crate/client/blob.py,sha256=plTwGEULg5s1VdKIMW6a0Zljdkng7xw0WXkXyiwNaSU,3496
|
4
|
-
crate/client/connection.py,sha256=vuQb1utU2iMto1S2rYweF47HNO37QrRYP9fGEP8Bars,8324
|
5
|
-
crate/client/converter.py,sha256=9_-FBp8l9LwCfBsoWO0YOW0ASkwJ-le-YJFfJMLKCew,4301
|
6
|
-
crate/client/cursor.py,sha256=qnrNM9QDQgo9RFVGU7HPmCxK15EFUWiOxW3BNlZcuNw,10758
|
7
|
-
crate/client/exceptions.py,sha256=RINQtVF9jD5f_tcKpZ8A1haztKilf9HUwjESYx-W1Bk,2242
|
8
|
-
crate/client/http.py,sha256=LFlfGra1K3LrEC0p_qK2e-ma8VdfQjaekcioL6PWdeo,20900
|
9
|
-
crate/client/test_connection.py,sha256=1e9E7o0MIgAUqJVwR2muNsVv9mj2WgKFeyb00j8prq0,1930
|
10
|
-
crate/client/test_cursor.py,sha256=Q9Npq55zTY4g51kf3P7DnmTsYdv0iRwqDptKOj9ffxA,12858
|
11
|
-
crate/client/test_http.py,sha256=lm9hUnHjFFE4e188rcGxKF8ooZ-IuYlfWR8ciMQj_0U,21783
|
12
|
-
crate/client/test_util.py,sha256=xR9bdoHZplNBqIPnXSkHPNIo6bzUeKLnyqxcCmy-4Jw,1639
|
13
|
-
crate/client/tests.py,sha256=HfeeUu-dFFrZ8OThKLHFgCXDNqOYFVoT5uYAS9feKZg,14030
|
14
|
-
crate/client/sqlalchemy/__init__.py,sha256=qiHELEgWc43AaqQS3xZ_3KFYVbwgO61PuVlCg-50N4g,1090
|
15
|
-
crate/client/sqlalchemy/compiler.py,sha256=KnCbG6izEd8EwXlj2fLH8BtGAVfEetmlQG7X_o5SrIg,23405
|
16
|
-
crate/client/sqlalchemy/dialect.py,sha256=X9rEKzmxn26YwTiqpgrLN9KWtQqIr_T7v12AF3vaXgU,12420
|
17
|
-
crate/client/sqlalchemy/sa_version.py,sha256=PcAU7KNHhdkqicyAmqPHrU-A063sCstQH3yy0u7E2Wo,1151
|
18
|
-
crate/client/sqlalchemy/types.py,sha256=8aXPln79WQ5QNqDJZL2TSvG31XO0pWo9EqF2XOzzgYU,8257
|
19
|
-
crate/client/sqlalchemy/predicates/__init__.py,sha256=HT7tHF7PxX71G8m91lqpH732iVQZtO8_NPZUIsllcys,3622
|
20
|
-
crate/client/sqlalchemy/tests/__init__.py,sha256=nOT7g6ykr_HErjXMoLHOG1q2_NGUMshQ8c09_-X8HeA,1386
|
21
|
-
crate/client/sqlalchemy/tests/array_test.py,sha256=qoX4Rfq3FTqmmE0wliobRxBTF36XFxLS6j3kjyRz6Fs,3975
|
22
|
-
crate/client/sqlalchemy/tests/bulk_test.py,sha256=tKeWyR80dMAO0TRUz7aZ0T1LvSYeu1OlCXvCEVJl_5Y,2708
|
23
|
-
crate/client/sqlalchemy/tests/compiler_test.py,sha256=FsU8w0lDwKhmHAFsUO_c0OHbgUFM9wGKteR4DxBHIUA,3936
|
24
|
-
crate/client/sqlalchemy/tests/connection_test.py,sha256=bCR4NQhBq5ERtYxJOgl_U7ri3qejInZ16TPdmUoIjzA,4197
|
25
|
-
crate/client/sqlalchemy/tests/create_table_test.py,sha256=Tz41NBpCNFPHhvLYblLFd2Gx1Lcf4cG25vPaYQYL7L4,8897
|
26
|
-
crate/client/sqlalchemy/tests/datetime_test.py,sha256=N8oqdsWG2s875wNbtCctgGK78QbBpiqHdsIczccTHt0,3093
|
27
|
-
crate/client/sqlalchemy/tests/dialect_test.py,sha256=C4EbFXBLQsoc4SSzyMFoXRnwumgm5FlgVH9FY10dQL0,4979
|
28
|
-
crate/client/sqlalchemy/tests/dict_test.py,sha256=YyjvOQtvaTJhLcOT9Tv6yNUCYZlLPjVmerwy0n5UrFU,16565
|
29
|
-
crate/client/sqlalchemy/tests/function_test.py,sha256=nVcVroqY-NDvjidwvC_UQfR9k3mfypRNqTJJ0kZ-FVM,1770
|
30
|
-
crate/client/sqlalchemy/tests/insert_from_select_test.py,sha256=HlqtmhyRfGWVaRw07byr7dj6Djxor-YQYaeCe79ffc0,3155
|
31
|
-
crate/client/sqlalchemy/tests/match_test.py,sha256=JF9_VAYDCAvgQCeL0Z5f2mybL74ud4Lrn6zNZ0Yb9k0,5116
|
32
|
-
crate/client/sqlalchemy/tests/update_test.py,sha256=hPcfy7GtB58yyI_OfOLOOLbxPw3LZittAjDRdq33Xkw,4078
|
33
|
-
crate/testing/__init__.py,sha256=UnxmjVrk-eNORsitiM48W0pB6yfsaErOak8RYh_ELt8,10
|
34
|
-
crate/testing/layer.py,sha256=Vv9TNpHYGseYizLpoVzrVzH6x8V5qAiAD5WmmNhxOPA,13378
|
35
|
-
crate/testing/test_layer.py,sha256=8lw9kYx3ZmDA7V14pUhJpQirRPsNX9SfewAGJPzckGw,4668
|
36
|
-
crate/testing/tests.py,sha256=JzEa5An4GBISVx_q_Fpj6b7XsYJ3estFwtA1peT9SRk,2016
|
37
|
-
crate-0.29.0.dist-info/LICENSE,sha256=1QGh4tR_JmDKn33ztoDv2UkER0Q4Zh1kC5J3vMWwRso,12854
|
38
|
-
crate-0.29.0.dist-info/METADATA,sha256=KsV00FTRoyhifMOOKz5VJzyON5yfvzip6IoU3ImhRCc,4427
|
39
|
-
crate-0.29.0.dist-info/NOTICE,sha256=vwbBS8sykCOndA1kjuu8dUInljH27kk3lcPBzQ2SMns,1159
|
40
|
-
crate-0.29.0.dist-info/WHEEL,sha256=bb2Ot9scclHKMOLDEHY6B2sicWOgugjFKaJsT7vwMQo,110
|
41
|
-
crate-0.29.0.dist-info/entry_points.txt,sha256=DN4zBP45-6hmDwuOAR9LFoxzrg-A9MqPh1Hn6UXEFPQ,68
|
42
|
-
crate-0.29.0.dist-info/namespace_packages.txt,sha256=2wP2HlpxdhgTLMl9ipi168xkm6FMq9_2bf0xGGxF_OI,6
|
43
|
-
crate-0.29.0.dist-info/top_level.txt,sha256=2wP2HlpxdhgTLMl9ipi168xkm6FMq9_2bf0xGGxF_OI,6
|
44
|
-
crate-0.29.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|