singlestoredb 1.15.7__tar.gz → 1.16.0__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.

Potentially problematic release.


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

Files changed (191) hide show
  1. {singlestoredb-1.15.7/singlestoredb.egg-info → singlestoredb-1.16.0}/PKG-INFO +7 -5
  2. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/accel.c +2 -2
  3. singlestoredb-1.16.0/pyproject.toml +118 -0
  4. singlestoredb-1.16.0/setup.cfg +4 -0
  5. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/__init__.py +1 -1
  6. singlestoredb-1.16.0/singlestoredb/ai/__init__.py +2 -0
  7. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/ai/chat.py +21 -41
  8. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/ai/embeddings.py +21 -18
  9. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/connection.py +2 -2
  10. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/ext/asgi.py +3 -3
  11. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/ext/rowdat_1.py +1 -1
  12. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/signature.py +1 -1
  13. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/typing/__init__.py +1 -1
  14. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/utils.py +1 -1
  15. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/handler.py +1 -1
  16. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/result.py +1 -1
  17. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/http/connection.py +2 -2
  18. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/management/manager.py +61 -0
  19. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/management/utils.py +1 -1
  20. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/management/workspace.py +6 -0
  21. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/connection.py +1 -1
  22. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/pytest.py +78 -9
  23. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_management.py +151 -124
  24. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/utils/config.py +2 -2
  25. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/utils/mogrify.py +1 -1
  26. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/utils/results.py +2 -2
  27. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/utils/xdict.py +4 -4
  28. {singlestoredb-1.15.7 → singlestoredb-1.16.0/singlestoredb.egg-info}/PKG-INFO +7 -5
  29. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb.egg-info/SOURCES.txt +1 -1
  30. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb.egg-info/requires.txt +28 -3
  31. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb.egg-info/top_level.txt +1 -0
  32. singlestoredb-1.15.7/setup.cfg +0 -126
  33. singlestoredb-1.15.7/singlestoredb/ai/__init__.py +0 -5
  34. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/LICENSE +0 -0
  35. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/README.md +0 -0
  36. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/setup.py +0 -0
  37. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/alchemy/__init__.py +0 -0
  38. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/apps/__init__.py +0 -0
  39. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/apps/_cloud_functions.py +0 -0
  40. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/apps/_config.py +0 -0
  41. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/apps/_connection_info.py +0 -0
  42. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/apps/_dashboards.py +0 -0
  43. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/apps/_process.py +0 -0
  44. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/apps/_python_udfs.py +0 -0
  45. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/apps/_stdout_supress.py +0 -0
  46. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/apps/_uvicorn_util.py +0 -0
  47. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/auth.py +0 -0
  48. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/config.py +0 -0
  49. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/converters.py +0 -0
  50. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/__init__.py +0 -0
  51. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/attrdoc.py +0 -0
  52. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/common.py +0 -0
  53. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/epydoc.py +0 -0
  54. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/google.py +0 -0
  55. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/numpydoc.py +0 -0
  56. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/parser.py +0 -0
  57. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/py.typed +0 -0
  58. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/rest.py +0 -0
  59. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/tests/__init__.py +0 -0
  60. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/tests/_pydoctor.py +0 -0
  61. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/tests/test_epydoc.py +0 -0
  62. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/tests/test_google.py +0 -0
  63. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/tests/test_numpydoc.py +0 -0
  64. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/tests/test_parse_from_object.py +0 -0
  65. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/tests/test_parser.py +0 -0
  66. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/tests/test_rest.py +0 -0
  67. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/tests/test_util.py +0 -0
  68. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/docstring/util.py +0 -0
  69. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/exceptions.py +0 -0
  70. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/__init__.py +0 -0
  71. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/decorator.py +0 -0
  72. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/dtypes.py +0 -0
  73. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/ext/__init__.py +0 -0
  74. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/ext/arrow.py +0 -0
  75. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/ext/json.py +0 -0
  76. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/ext/mmap.py +0 -0
  77. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/ext/timer.py +0 -0
  78. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/ext/utils.py +0 -0
  79. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/typing/numpy.py +0 -0
  80. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/typing/pandas.py +0 -0
  81. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/typing/polars.py +0 -0
  82. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/functions/typing/pyarrow.py +0 -0
  83. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/__init__.py +0 -0
  84. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/graphql.py +0 -0
  85. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/handlers/__init__.py +0 -0
  86. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/handlers/export.py +0 -0
  87. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/handlers/files.py +0 -0
  88. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/handlers/job.py +0 -0
  89. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/handlers/models.py +0 -0
  90. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/handlers/stage.py +0 -0
  91. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/handlers/utils.py +0 -0
  92. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/handlers/workspace.py +0 -0
  93. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/fusion/registry.py +0 -0
  94. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/http/__init__.py +0 -0
  95. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/magics/__init__.py +0 -0
  96. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/magics/run_personal.py +0 -0
  97. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/magics/run_shared.py +0 -0
  98. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/management/__init__.py +0 -0
  99. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/management/billing_usage.py +0 -0
  100. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/management/cluster.py +0 -0
  101. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/management/export.py +0 -0
  102. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/management/files.py +0 -0
  103. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/management/inference_api.py +0 -0
  104. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/management/job.py +0 -0
  105. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/management/organization.py +0 -0
  106. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/management/region.py +0 -0
  107. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/__init__.py +0 -0
  108. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/_auth.py +0 -0
  109. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/charset.py +0 -0
  110. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/constants/CLIENT.py +0 -0
  111. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/constants/COMMAND.py +0 -0
  112. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/constants/CR.py +0 -0
  113. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/constants/ER.py +0 -0
  114. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/constants/EXTENDED_TYPE.py +0 -0
  115. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/constants/FIELD_TYPE.py +0 -0
  116. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/constants/FLAG.py +0 -0
  117. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/constants/SERVER_STATUS.py +0 -0
  118. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/constants/VECTOR_TYPE.py +0 -0
  119. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/constants/__init__.py +0 -0
  120. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/converters.py +0 -0
  121. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/cursors.py +0 -0
  122. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/err.py +0 -0
  123. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/optionfile.py +0 -0
  124. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/protocol.py +0 -0
  125. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/__init__.py +0 -0
  126. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/base.py +0 -0
  127. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/conftest.py +0 -0
  128. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/test_DictCursor.py +0 -0
  129. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/test_SSCursor.py +0 -0
  130. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/test_basic.py +0 -0
  131. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/test_connection.py +0 -0
  132. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/test_converters.py +0 -0
  133. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/test_cursor.py +0 -0
  134. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/test_err.py +0 -0
  135. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/test_issues.py +0 -0
  136. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/test_load_local.py +0 -0
  137. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/test_nextset.py +0 -0
  138. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/test_optionfile.py +0 -0
  139. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/thirdparty/__init__.py +0 -0
  140. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/__init__.py +0 -0
  141. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/capabilities.py +0 -0
  142. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/dbapi20.py +0 -0
  143. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_capabilities.py +0 -0
  144. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_dbapi20.py +0 -0
  145. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_nonstandard.py +0 -0
  146. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/mysql/times.py +0 -0
  147. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/notebook/__init__.py +0 -0
  148. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/notebook/_objects.py +0 -0
  149. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/notebook/_portal.py +0 -0
  150. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/py.typed +0 -0
  151. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/server/__init__.py +0 -0
  152. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/server/docker.py +0 -0
  153. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/server/free_tier.py +0 -0
  154. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/__init__.py +0 -0
  155. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/alltypes.sql +0 -0
  156. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/alltypes_no_nulls.sql +0 -0
  157. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/empty.sql +0 -0
  158. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/ext_funcs/__init__.py +0 -0
  159. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/local_infile.csv +0 -0
  160. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test.ipynb +0 -0
  161. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test.sql +0 -0
  162. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test2.ipynb +0 -0
  163. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test2.sql +0 -0
  164. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_basics.py +0 -0
  165. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_config.py +0 -0
  166. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_connection.py +0 -0
  167. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_dbapi.py +0 -0
  168. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_exceptions.py +0 -0
  169. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_ext_func.py +0 -0
  170. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_ext_func_data.py +0 -0
  171. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_fusion.py +0 -0
  172. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_http.py +0 -0
  173. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_plugin.py +0 -0
  174. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_results.py +0 -0
  175. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_types.py +0 -0
  176. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_udf.py +0 -0
  177. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_udf_returns.py +0 -0
  178. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_vectorstore.py +0 -0
  179. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/test_xdict.py +0 -0
  180. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/tests/utils.py +0 -0
  181. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/types.py +0 -0
  182. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/utils/__init__.py +0 -0
  183. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/utils/convert_rows.py +0 -0
  184. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/utils/debug.py +0 -0
  185. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/utils/dtypes.py +0 -0
  186. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/utils/events.py +0 -0
  187. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb/vectorstore.py +0 -0
  188. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb.egg-info/dependency_links.txt +0 -0
  189. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/singlestoredb.egg-info/entry_points.txt +0 -0
  190. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/sqlx/__init__.py +0 -0
  191. {singlestoredb-1.15.7 → singlestoredb-1.16.0}/sqlx/magic.py +0 -0
@@ -1,13 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: singlestoredb
3
- Version: 1.15.7
3
+ Version: 1.16.0
4
4
  Summary: Interface to the SingleStoreDB database and workspace management APIs
5
- Home-page: https://github.com/singlestore-labs/singlestoredb-python
6
- Author: SingleStore
7
- Author-email: support@singlestore.com
5
+ Author-email: SingleStore <support@singlestore.com>
8
6
  License: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/singlestore-labs/singlestoredb-python
9
8
  Classifier: Development Status :: 5 - Production/Stable
10
- Classifier: License :: OSI Approved :: Apache Software License
11
9
  Classifier: Programming Language :: Python :: 3
12
10
  Classifier: Programming Language :: Python :: 3 :: Only
13
11
  Classifier: Topic :: Database
@@ -24,6 +22,10 @@ Provides-Extra: pytest
24
22
  Provides-Extra: rsa
25
23
  Provides-Extra: sqlalchemy
26
24
  Provides-Extra: vectorstore
25
+ Provides-Extra: test
26
+ Provides-Extra: docs
27
+ Provides-Extra: build
28
+ Provides-Extra: dev
27
29
  License-File: LICENSE
28
30
 
29
31
  # <img src="https://github.com/singlestore-labs/singlestoredb-python/blob/main/resources/singlestore-logo.png" height="60" valign="middle"/> SingleStoreDB Python SDK
@@ -3079,11 +3079,11 @@ static PyObject *dump_rowdat_1_numpy(PyObject *self, PyObject *args, PyObject *k
3079
3079
  PyErr_SetString(PyExc_ValueError, "value is outside the valid range for UNSIGNED INT"); \
3080
3080
  goto error; \
3081
3081
  }
3082
- #define CHECK_BIGINT(x, unsigned_input) if ((x) < ((unsigned_input) ? 0 : -9223372036854775808) || (x) > 9223372036854775807) { \
3082
+ #define CHECK_BIGINT(x, unsigned_input) if ((x) < ((unsigned_input) ? 0 : INT64_MIN) || (x) > INT64_MAX) { \
3083
3083
  PyErr_SetString(PyExc_ValueError, "value is outside the valid range for BIGINT"); \
3084
3084
  goto error; \
3085
3085
  }
3086
- #define CHECK_UNSIGNED_BIGINT(x, unsigned_input) if ((x) < 0 || (x) > 18446744073709551615) { \
3086
+ #define CHECK_UNSIGNED_BIGINT(x, unsigned_input) if ((x) < 0) { \
3087
3087
  PyErr_SetString(PyExc_ValueError, "value is outside the valid range for UNSIGNED BIGINT"); \
3088
3088
  goto error; \
3089
3089
  }
@@ -0,0 +1,118 @@
1
+ [build-system]
2
+ requires = ["build", "setuptools>=61.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "singlestoredb"
7
+ version = "1.16.0"
8
+ description = "Interface to the SingleStoreDB database and workspace management APIs"
9
+ readme = {file = "README.md", content-type = "text/markdown"}
10
+ license = {text = "Apache-2.0"}
11
+ authors = [
12
+ {name = "SingleStore", email = "support@singlestore.com"}
13
+ ]
14
+ requires-python = ">=3.9"
15
+ classifiers = [
16
+ "Development Status :: 5 - Production/Stable",
17
+ "Programming Language :: Python :: 3",
18
+ "Programming Language :: Python :: 3 :: Only",
19
+ "Topic :: Database",
20
+ ]
21
+ dependencies = [
22
+ "PyJWT",
23
+ "parsimonious",
24
+ "requests",
25
+ "sqlparams",
26
+ "tomli>=1.1.0; python_version < '3.11'",
27
+ "typing-extensions<=4.13.2; python_version < '3.11'",
28
+ ]
29
+
30
+ [project.urls]
31
+ Homepage = "https://github.com/singlestore-labs/singlestoredb-python"
32
+
33
+ [project.optional-dependencies]
34
+ dataframe = ["ibis-singlestoredb"]
35
+ dbt = ["dbt-singlestore"]
36
+ docker = ["docker"]
37
+ ed22519 = ["PyNaCl>=1.4.0"]
38
+ gssapi = ["gssapi"]
39
+ ibis = ["ibis-singlestoredb"]
40
+ kerberos = ["gssapi"]
41
+ pytest = ["pytest"]
42
+ rsa = ["cryptography"]
43
+ sqlalchemy = ["sqlalchemy-singlestoredb>=1.0.0"]
44
+ vectorstore = ["singlestore-vectorstore>=0.1.2"]
45
+
46
+ # Development dependency groups
47
+ test = [
48
+ "coverage",
49
+ "dash",
50
+ "fastapi",
51
+ "ipython",
52
+ "jupysql",
53
+ "pandas",
54
+ "parameterized",
55
+ "polars",
56
+ "pyarrow",
57
+ "pydantic",
58
+ "pytest",
59
+ "pytest-cov",
60
+ "singlestore-vectorstore>=0.1.2",
61
+ "uvicorn",
62
+ ]
63
+ docs = [
64
+ "sphinx",
65
+ "sphinx_rtd_theme",
66
+ ]
67
+ build = [
68
+ "build",
69
+ "setuptools>=61.0",
70
+ "wheel",
71
+ ]
72
+ dev = [
73
+ "singlestoredb[test,docs,build]",
74
+ ]
75
+
76
+ [project.entry-points.pytest11]
77
+ singlestoredb = "singlestoredb.pytest"
78
+
79
+ [tool.setuptools]
80
+ include-package-data = true
81
+
82
+ [tool.setuptools.packages.find]
83
+ exclude = ["docs*", "resources*", "examples*", "licenses*"]
84
+
85
+ [tool.setuptools.package-data]
86
+ "*" = ["*.typed", "*.sql", "*.csv", "*.ipynb"]
87
+
88
+ [tool.pytest.ini_options]
89
+ markers = [
90
+ "management",
91
+ ]
92
+
93
+ [tool.mypy]
94
+ check_untyped_defs = true
95
+ disallow_any_generics = true
96
+ disallow_incomplete_defs = true
97
+ disallow_untyped_defs = true
98
+ no_implicit_optional = true
99
+ warn_redundant_casts = true
100
+ warn_unused_ignores = false
101
+
102
+ [[tool.mypy.overrides]]
103
+ module = "testing.*"
104
+ disallow_untyped_defs = false
105
+
106
+ [[tool.mypy.overrides]]
107
+ module = "tests.*"
108
+ disallow_untyped_defs = false
109
+
110
+ [tool.coverage.run]
111
+ source_pkgs = ["singlestoredb"]
112
+
113
+ [tool.coverage.report]
114
+ omit = [
115
+ "setup.py",
116
+ "*/tests/*",
117
+ "*/docs/*",
118
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -13,7 +13,7 @@ Examples
13
13
 
14
14
  """
15
15
 
16
- __version__ = '1.15.7'
16
+ __version__ = '1.16.0'
17
17
 
18
18
  from typing import Any
19
19
 
@@ -0,0 +1,2 @@
1
+ from .chat import SingleStoreChatFactory # noqa: F401
2
+ from .embeddings import SingleStoreEmbeddingsFactory # noqa: F401
@@ -29,44 +29,6 @@ from botocore import UNSIGNED
29
29
  from botocore.config import Config
30
30
 
31
31
 
32
- class SingleStoreChatOpenAI(ChatOpenAI):
33
- def __init__(self, model_name: str, api_key: Optional[str] = None, **kwargs: Any):
34
- inference_api_manger = (
35
- manage_workspaces().organizations.current.inference_apis
36
- )
37
- info = inference_api_manger.get(model_name=model_name)
38
- token = (
39
- api_key
40
- if api_key is not None
41
- else os.environ.get('SINGLESTOREDB_USER_TOKEN')
42
- )
43
- super().__init__(
44
- base_url=info.connection_url,
45
- api_key=token,
46
- model=model_name,
47
- **kwargs,
48
- )
49
-
50
-
51
- class SingleStoreChat(ChatOpenAI):
52
- def __init__(self, model_name: str, api_key: Optional[str] = None, **kwargs: Any):
53
- inference_api_manger = (
54
- manage_workspaces().organizations.current.inference_apis
55
- )
56
- info = inference_api_manger.get(model_name=model_name)
57
- token = (
58
- api_key
59
- if api_key is not None
60
- else os.environ.get('SINGLESTOREDB_USER_TOKEN')
61
- )
62
- super().__init__(
63
- base_url=info.connection_url,
64
- api_key=token,
65
- model=model_name,
66
- **kwargs,
67
- )
68
-
69
-
70
32
  def SingleStoreChatFactory(
71
33
  model_name: str,
72
34
  api_key: Optional[str] = None,
@@ -90,9 +52,27 @@ def SingleStoreChatFactory(
90
52
  'signature_version': UNSIGNED,
91
53
  'retries': {'max_attempts': 1, 'mode': 'standard'},
92
54
  }
93
- if http_client is not None and http_client.timeout is not None:
94
- cfg_kwargs['read_timeout'] = http_client.timeout
95
- cfg_kwargs['connect_timeout'] = http_client.timeout
55
+ # Extract timeouts from http_client if provided
56
+ t = http_client.timeout if http_client is not None else None
57
+ connect_timeout = None
58
+ read_timeout = None
59
+ if t is not None:
60
+ if isinstance(t, httpx.Timeout):
61
+ if t.connect is not None:
62
+ connect_timeout = float(t.connect)
63
+ if t.read is not None:
64
+ read_timeout = float(t.read)
65
+ if connect_timeout is None and read_timeout is not None:
66
+ connect_timeout = read_timeout
67
+ if read_timeout is None and connect_timeout is not None:
68
+ read_timeout = connect_timeout
69
+ elif isinstance(t, (int, float)):
70
+ connect_timeout = float(t)
71
+ read_timeout = float(t)
72
+ if read_timeout is not None:
73
+ cfg_kwargs['read_timeout'] = read_timeout
74
+ if connect_timeout is not None:
75
+ cfg_kwargs['connect_timeout'] = connect_timeout
96
76
 
97
77
  cfg = Config(**cfg_kwargs)
98
78
  client = boto3.client(
@@ -29,21 +29,6 @@ from botocore import UNSIGNED
29
29
  from botocore.config import Config
30
30
 
31
31
 
32
- class SingleStoreEmbeddings(OpenAIEmbeddings):
33
-
34
- def __init__(self, model_name: str, **kwargs: Any):
35
- inference_api_manger = (
36
- manage_workspaces().organizations.current.inference_apis
37
- )
38
- info = inference_api_manger.get(model_name=model_name)
39
- super().__init__(
40
- base_url=info.connection_url,
41
- api_key=os.environ.get('SINGLESTOREDB_USER_TOKEN'),
42
- model=model_name,
43
- **kwargs,
44
- )
45
-
46
-
47
32
  def SingleStoreEmbeddingsFactory(
48
33
  model_name: str,
49
34
  api_key: Optional[str] = None,
@@ -66,9 +51,27 @@ def SingleStoreEmbeddingsFactory(
66
51
  'signature_version': UNSIGNED,
67
52
  'retries': {'max_attempts': 1, 'mode': 'standard'},
68
53
  }
69
- if http_client is not None and http_client.timeout is not None:
70
- cfg_kwargs['read_timeout'] = http_client.timeout
71
- cfg_kwargs['connect_timeout'] = http_client.timeout
54
+ # Extract timeouts from http_client if provided
55
+ t = http_client.timeout if http_client is not None else None
56
+ connect_timeout = None
57
+ read_timeout = None
58
+ if t is not None:
59
+ if isinstance(t, httpx.Timeout):
60
+ if t.connect is not None:
61
+ connect_timeout = float(t.connect)
62
+ if t.read is not None:
63
+ read_timeout = float(t.read)
64
+ if connect_timeout is None and read_timeout is not None:
65
+ connect_timeout = read_timeout
66
+ if read_timeout is None and connect_timeout is not None:
67
+ read_timeout = connect_timeout
68
+ elif isinstance(t, (int, float)):
69
+ connect_timeout = float(t)
70
+ read_timeout = float(t)
71
+ if read_timeout is not None:
72
+ cfg_kwargs['read_timeout'] = read_timeout
73
+ if connect_timeout is not None:
74
+ cfg_kwargs['connect_timeout'] = connect_timeout
72
75
 
73
76
  cfg = Config(**cfg_kwargs)
74
77
  client = boto3.client(
@@ -9,15 +9,15 @@ import re
9
9
  import sys
10
10
  import warnings
11
11
  import weakref
12
+ from collections.abc import Iterator
12
13
  from collections.abc import Mapping
13
14
  from collections.abc import MutableMapping
15
+ from collections.abc import Sequence
14
16
  from typing import Any
15
17
  from typing import Callable
16
18
  from typing import Dict
17
- from typing import Iterator
18
19
  from typing import List
19
20
  from typing import Optional
20
- from typing import Sequence
21
21
  from typing import Tuple
22
22
  from typing import Union
23
23
  from urllib.parse import parse_qs
@@ -48,15 +48,15 @@ import urllib
48
48
  import uuid
49
49
  import zipfile
50
50
  import zipimport
51
+ from collections.abc import Awaitable
52
+ from collections.abc import Iterable
53
+ from collections.abc import Sequence
51
54
  from types import ModuleType
52
55
  from typing import Any
53
- from typing import Awaitable
54
56
  from typing import Callable
55
57
  from typing import Dict
56
- from typing import Iterable
57
58
  from typing import List
58
59
  from typing import Optional
59
- from typing import Sequence
60
60
  from typing import Set
61
61
  from typing import Tuple
62
62
  from typing import Union
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env python3
2
2
  import struct
3
3
  import warnings
4
+ from collections.abc import Sequence
4
5
  from io import BytesIO
5
6
  from typing import Any
6
7
  from typing import List
7
8
  from typing import Optional
8
- from typing import Sequence
9
9
  from typing import Tuple
10
10
  from typing import TYPE_CHECKING
11
11
 
@@ -9,12 +9,12 @@ import string
9
9
  import sys
10
10
  import types
11
11
  import typing
12
+ from collections.abc import Sequence
12
13
  from typing import Any
13
14
  from typing import Callable
14
15
  from typing import Dict
15
16
  from typing import List
16
17
  from typing import Optional
17
- from typing import Sequence
18
18
  from typing import Tuple
19
19
  from typing import TypeVar
20
20
  from typing import Union
@@ -1,5 +1,5 @@
1
+ from collections.abc import Iterable
1
2
  from typing import Any
2
- from typing import Iterable
3
3
  from typing import Tuple
4
4
  from typing import TypeVar
5
5
 
@@ -4,10 +4,10 @@ import struct
4
4
  import sys
5
5
  import types
6
6
  import typing
7
+ from collections.abc import Iterable
7
8
  from enum import Enum
8
9
  from typing import Any
9
10
  from typing import Dict
10
- from typing import Iterable
11
11
  from typing import Tuple
12
12
  from typing import Union
13
13
 
@@ -5,10 +5,10 @@ import os
5
5
  import re
6
6
  import sys
7
7
  import textwrap
8
+ from collections.abc import Iterable
8
9
  from typing import Any
9
10
  from typing import Callable
10
11
  from typing import Dict
11
- from typing import Iterable
12
12
  from typing import List
13
13
  from typing import Optional
14
14
  from typing import Set
@@ -2,8 +2,8 @@
2
2
  from __future__ import annotations
3
3
 
4
4
  import re
5
+ from collections.abc import Iterable
5
6
  from typing import Any
6
- from typing import Iterable
7
7
  from typing import List
8
8
  from typing import Optional
9
9
  from typing import Tuple
@@ -10,13 +10,13 @@ import os
10
10
  import re
11
11
  import time
12
12
  from base64 import b64decode
13
+ from collections.abc import Iterable
14
+ from collections.abc import Sequence
13
15
  from typing import Any
14
16
  from typing import Callable
15
17
  from typing import Dict
16
- from typing import Iterable
17
18
  from typing import List
18
19
  from typing import Optional
19
- from typing import Sequence
20
20
  from typing import Tuple
21
21
  from typing import Union
22
22
  from urllib.parse import urljoin
@@ -15,6 +15,7 @@ import requests
15
15
 
16
16
  from .. import config
17
17
  from ..exceptions import ManagementError
18
+ from ..exceptions import OperationalError
18
19
  from .utils import get_token
19
20
 
20
21
 
@@ -310,3 +311,63 @@ class Manager(object):
310
311
  out = getattr(self, f'get_{self.obj_type}')(out.id)
311
312
 
312
313
  return out
314
+
315
+ def _wait_on_endpoint(
316
+ self,
317
+ out: Any,
318
+ interval: int = 10,
319
+ timeout: int = 300,
320
+ ) -> Any:
321
+ """
322
+ Wait for the endpoint to be ready by attempting to connect.
323
+
324
+ Parameters
325
+ ----------
326
+ out : Any
327
+ Workspace object with a connect method
328
+ interval : int, optional
329
+ Interval between each connection attempt (default: 10 seconds)
330
+ timeout : int, optional
331
+ Maximum time to wait before raising an exception (default: 300 seconds)
332
+
333
+ Raises
334
+ ------
335
+ ManagementError
336
+ If timeout is reached or endpoint is not available
337
+
338
+ Returns
339
+ -------
340
+ Same object type as `out`
341
+
342
+ """
343
+ # Only wait if workload type is set which means we are in the
344
+ # notebook environment. Outside of the environment, the endpoint
345
+ # may not be reachable directly.
346
+ if not os.environ.get('SINGLESTOREDB_WORKLOAD_TYPE', ''):
347
+ return out
348
+
349
+ if not hasattr(out, 'connect') or not out.connect:
350
+ raise ManagementError(
351
+ msg=f'{type(out).__name__} object does not have a valid endpoint',
352
+ )
353
+
354
+ while True:
355
+ try:
356
+ # Try to establish a connection to the endpoint using context manager
357
+ with out.connect(connect_timeout=5):
358
+ pass
359
+ except Exception as exc:
360
+ # If we get an 'access denied' error, that means that the server is
361
+ # up and we just aren't authenticating.
362
+ if isinstance(exc, OperationalError) and exc.errno == 1045:
363
+ break
364
+ # If connection fails, check timeout and retry
365
+ if timeout <= 0:
366
+ raise ManagementError(
367
+ msg=f'Exceeded waiting time for {self.obj_type} endpoint '
368
+ 'to become ready',
369
+ )
370
+ time.sleep(interval)
371
+ timeout -= interval
372
+
373
+ return out
@@ -6,11 +6,11 @@ import itertools
6
6
  import os
7
7
  import re
8
8
  import sys
9
+ from collections.abc import Mapping
9
10
  from typing import Any
10
11
  from typing import Callable
11
12
  from typing import Dict
12
13
  from typing import List
13
- from typing import Mapping
14
14
  from typing import Optional
15
15
  from typing import SupportsIndex
16
16
  from typing import Tuple
@@ -1794,6 +1794,12 @@ class WorkspaceManager(Manager):
1794
1794
  interval=wait_interval,
1795
1795
  timeout=wait_timeout,
1796
1796
  )
1797
+ # After workspace is active, wait for endpoint to be ready
1798
+ out = self._wait_on_endpoint(
1799
+ out,
1800
+ interval=wait_interval,
1801
+ timeout=wait_timeout,
1802
+ )
1797
1803
  return out
1798
1804
 
1799
1805
  def get_workspace_group(self, id: str) -> WorkspaceGroup:
@@ -13,9 +13,9 @@ import struct
13
13
  import sys
14
14
  import traceback
15
15
  import warnings
16
+ from collections.abc import Iterable
16
17
  from typing import Any
17
18
  from typing import Dict
18
- from typing import Iterable
19
19
 
20
20
  try:
21
21
  import _singlestoredb_accel