singlestoredb 1.14.2__py3-none-any.whl → 1.15.1__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.

Potentially problematic release.


This version of singlestoredb might be problematic. Click here for more details.

Files changed (54) hide show
  1. singlestoredb/__init__.py +2 -2
  2. singlestoredb/ai/chat.py +14 -0
  3. singlestoredb/apps/_python_udfs.py +3 -3
  4. singlestoredb/config.py +11 -0
  5. singlestoredb/docstring/__init__.py +33 -0
  6. singlestoredb/docstring/attrdoc.py +126 -0
  7. singlestoredb/docstring/common.py +230 -0
  8. singlestoredb/docstring/epydoc.py +267 -0
  9. singlestoredb/docstring/google.py +412 -0
  10. singlestoredb/docstring/numpydoc.py +562 -0
  11. singlestoredb/docstring/parser.py +100 -0
  12. singlestoredb/docstring/py.typed +1 -0
  13. singlestoredb/docstring/rest.py +256 -0
  14. singlestoredb/docstring/tests/__init__.py +1 -0
  15. singlestoredb/docstring/tests/_pydoctor.py +21 -0
  16. singlestoredb/docstring/tests/test_epydoc.py +729 -0
  17. singlestoredb/docstring/tests/test_google.py +1007 -0
  18. singlestoredb/docstring/tests/test_numpydoc.py +1100 -0
  19. singlestoredb/docstring/tests/test_parse_from_object.py +109 -0
  20. singlestoredb/docstring/tests/test_parser.py +248 -0
  21. singlestoredb/docstring/tests/test_rest.py +547 -0
  22. singlestoredb/docstring/tests/test_util.py +70 -0
  23. singlestoredb/docstring/util.py +141 -0
  24. singlestoredb/functions/decorator.py +51 -31
  25. singlestoredb/functions/ext/asgi.py +381 -35
  26. singlestoredb/functions/ext/timer.py +98 -0
  27. singlestoredb/functions/signature.py +374 -241
  28. singlestoredb/functions/typing/numpy.py +20 -0
  29. singlestoredb/functions/typing/pandas.py +2 -0
  30. singlestoredb/functions/typing/polars.py +2 -0
  31. singlestoredb/functions/typing/pyarrow.py +2 -0
  32. singlestoredb/fusion/handlers/files.py +4 -4
  33. singlestoredb/fusion/handlers/models.py +1 -1
  34. singlestoredb/fusion/handlers/stage.py +4 -4
  35. singlestoredb/magics/run_personal.py +82 -1
  36. singlestoredb/magics/run_shared.py +82 -1
  37. singlestoredb/management/__init__.py +1 -0
  38. singlestoredb/management/cluster.py +1 -1
  39. singlestoredb/management/manager.py +15 -5
  40. singlestoredb/management/region.py +104 -2
  41. singlestoredb/management/workspace.py +174 -3
  42. singlestoredb/tests/ext_funcs/__init__.py +133 -55
  43. singlestoredb/tests/test.sql +22 -0
  44. singlestoredb/tests/test_connection.py +18 -8
  45. singlestoredb/tests/test_ext_func.py +90 -0
  46. singlestoredb/tests/test_management.py +190 -0
  47. singlestoredb/tests/test_udf.py +43 -15
  48. {singlestoredb-1.14.2.dist-info → singlestoredb-1.15.1.dist-info}/METADATA +1 -1
  49. {singlestoredb-1.14.2.dist-info → singlestoredb-1.15.1.dist-info}/RECORD +54 -30
  50. /singlestoredb/functions/{typing.py → typing/__init__.py} +0 -0
  51. {singlestoredb-1.14.2.dist-info → singlestoredb-1.15.1.dist-info}/LICENSE +0 -0
  52. {singlestoredb-1.14.2.dist-info → singlestoredb-1.15.1.dist-info}/WHEEL +0 -0
  53. {singlestoredb-1.14.2.dist-info → singlestoredb-1.15.1.dist-info}/entry_points.txt +0 -0
  54. {singlestoredb-1.14.2.dist-info → singlestoredb-1.15.1.dist-info}/top_level.txt +0 -0
@@ -13,6 +13,8 @@ import pytest
13
13
  import singlestoredb as s2
14
14
  from singlestoredb.management.job import Status
15
15
  from singlestoredb.management.job import TargetType
16
+ from singlestoredb.management.region import Region
17
+ from singlestoredb.management.utils import NamedList
16
18
 
17
19
 
18
20
  TEST_DIR = pathlib.Path(os.path.dirname(__file__))
@@ -23,6 +25,11 @@ def clean_name(s):
23
25
  return re.sub(r'[^\w]', r'-', s).replace('_', '-').lower()
24
26
 
25
27
 
28
+ def shared_database_name(s):
29
+ """Return a shared database name. Cannot contain special characters except -"""
30
+ return re.sub(r'[^\w]', '', s).replace('-', '_').lower()
31
+
32
+
26
33
  @pytest.mark.management
27
34
  class TestCluster(unittest.TestCase):
28
35
 
@@ -363,6 +370,115 @@ class TestWorkspace(unittest.TestCase):
363
370
  assert 'endpoint' in cm.exception.msg, cm.exception.msg
364
371
 
365
372
 
373
+ @pytest.mark.management
374
+ class TestStarterWorkspace(unittest.TestCase):
375
+
376
+ manager = None
377
+ starter_workspace = None
378
+
379
+ @classmethod
380
+ def setUpClass(cls):
381
+ cls.manager = s2.manage_workspaces()
382
+
383
+ shared_tier_regions: NamedList[Region] = [
384
+ x for x in cls.manager.shared_tier_regions if 'US' in x.name
385
+ ]
386
+ cls.starter_username = 'starter_user'
387
+ cls.password = secrets.token_urlsafe(20)
388
+
389
+ name = shared_database_name(secrets.token_urlsafe(20)[:20])
390
+
391
+ cls.database_name = f'starter_db_{name}'
392
+
393
+ shared_tier_region: Region = random.choice(shared_tier_regions)
394
+
395
+ if not shared_tier_region:
396
+ raise ValueError('No shared tier regions found')
397
+
398
+ cls.starter_workspace = cls.manager.create_starter_workspace(
399
+ f'starter-ws-test-{name}',
400
+ database_name=cls.database_name,
401
+ provider=shared_tier_region.provider,
402
+ region_name=shared_tier_region.region_name,
403
+ )
404
+
405
+ cls.starter_workspace.create_user(
406
+ username=cls.starter_username,
407
+ password=cls.password,
408
+ )
409
+
410
+ @classmethod
411
+ def tearDownClass(cls):
412
+ if cls.starter_workspace is not None:
413
+ cls.starter_workspace.terminate()
414
+ cls.manager = None
415
+ cls.password = None
416
+
417
+ def test_str(self):
418
+ assert self.starter_workspace.name in str(self.starter_workspace.name)
419
+
420
+ def test_repr(self):
421
+ assert repr(self.starter_workspace) == str(self.starter_workspace)
422
+
423
+ def test_get_starter_workspace(self):
424
+ workspace = self.manager.get_starter_workspace(self.starter_workspace.id)
425
+ assert workspace.id == self.starter_workspace.id, workspace.id
426
+
427
+ with self.assertRaises(s2.ManagementError) as cm:
428
+ workspace = self.manager.get_starter_workspace('bad id')
429
+
430
+ assert 'UUID' in cm.exception.msg, cm.exception.msg
431
+
432
+ def test_starter_workspaces(self):
433
+ workspaces = self.manager.starter_workspaces
434
+ ids = [x.id for x in workspaces]
435
+ names = [x.name for x in workspaces]
436
+ assert self.starter_workspace.id in ids
437
+ assert self.starter_workspace.name in names
438
+
439
+ objs = {}
440
+ for item in workspaces:
441
+ objs[item.id] = item
442
+ objs[item.name] = item
443
+
444
+ name = random.choice(names)
445
+ assert workspaces[name] == objs[name]
446
+ id = random.choice(ids)
447
+ assert workspaces[id] == objs[id]
448
+
449
+ def test_no_manager(self):
450
+ workspace = self.manager.get_starter_workspace(self.starter_workspace.id)
451
+ workspace._manager = None
452
+
453
+ with self.assertRaises(s2.ManagementError) as cm:
454
+ workspace.refresh()
455
+
456
+ assert 'No workspace manager' in cm.exception.msg, cm.exception.msg
457
+
458
+ with self.assertRaises(s2.ManagementError) as cm:
459
+ workspace.terminate()
460
+
461
+ assert 'No workspace manager' in cm.exception.msg, cm.exception.msg
462
+
463
+ def test_connect(self):
464
+ with self.starter_workspace.connect(
465
+ user=self.starter_username,
466
+ password=self.password,
467
+ ) as conn:
468
+ with conn.cursor() as cur:
469
+ cur.execute('show databases')
470
+ assert self.database_name in [x[0] for x in list(cur)]
471
+
472
+ # Test missing endpoint
473
+ workspace = self.manager.get_starter_workspace(self.starter_workspace.id)
474
+ workspace.endpoint = None
475
+
476
+ with self.assertRaises(s2.ManagementError) as cm:
477
+ workspace.connect(user=self.starter_username, password=self.password)
478
+
479
+ assert 'endpoint' in cm.exception.msg, cm.exception.msg
480
+
481
+
366
482
  @pytest.mark.management
367
483
  class TestStage(unittest.TestCase):
368
484
 
@@ -1372,3 +1488,77 @@ class TestFileSpaces(unittest.TestCase):
1372
1488
 
1373
1489
  # Cleanup
1374
1490
  space.remove('obj_test_2.ipynb')
1491
+
1492
+
1493
+ @pytest.mark.management
1494
+ class TestRegions(unittest.TestCase):
1495
+ """Test cases for region management."""
1496
+
1497
+ manager = None
1498
+
1499
+ @classmethod
1500
+ def setUpClass(cls):
1501
+ """Set up the test environment."""
1502
+ cls.manager = s2.manage_regions()
1503
+
1504
+ @classmethod
1505
+ def tearDownClass(cls):
1506
+ """Clean up the test environment."""
1507
+ cls.manager = None
1508
+
1509
+ def test_list_regions(self):
1510
+ """Test listing all regions."""
1511
+ regions = self.manager.list_regions()
1512
+
1513
+ # Verify we get a NamedList
1514
+ assert isinstance(regions, NamedList)
1515
+
1516
+ # Verify we have at least one region
1517
+ assert len(regions) > 0
1518
+
1519
+ # Verify region properties
1520
+ region = regions[0]
1521
+ assert isinstance(region, Region)
1522
+ assert hasattr(region, 'id')
1523
+ assert hasattr(region, 'name')
1524
+ assert hasattr(region, 'provider')
1525
+
1526
+ # Verify provider values
1527
+ providers = {x.provider for x in regions}
1528
+ assert 'Azure' in providers or 'GCP' in providers or 'AWS' in providers
1529
+
1530
+ def test_list_shared_tier_regions(self):
1531
+ """Test listing shared tier regions."""
1532
+ regions = self.manager.list_shared_tier_regions()
1533
+
1534
+ # Verify we get a NamedList
1535
+ assert isinstance(regions, NamedList)
1536
+
1537
+ # Verify region properties if we have any shared tier regions
1538
+ if regions:
1539
+ region = regions[0]
1540
+ assert isinstance(region, Region)
1541
+ assert hasattr(region, 'name')
1542
+ assert hasattr(region, 'provider')
1543
+ assert hasattr(region, 'region_name')
1544
+
1545
+ # Verify provider values
1546
+ providers = {x.provider for x in regions}
1547
+ assert any(p in providers for p in ['Azure', 'GCP', 'AWS'])
1548
+
1549
+ def test_str_repr(self):
1550
+ """Test string representation of regions."""
1551
+ regions = self.manager.list_regions()
1552
+ if not regions:
1553
+ self.skipTest('No regions available for testing')
1554
+
1555
+ region = regions[0]
1556
+
1557
+ # Test __str__
1558
+ s = str(region)
1559
+ assert region.id in s
1560
+ assert region.name in s
1561
+ assert region.provider in s
1562
+
1563
+ # Test __repr__
1564
+ assert repr(region) == str(region)
@@ -36,6 +36,32 @@ def to_sql(x):
36
36
 
37
37
  class TestUDF(unittest.TestCase):
38
38
 
39
+ def test_invalid_signature(self):
40
+
41
+ def foo(x: np.ndarray, y: np.ndarray) -> str: ...
42
+ with self.assertRaises(TypeError):
43
+ to_sql(foo)
44
+
45
+ def foo(x: str, y: str) -> np.ndarray: ...
46
+ with self.assertRaises(TypeError):
47
+ to_sql(foo)
48
+
49
+ def foo(x: str, y: np.ndarray) -> np.ndarray: ...
50
+ with self.assertRaises(TypeError):
51
+ to_sql(foo)
52
+
53
+ def foo(x: np.ndarray, y: str) -> np.ndarray: ...
54
+ with self.assertRaises(TypeError):
55
+ to_sql(foo)
56
+
57
+ def foo(x: str, y: np.ndarray) -> str: ...
58
+ with self.assertRaises(TypeError):
59
+ to_sql(foo)
60
+
61
+ def foo(x: np.ndarray, y: str) -> str: ...
62
+ with self.assertRaises(TypeError):
63
+ to_sql(foo)
64
+
39
65
  def test_return_annotations(self):
40
66
 
41
67
  # No annotations
@@ -76,24 +102,25 @@ class TestUDF(unittest.TestCase):
76
102
  assert to_sql(foo) == '`foo`() RETURNS DOUBLE NULL'
77
103
 
78
104
  # Optional return value with collection type
79
- def foo() -> Optional[List[str]]: ...
80
- assert to_sql(foo) == '`foo`() RETURNS ARRAY(TEXT NOT NULL) NULL'
105
+ # def foo() -> Optional[List[str]]: ...
106
+ # assert to_sql(foo) == '`foo`() RETURNS ARRAY(TEXT NOT NULL) NULL'
81
107
 
82
108
  # Optional return value with nested collection type
83
- def foo() -> Optional[List[List[str]]]: ...
84
- assert to_sql(foo) == '`foo`() RETURNS ARRAY(ARRAY(TEXT NOT NULL) NOT NULL) NULL'
109
+ # def foo() -> Optional[List[List[str]]]: ...
110
+ # assert to_sql(foo) == '`foo`()
111
+ # RETURNS ARRAY(ARRAY(TEXT NOT NULL) NOT NULL) NULL'
85
112
 
86
113
  # Optional return value with collection type with nulls
87
- def foo() -> Optional[List[Optional[str]]]: ...
88
- assert to_sql(foo) == '`foo`() RETURNS ARRAY(TEXT NULL) NULL'
114
+ # def foo() -> Optional[List[Optional[str]]]: ...
115
+ # assert to_sql(foo) == '`foo`() RETURNS ARRAY(TEXT NULL) NULL'
89
116
 
90
117
  # Custom type with bound
91
118
  def foo() -> D: ...
92
119
  assert to_sql(foo) == '`foo`() RETURNS TEXT NOT NULL'
93
120
 
94
121
  # Return value with custom collection type with nulls
95
- def foo() -> E: ...
96
- assert to_sql(foo) == '`foo`() RETURNS ARRAY(DOUBLE NULL) NULL'
122
+ # def foo() -> E: ...
123
+ # assert to_sql(foo) == '`foo`() RETURNS ARRAY(DOUBLE NULL) NULL'
97
124
 
98
125
  # Incompatible types
99
126
  def foo() -> Union[int, str]: ...
@@ -158,17 +185,18 @@ class TestUDF(unittest.TestCase):
158
185
  assert to_sql(foo) == '`foo`(`x` DOUBLE NULL) RETURNS TINYINT NULL'
159
186
 
160
187
  # Optional parameter with collection type
161
- def foo(x: Optional[List[str]]) -> None: ...
162
- assert to_sql(foo) == '`foo`(`x` ARRAY(TEXT NOT NULL) NULL) RETURNS TINYINT NULL'
188
+ # def foo(x: Optional[List[str]]) -> None: ...
189
+ # assert to_sql(foo) == '`foo`(`x`
190
+ # ARRAY(TEXT NOT NULL) NULL) RETURNS TINYINT NULL'
163
191
 
164
192
  # Optional parameter with nested collection type
165
- def foo(x: Optional[List[List[str]]]) -> None: ...
166
- assert to_sql(foo) == '`foo`(`x` ARRAY(ARRAY(TEXT NOT NULL) NOT NULL) NULL) ' \
167
- 'RETURNS TINYINT NULL'
193
+ # def foo(x: Optional[List[List[str]]]) -> None: ...
194
+ # assert to_sql(foo) == '`foo`(`x` ARRAY(ARRAY(TEXT NOT NULL) NOT NULL) NULL) ' \
195
+ # 'RETURNS TINYINT NULL'
168
196
 
169
197
  # Optional parameter with collection type with nulls
170
- def foo(x: Optional[List[Optional[str]]]) -> None: ...
171
- assert to_sql(foo) == '`foo`(`x` ARRAY(TEXT NULL) NULL) RETURNS TINYINT NULL'
198
+ # def foo(x: Optional[List[Optional[str]]]) -> None: ...
199
+ # assert to_sql(foo) == '`foo`(`x` ARRAY(TEXT NULL) NULL) RETURNS TINYINT NULL'
172
200
 
173
201
  # Custom type with bound
174
202
  def foo(x: D) -> None: ...
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: singlestoredb
3
- Version: 1.14.2
3
+ Version: 1.15.1
4
4
  Summary: Interface to the SingleStoreDB database and workspace management APIs
5
5
  Home-page: https://github.com/singlestore-labs/singlestoredb-python
6
6
  Author: SingleStore
@@ -1,6 +1,6 @@
1
- singlestoredb/__init__.py,sha256=LXawJyI2-AilQxUSQ8IJnDUiwZk5nrB-FGGpHWcToGI,2256
1
+ singlestoredb/__init__.py,sha256=0oMPzlsB1ZxWKQ0Gjrn1mLxlbPjH_dKuwkTsEX44TUU,2272
2
2
  singlestoredb/auth.py,sha256=u8D9tpKzrqa4ssaHjyZnGDX1q8XBpGtuoOkTkSv7B28,7599
3
- singlestoredb/config.py,sha256=dayUWwSy2YdgmhF8tzH-7FwFpwon5bgX_VeX-Yu5ia4,12969
3
+ singlestoredb/config.py,sha256=kas72OMNhvjpXSHxY5a0JaEIx9L5-M-Q8ZLVdA-W-Wo,13368
4
4
  singlestoredb/connection.py,sha256=ELk3-UpM6RaB993aIt08MydKiiDnejHQ1s8EFiacrAI,46055
5
5
  singlestoredb/converters.py,sha256=Ui-AqdW3pRAQ8A_YcK9EqVYyM4Pt1_Q-tjlotbpK6Cw,20686
6
6
  singlestoredb/exceptions.py,sha256=HuoA6sMRL5qiCiee-_5ddTGmFbYC9Euk8TYUsh5GvTw,3234
@@ -9,7 +9,7 @@ singlestoredb/pytest.py,sha256=OyF3BO9mgxenifYhOihnzGk8WzCJ_zN5_mxe8XyFPOc,9074
9
9
  singlestoredb/types.py,sha256=Qp_PWYjSYG6PRnmXAZZ7K2QehUqfoG4KSllI3O1stPE,10397
10
10
  singlestoredb/vectorstore.py,sha256=BZb8e7m02_XVHqOyu8tA94R6kHb3n-BC8F08JyJwDzY,8408
11
11
  singlestoredb/ai/__init__.py,sha256=-uNcq-bY-AiWhZ5Plq2ZXtfIVL4PaifMJsJf58rdN8I,114
12
- singlestoredb/ai/chat.py,sha256=8OSBZJ3J2zOlVXzJ_sHSAAyu5E6sy7jqqiNeFhtmjOI,802
12
+ singlestoredb/ai/chat.py,sha256=5vi_jVSH8xJ_WIn_mst8uw5cv9tJJBn3AFYRM4LhYI8,1268
13
13
  singlestoredb/ai/embeddings.py,sha256=X3g0sJNDVOzXzZwoXz3M3ch-IERQXNkHxuH4cj125I8,815
14
14
  singlestoredb/alchemy/__init__.py,sha256=dXRThusYrs_9GjrhPOw0-vw94in_T8yY9jE7SGCqiQk,2523
15
15
  singlestoredb/apps/__init__.py,sha256=dfN97AZz7Np6JML3i9GJrv22ZbNCUletXmsJpQnKhKg,170
@@ -18,22 +18,46 @@ singlestoredb/apps/_config.py,sha256=FlV0ABP7qlBJoKo9NOme6Fpp4yUFm5QEpHEHbl1A24o
18
18
  singlestoredb/apps/_connection_info.py,sha256=QOr-wcQJn6oCZw2kLEP0Uwzo85CGolGz0QIvlem3gug,303
19
19
  singlestoredb/apps/_dashboards.py,sha256=_03fI-GJannamA5lxLvIoC6Mim-H1jTRuI8-dw_P--k,1474
20
20
  singlestoredb/apps/_process.py,sha256=G37fk6bzIxzhfEqp2aJBk3JCij-T2HFtTd078k5Xq9I,944
21
- singlestoredb/apps/_python_udfs.py,sha256=-CT0hzfHGnbxWkOKS8gQBJa3Kq6ixT_gn18TGtLtK_k,2726
21
+ singlestoredb/apps/_python_udfs.py,sha256=hwncnfx7MpOsvCH0Ic64otDIo-GGPT3UC89y2uAA_Uw,2773
22
22
  singlestoredb/apps/_stdout_supress.py,sha256=8s9zMIIRPpeu44yluJFc_0VueAxZDmr9QVGT6TGiFeY,659
23
23
  singlestoredb/apps/_uvicorn_util.py,sha256=rEK4nEmq5hbpRgsmK16UVlxe2DyQSq7C5w5WZSp0kX8,962
24
+ singlestoredb/docstring/__init__.py,sha256=tTkEitbunkZ-yw2h620BRB1RSTnSmB47UYa6yyNcksM,843
25
+ singlestoredb/docstring/attrdoc.py,sha256=1eE5JmEQv3TkyYfq4OOQ9tuFOzuCFi3Yx4ehuVvMwsA,4221
26
+ singlestoredb/docstring/common.py,sha256=EQntxc6bsqCwzwOSO_qiIQog-W19dDKeeGUrUVkZmBg,6407
27
+ singlestoredb/docstring/epydoc.py,sha256=gSZmM4Xn1G6JAgg70p2aH5CXjHz644RZ_3lr7nn667c,9103
28
+ singlestoredb/docstring/google.py,sha256=_64n5rc4yCVNJvLah5DkQn7qORKYeQ3-nWRq4CcaHWQ,13813
29
+ singlestoredb/docstring/numpydoc.py,sha256=6B-cpSvJEPnnc80TLzyx5YNLtGpiIujYBngQUmxIDH0,17403
30
+ singlestoredb/docstring/parser.py,sha256=Vmrzsh5TSBzBR4zJgxC-lSXk6PAbZXy5FUs2rN5Efrk,3064
31
+ singlestoredb/docstring/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
32
+ singlestoredb/docstring/rest.py,sha256=yrZp-tmeTPGD_M0BhmXNSurpfMvwMfI_K3ruxVG8eUs,8492
33
+ singlestoredb/docstring/util.py,sha256=Hrc90jdu1bN3MCYeLScJ_ynTBDpWWLBKofrLAWk8KvA,4664
34
+ singlestoredb/docstring/tests/__init__.py,sha256=6VULghkufHkqtZfyiBamwZQNBA3z7f4TMEcBclUqTKE,34
35
+ singlestoredb/docstring/tests/_pydoctor.py,sha256=SC-bFHFocEC3jdrXiD0-HV88Ff2XI96K2LvufeweCNQ,790
36
+ singlestoredb/docstring/tests/test_epydoc.py,sha256=1oLC7L9Uc1XhePLr3G_ie5KIuXPAuSieoLq1dWUSz30,19290
37
+ singlestoredb/docstring/tests/test_google.py,sha256=2dVyFN-NjiuyUC3ZcGEm33aENAZNh9F7Eq_ErmyneIA,27955
38
+ singlestoredb/docstring/tests/test_numpydoc.py,sha256=9qr9jHr4feTF1E09c8J6SHWSXUTHsnoln2_DImYKAYM,29680
39
+ singlestoredb/docstring/tests/test_parse_from_object.py,sha256=gZnfgraFb4CGNaoXpQKTZT-QZet0CKdhikZtN148e84,3862
40
+ singlestoredb/docstring/tests/test_parser.py,sha256=1QAB125mmp5sDImafGDa34hhwTPQNOtkQxp75NJJov4,7445
41
+ singlestoredb/docstring/tests/test_rest.py,sha256=ljbY0zi7Wdk90eCg1xgS3aD9GvzB0TdTRhzHGuykaeM,15389
42
+ singlestoredb/docstring/tests/test_util.py,sha256=ES-bb99Qt1AXtCTDO8CdcWInJJLhH1Mh0e4I8MUsabA,1946
24
43
  singlestoredb/functions/__init__.py,sha256=I2GnxOhLb4_7xhgOxdIwmwD5NiK7QYPYaE3PUIX-7xk,471
25
- singlestoredb/functions/decorator.py,sha256=gylwivCwpNMCUmgBEUEYf2ogIpInNhu6IFeTU82W7Ko,5433
44
+ singlestoredb/functions/decorator.py,sha256=GrbTMIhXRPlVeVlENrgCjt9aZjZQC7Z4tLOvODAre5Y,6396
26
45
  singlestoredb/functions/dtypes.py,sha256=DgJaNXouJ2t-qIqDiQlUYU9IhkXXUTigWeE_MAcmvHM,39814
27
- singlestoredb/functions/signature.py,sha256=avErza5t3p0vy94p4yjw7Hy2cCDvjolwCyYjEI0PKXM,42481
28
- singlestoredb/functions/typing.py,sha256=gT_Sz5YH-L-9WeIHwWYMEx-hUCZqis7ec5Ipk3JXpnM,1339
46
+ singlestoredb/functions/signature.py,sha256=h2vFVNP07d5a3gi7zMiM_sztDUNK_HlJWR-Rl3nMxPA,45545
29
47
  singlestoredb/functions/utils.py,sha256=1L0Phgzq0XdWK3ecfOOydq4zV955yCwpDoAaCYRGldk,10769
30
48
  singlestoredb/functions/ext/__init__.py,sha256=1oLL20yLB1GL9IbFiZD8OReDqiCpFr-yetIR6x1cNkI,23
31
49
  singlestoredb/functions/ext/arrow.py,sha256=WB7n1ACslyd8nlbFzUvlbxn1BVuEjA9-BGBEqCWlSOo,9061
32
- singlestoredb/functions/ext/asgi.py,sha256=CSjGB8YnBYf0Ca4qMjl25AG1ExBmmnzxKTFAogi_mDc,51874
50
+ singlestoredb/functions/ext/asgi.py,sha256=SuaNnatHY7Y5v2YtioSc6UHsOyYozK14xqKI-LbMy1I,64299
33
51
  singlestoredb/functions/ext/json.py,sha256=RIuZdDybEdHuC-f2p6BdjhFjM3iGb3a1PRQ4k11P6N8,10102
34
52
  singlestoredb/functions/ext/mmap.py,sha256=RzyNSLRpI5ZJ8YN6k-AvZlRTLjj80j52byHLtW8c3ps,13710
35
53
  singlestoredb/functions/ext/rowdat_1.py,sha256=SlXbJ2042jEoaXw81y5llw1625w0aU2nZ8vI_O3qA-M,21112
54
+ singlestoredb/functions/ext/timer.py,sha256=kgmJACV6LAfev53XiGMwCv4DDlgF3Icg7G8VCuTQp4Q,2963
36
55
  singlestoredb/functions/ext/utils.py,sha256=2-B8YU_Iekv8JcpI-ochs9TIeuyatLaLAH-AyYyUUIg,5311
56
+ singlestoredb/functions/typing/__init__.py,sha256=gT_Sz5YH-L-9WeIHwWYMEx-hUCZqis7ec5Ipk3JXpnM,1339
57
+ singlestoredb/functions/typing/numpy.py,sha256=WO64_HziveGk0dqRrkuZ51aohULy9qYuqaKHAoiiA3A,661
58
+ singlestoredb/functions/typing/pandas.py,sha256=wZUTMbte937EKtGdnFFWB0fFut5unTOyAbn8fSBsfro,83
59
+ singlestoredb/functions/typing/polars.py,sha256=b_UOIXLkvptHiAB7sXSzC7XPHMWNOglCz6h9amCA6Kg,83
60
+ singlestoredb/functions/typing/pyarrow.py,sha256=WkqQrUPS__jYzUJntLLUVDgYIcnqR9HU6Q5grZojZrc,80
37
61
  singlestoredb/fusion/__init__.py,sha256=Qo7SuqGw-l-vE8-EI2jhm6hXJkYfOLUKIws9c7LFNX0,356
38
62
  singlestoredb/fusion/graphql.py,sha256=ZA3HcDq5rER-dCEavwTqnF7KM0D2LCYIY7nLQk7lSso,5207
39
63
  singlestoredb/fusion/handler.py,sha256=M5iyNP4zOaGqUqnZg_b5xhRE-8tHgfZSHDH0zKTiJmE,27692
@@ -41,29 +65,29 @@ singlestoredb/fusion/registry.py,sha256=jjdRTYZ3ylhy6gAoW5xBj0tkxGFBT-2yLQ0tztTg
41
65
  singlestoredb/fusion/result.py,sha256=p5I65C-Dhhl1yeZwetXXZabwritr8Ph2mFvJJ3ovcBM,11790
42
66
  singlestoredb/fusion/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
67
  singlestoredb/fusion/handlers/export.py,sha256=Af4eIMPGKEOpmf4LXnvQsgmnvx5F8B5FkRI20RvEa7o,15309
44
- singlestoredb/fusion/handlers/files.py,sha256=McoRacihcQn0-qILujBi0HCNyuFcrBoIUGlkWlg1cII,18991
68
+ singlestoredb/fusion/handlers/files.py,sha256=6SMVn80DrnBWabbd1vevicR827P0Y6-B1bTfqr4VuL4,18971
45
69
  singlestoredb/fusion/handlers/job.py,sha256=r0KdOD55VUDw-SymC__5Mn-fzJTZE_xcBgH-O8DYVHc,21095
46
- singlestoredb/fusion/handlers/models.py,sha256=xJPIG0_GgF-VrmPoIsU2U4AsS7ytDz8JMRaqchglAR0,6236
47
- singlestoredb/fusion/handlers/stage.py,sha256=kYVjbPys83kf3jX6jWwN8Ju0oEocKVZ3TIOt2HiC5Ew,14287
70
+ singlestoredb/fusion/handlers/models.py,sha256=2LWx7da7qVc65xFIKPsFikvvA9zF-QxMZJ76HV5inNw,6231
71
+ singlestoredb/fusion/handlers/stage.py,sha256=edViRGlBF7xZUd3ClmpBlMcBc6O4JKdvA9DGgnbGFdU,14272
48
72
  singlestoredb/fusion/handlers/utils.py,sha256=ozHOWUraoN8XGTK9JZdhv5HV8AQR8zfUd1yh1kLvUXY,10685
49
73
  singlestoredb/fusion/handlers/workspace.py,sha256=4xN2TFO4yF7KZB2Fcht7IuvoDdAT6fDfDLjixiHZN8w,27506
50
74
  singlestoredb/http/__init__.py,sha256=A_2ZUCCpvRYIA6YDpPy57wL5R1eZ5SfP6I1To5nfJ2s,912
51
75
  singlestoredb/http/connection.py,sha256=X5GEPPOE-rMm17d0-TPhcdxUHibcYl-MZAnPhut8xyo,39956
52
76
  singlestoredb/magics/__init__.py,sha256=lZjkT3Webo9c1EQAzlRCRh6B2pckQH8uvNrrB__abcI,1210
53
- singlestoredb/magics/run_personal.py,sha256=2f7u1T7iblxGzZurHNgNXLrPBvsvPADZKo_RD_IjYuE,1844
54
- singlestoredb/magics/run_shared.py,sha256=SI8dCBRMaGn-xZU7dto4jsAqKBi-Ll14htUsMUSBpJM,1752
55
- singlestoredb/management/__init__.py,sha256=ofNTPCdkZ1dS_aX2aUujd8aMHQi8Lle5Ced0aaO3RH4,269
77
+ singlestoredb/magics/run_personal.py,sha256=Y5lVpJ8vqOyEjtZkip04Hwi4uZ7CQLU5Rd1MrCmpNvs,5222
78
+ singlestoredb/magics/run_shared.py,sha256=czoO4z6gtoq9ek_41efRBRk-XQiHKuHdY0BOdfKkFrc,5130
79
+ singlestoredb/management/__init__.py,sha256=8q7i6-Cr9x-oZ8-NVAvTo_qtfHEndX4wx2g6GMAAgPQ,304
56
80
  singlestoredb/management/billing_usage.py,sha256=9ighjIpcopgIyJOktBYQ6pahBZmWGHOPyyCW4gu9FGs,3735
57
- singlestoredb/management/cluster.py,sha256=h75grXSxq4Anr4RxwKxcZW4TkWJ4bFg_ql5iRWCNLdQ,14405
81
+ singlestoredb/management/cluster.py,sha256=vDefpp2IMZRawvueIqZK2pePWVNnPWb6Szrt8mO8gmg,14419
58
82
  singlestoredb/management/export.py,sha256=yR-yZUE9USFrP5OR_5iLFqEc8GLiKDQypSEp08CmT5k,9083
59
83
  singlestoredb/management/files.py,sha256=89IhpGw9WdwxVeksavHEDMVn9wb_jxb-utZuIDqkLHw,30477
60
84
  singlestoredb/management/inference_api.py,sha256=L6eFqaUaPugF_cmrZ4xlArj8CIv25vWqQs1vwgKPEF4,2583
61
85
  singlestoredb/management/job.py,sha256=4-xLWzbE8odQogVVaFer80UEoTAZY1T28VZ9Ug4rbmM,24611
62
- singlestoredb/management/manager.py,sha256=V9_PVMpUOj8laKwNFtp4Nd2Taww2Y65TeSRK5ZWzOo0,8922
86
+ singlestoredb/management/manager.py,sha256=k8JKPXyJVHI7gFwqIhxhUtQr_KdBCXw7Dw4GCdCtdKg,9352
63
87
  singlestoredb/management/organization.py,sha256=_JvW0Znu5emR5uYGVEcZvakQqftNb_vRhzmkOoPRPfc,5869
64
- singlestoredb/management/region.py,sha256=HnLcWUh7r_aLECliplCDHak4a_F3B7LOSXEYMW66qD0,1611
88
+ singlestoredb/management/region.py,sha256=ji3u6ZjQoNJ9i_X4C9ojciYPq4Oz7gKkeeUDndO8dZU,4114
65
89
  singlestoredb/management/utils.py,sha256=QIhZCZSRaDbAG35xu1_n7ihmRXON8swc-gEK2FGYutI,13203
66
- singlestoredb/management/workspace.py,sha256=ze-eE-cO3JCrR3uttVFaBOndDbEE8_qWR2kzOjzbKaY,56234
90
+ singlestoredb/management/workspace.py,sha256=XoguxUm2k2MP6Fct8am_735ZgPqUXBkIjPwBOVtIBIY,61931
67
91
  singlestoredb/mysql/__init__.py,sha256=olUTAvkiERhDW41JXQMawkg-i0tvBEkoTkII1tt6lxU,4492
68
92
  singlestoredb/mysql/_auth.py,sha256=AugRitoUwgRIDFuJxuAH4MWIAmckY7Ji2pP6r_Ng9dY,8043
69
93
  singlestoredb/mysql/charset.py,sha256=-FlONDS_oAUF5B3mIgeHBPb_SCt4zHD33arUeBNctU0,10510
@@ -115,28 +139,28 @@ singlestoredb/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
115
139
  singlestoredb/tests/empty.sql,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
140
  singlestoredb/tests/local_infile.csv,sha256=sBtqjvfkS9aoOVx8nMXYgYv4rDuT4OuYhqUhNRu0O68,42
117
141
  singlestoredb/tests/test.ipynb,sha256=jrkI2WoSsUA9xQpKTBCHnsDptryQhPdM5QaxfvYRGpg,216
118
- singlestoredb/tests/test.sql,sha256=dfMehVCQ9wObSVTQKyQi-fRFDZeqRxV4Cj8doBCPEFM,17679
142
+ singlestoredb/tests/test.sql,sha256=mErluOEZsN0QH5EuSVR8Ki-NSIpdpR8MStuchec_ZKc,18640
119
143
  singlestoredb/tests/test2.ipynb,sha256=yd1PE1VK-DwiRd6mYS4_0cPBtuVkvcDtycvTwD-YnDo,218
120
144
  singlestoredb/tests/test2.sql,sha256=D4U2GSlOVeo39U8-RMM4YziJzYFfi4Ztm2YXJVJVAS8,37
121
145
  singlestoredb/tests/test_basics.py,sha256=Dw1irrtf3gWN7tqGruSH6uhWi5zkmCpJl6ZMQxMqlf4,48446
122
146
  singlestoredb/tests/test_config.py,sha256=63lyIQ2KrvGE6C9403B_4Mc90mX4tp42ys5Bih2sXrE,11184
123
- singlestoredb/tests/test_connection.py,sha256=fvn-kPdeIMI9RGNz0dNk5ZmTCep1amwWQDHYfPdqO60,119699
147
+ singlestoredb/tests/test_connection.py,sha256=ax2hBPahn0rFENBbYLoph_JIAR20eYeJLyQPIQGIdX4,120237
124
148
  singlestoredb/tests/test_dbapi.py,sha256=IKq5Hcwx8WikASP8_AB5fo3TXv7ryWPCVGonoly00gI,652
125
149
  singlestoredb/tests/test_exceptions.py,sha256=tfr_8X2w1UmG4nkSBzWGB0C7ehrf1GAVgj6_ODaG-TM,1131
126
- singlestoredb/tests/test_ext_func.py,sha256=s1k1cBxQ7vIS1zSrKGkKTgLZE1DT_Rqj-3VNSCSv68I,43261
150
+ singlestoredb/tests/test_ext_func.py,sha256=_YREceW1Llwx9Wcamj0up2IXLuBTnuvQqCFOWphckKI,46271
127
151
  singlestoredb/tests/test_ext_func_data.py,sha256=yTADD93nPxX6_rZXXLZaOWEI_yPvYyir9psn5PK9ctU,47695
128
152
  singlestoredb/tests/test_fusion.py,sha256=7YQ_nOQoV_7yD4OEpJz2Ov-zok-cBFK9IOJ3FgZ0xo0,50593
129
153
  singlestoredb/tests/test_http.py,sha256=RXasTqBWRn__omj0eLFTJYIbZjd0PPdIV2d4Cqz0MC8,8580
130
- singlestoredb/tests/test_management.py,sha256=rzM5xZllXys6OzyFBxOieYSn4kDGCwWuyIkJWsPXvAY,45847
154
+ singlestoredb/tests/test_management.py,sha256=R5g5QHWCSPxCrwMUOD0BL-touGIDvqQfDve-YmZyhX4,51973
131
155
  singlestoredb/tests/test_plugin.py,sha256=qpO9wmWc62VaijN1sJ97YSYIX7I7Y5C6sY-WzwrutDQ,812
132
156
  singlestoredb/tests/test_results.py,sha256=wg93sujwt-R9_eJCgSCElgAZhLDkIiAo3qPkPydOv78,6582
133
157
  singlestoredb/tests/test_types.py,sha256=jqoAaSjhbgwB3vt0KsTcl7XBWoMMIa0mPFKhEi5bBjo,4500
134
- singlestoredb/tests/test_udf.py,sha256=Kb7-oJpnN6MTT3aE5V5dry_r5ze0EwaAIJeh_zR3l0I,28844
158
+ singlestoredb/tests/test_udf.py,sha256=ycqSwwwCw3Mq4r0cyIylg63ReSjP4KbMX_7XqoYm-dg,29676
135
159
  singlestoredb/tests/test_udf_returns.py,sha256=k31L6Ir2Xw8MEZ18upuu0p_D_OpbrPAzWhDQXVFDS7I,15541
136
160
  singlestoredb/tests/test_vectorstore.py,sha256=anHfp5gQrQy8Iw3Ub4mxFEkaZWahs566OXuKqjpkozM,1554
137
161
  singlestoredb/tests/test_xdict.py,sha256=fqHspoi39nbX3fIDVkkRXcd5H50xdOsSvK0bxAMQnaE,10408
138
162
  singlestoredb/tests/utils.py,sha256=2A2tEdD3t8aXWUnHtAIcFlWrflsz2MlMcCbUDaAG29c,4995
139
- singlestoredb/tests/ext_funcs/__init__.py,sha256=gtyhykoEk8_-il5ukTwvqDu-4D1LgwxMFseYg1wgOHo,14103
163
+ singlestoredb/tests/ext_funcs/__init__.py,sha256=Gg15gcphVnW5ZXgFT8P8hYSOmgvmVIaUA8jxTC_UgRc,15581
140
164
  singlestoredb/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
165
  singlestoredb/utils/config.py,sha256=m3Xn6hsbdKyLufSnbokhFJ9Vfaz9Qpkj1IEnIiH9oJQ,24503
142
166
  singlestoredb/utils/convert_rows.py,sha256=A6up7a8Bq-eV2BXdGCotQviqp1Q7XdJ2MA9339hLYVQ,1816
@@ -148,9 +172,9 @@ singlestoredb/utils/results.py,sha256=bJtaUaDiFq26IsPAKZ2FHGB7csMn94EAxLKrP4HaEE
148
172
  singlestoredb/utils/xdict.py,sha256=S9HKgrPrnu_6b7iOwa2KrW8CmU1Uqx0BWdEyogFzWbE,12896
149
173
  sqlx/__init__.py,sha256=aBYiU8DZXCogvWu3yWafOz7bZS5WWwLZXj7oL0dXGyU,85
150
174
  sqlx/magic.py,sha256=JsS9_9aBFaOt91Torm1JPN0c8qB2QmYJmNSKtbSQIY0,3509
151
- singlestoredb-1.14.2.dist-info/LICENSE,sha256=Mlq78idURT-9G026aMYswwwnnrLcgzTLuXeAs5hjDLM,11341
152
- singlestoredb-1.14.2.dist-info/METADATA,sha256=WgSCJwj4A5uNxFytXq-Xg7zoyt0zXy_s5q7FdcPrJQE,5786
153
- singlestoredb-1.14.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
154
- singlestoredb-1.14.2.dist-info/entry_points.txt,sha256=bSLaTWB5zGjpVYPAaI46MkkDup0su-eb3uAhCNYuRV0,48
155
- singlestoredb-1.14.2.dist-info/top_level.txt,sha256=DfFGz7bM4XrshloiCeTABgylT3BUnS8T5pJam3ewT6Q,19
156
- singlestoredb-1.14.2.dist-info/RECORD,,
175
+ singlestoredb-1.15.1.dist-info/LICENSE,sha256=Mlq78idURT-9G026aMYswwwnnrLcgzTLuXeAs5hjDLM,11341
176
+ singlestoredb-1.15.1.dist-info/METADATA,sha256=Jv3BREq0woLIxNAFWlMQ_CCNP9XyQuK81oG57-4FCxg,5786
177
+ singlestoredb-1.15.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
178
+ singlestoredb-1.15.1.dist-info/entry_points.txt,sha256=bSLaTWB5zGjpVYPAaI46MkkDup0su-eb3uAhCNYuRV0,48
179
+ singlestoredb-1.15.1.dist-info/top_level.txt,sha256=DfFGz7bM4XrshloiCeTABgylT3BUnS8T5pJam3ewT6Q,19
180
+ singlestoredb-1.15.1.dist-info/RECORD,,