singlestoredb 1.15.6__tar.gz → 1.15.8__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.6/singlestoredb.egg-info → singlestoredb-1.15.8}/PKG-INFO +1 -1
  2. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/setup.cfg +1 -1
  3. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/__init__.py +1 -1
  4. singlestoredb-1.15.8/singlestoredb/ai/__init__.py +5 -0
  5. singlestoredb-1.15.8/singlestoredb/ai/chat.py +177 -0
  6. singlestoredb-1.15.8/singlestoredb/ai/embeddings.py +143 -0
  7. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/management/inference_api.py +4 -0
  8. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_management.py +32 -24
  9. {singlestoredb-1.15.6 → singlestoredb-1.15.8/singlestoredb.egg-info}/PKG-INFO +1 -1
  10. singlestoredb-1.15.6/singlestoredb/ai/__init__.py +0 -2
  11. singlestoredb-1.15.6/singlestoredb/ai/chat.py +0 -40
  12. singlestoredb-1.15.6/singlestoredb/ai/embeddings.py +0 -27
  13. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/LICENSE +0 -0
  14. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/README.md +0 -0
  15. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/accel.c +0 -0
  16. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/setup.py +0 -0
  17. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/alchemy/__init__.py +0 -0
  18. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/apps/__init__.py +0 -0
  19. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/apps/_cloud_functions.py +0 -0
  20. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/apps/_config.py +0 -0
  21. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/apps/_connection_info.py +0 -0
  22. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/apps/_dashboards.py +0 -0
  23. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/apps/_process.py +0 -0
  24. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/apps/_python_udfs.py +0 -0
  25. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/apps/_stdout_supress.py +0 -0
  26. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/apps/_uvicorn_util.py +0 -0
  27. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/auth.py +0 -0
  28. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/config.py +0 -0
  29. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/connection.py +0 -0
  30. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/converters.py +0 -0
  31. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/__init__.py +0 -0
  32. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/attrdoc.py +0 -0
  33. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/common.py +0 -0
  34. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/epydoc.py +0 -0
  35. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/google.py +0 -0
  36. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/numpydoc.py +0 -0
  37. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/parser.py +0 -0
  38. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/py.typed +0 -0
  39. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/rest.py +0 -0
  40. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/tests/__init__.py +0 -0
  41. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/tests/_pydoctor.py +0 -0
  42. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/tests/test_epydoc.py +0 -0
  43. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/tests/test_google.py +0 -0
  44. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/tests/test_numpydoc.py +0 -0
  45. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/tests/test_parse_from_object.py +0 -0
  46. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/tests/test_parser.py +0 -0
  47. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/tests/test_rest.py +0 -0
  48. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/tests/test_util.py +0 -0
  49. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/docstring/util.py +0 -0
  50. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/exceptions.py +0 -0
  51. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/__init__.py +0 -0
  52. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/decorator.py +0 -0
  53. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/dtypes.py +0 -0
  54. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/ext/__init__.py +0 -0
  55. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/ext/arrow.py +0 -0
  56. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/ext/asgi.py +0 -0
  57. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/ext/json.py +0 -0
  58. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/ext/mmap.py +0 -0
  59. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/ext/rowdat_1.py +0 -0
  60. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/ext/timer.py +0 -0
  61. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/ext/utils.py +0 -0
  62. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/signature.py +0 -0
  63. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/typing/__init__.py +0 -0
  64. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/typing/numpy.py +0 -0
  65. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/typing/pandas.py +0 -0
  66. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/typing/polars.py +0 -0
  67. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/typing/pyarrow.py +0 -0
  68. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/functions/utils.py +0 -0
  69. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/__init__.py +0 -0
  70. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/graphql.py +0 -0
  71. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/handler.py +0 -0
  72. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/handlers/__init__.py +0 -0
  73. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/handlers/export.py +0 -0
  74. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/handlers/files.py +0 -0
  75. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/handlers/job.py +0 -0
  76. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/handlers/models.py +0 -0
  77. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/handlers/stage.py +0 -0
  78. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/handlers/utils.py +0 -0
  79. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/handlers/workspace.py +0 -0
  80. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/registry.py +0 -0
  81. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/fusion/result.py +0 -0
  82. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/http/__init__.py +0 -0
  83. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/http/connection.py +0 -0
  84. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/magics/__init__.py +0 -0
  85. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/magics/run_personal.py +0 -0
  86. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/magics/run_shared.py +0 -0
  87. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/management/__init__.py +0 -0
  88. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/management/billing_usage.py +0 -0
  89. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/management/cluster.py +0 -0
  90. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/management/export.py +0 -0
  91. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/management/files.py +0 -0
  92. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/management/job.py +0 -0
  93. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/management/manager.py +0 -0
  94. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/management/organization.py +0 -0
  95. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/management/region.py +0 -0
  96. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/management/utils.py +0 -0
  97. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/management/workspace.py +0 -0
  98. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/__init__.py +0 -0
  99. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/_auth.py +0 -0
  100. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/charset.py +0 -0
  101. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/connection.py +0 -0
  102. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/constants/CLIENT.py +0 -0
  103. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/constants/COMMAND.py +0 -0
  104. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/constants/CR.py +0 -0
  105. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/constants/ER.py +0 -0
  106. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/constants/EXTENDED_TYPE.py +0 -0
  107. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/constants/FIELD_TYPE.py +0 -0
  108. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/constants/FLAG.py +0 -0
  109. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/constants/SERVER_STATUS.py +0 -0
  110. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/constants/VECTOR_TYPE.py +0 -0
  111. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/constants/__init__.py +0 -0
  112. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/converters.py +0 -0
  113. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/cursors.py +0 -0
  114. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/err.py +0 -0
  115. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/optionfile.py +0 -0
  116. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/protocol.py +0 -0
  117. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/__init__.py +0 -0
  118. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/base.py +0 -0
  119. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/conftest.py +0 -0
  120. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/test_DictCursor.py +0 -0
  121. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/test_SSCursor.py +0 -0
  122. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/test_basic.py +0 -0
  123. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/test_connection.py +0 -0
  124. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/test_converters.py +0 -0
  125. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/test_cursor.py +0 -0
  126. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/test_err.py +0 -0
  127. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/test_issues.py +0 -0
  128. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/test_load_local.py +0 -0
  129. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/test_nextset.py +0 -0
  130. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/test_optionfile.py +0 -0
  131. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/thirdparty/__init__.py +0 -0
  132. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/__init__.py +0 -0
  133. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/capabilities.py +0 -0
  134. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/dbapi20.py +0 -0
  135. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_capabilities.py +0 -0
  136. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_dbapi20.py +0 -0
  137. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_nonstandard.py +0 -0
  138. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/mysql/times.py +0 -0
  139. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/notebook/__init__.py +0 -0
  140. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/notebook/_objects.py +0 -0
  141. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/notebook/_portal.py +0 -0
  142. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/py.typed +0 -0
  143. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/pytest.py +0 -0
  144. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/server/__init__.py +0 -0
  145. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/server/docker.py +0 -0
  146. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/server/free_tier.py +0 -0
  147. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/__init__.py +0 -0
  148. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/alltypes.sql +0 -0
  149. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/alltypes_no_nulls.sql +0 -0
  150. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/empty.sql +0 -0
  151. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/ext_funcs/__init__.py +0 -0
  152. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/local_infile.csv +0 -0
  153. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test.ipynb +0 -0
  154. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test.sql +0 -0
  155. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test2.ipynb +0 -0
  156. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test2.sql +0 -0
  157. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_basics.py +0 -0
  158. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_config.py +0 -0
  159. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_connection.py +0 -0
  160. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_dbapi.py +0 -0
  161. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_exceptions.py +0 -0
  162. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_ext_func.py +0 -0
  163. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_ext_func_data.py +0 -0
  164. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_fusion.py +0 -0
  165. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_http.py +0 -0
  166. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_plugin.py +0 -0
  167. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_results.py +0 -0
  168. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_types.py +0 -0
  169. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_udf.py +0 -0
  170. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_udf_returns.py +0 -0
  171. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_vectorstore.py +0 -0
  172. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/test_xdict.py +0 -0
  173. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/tests/utils.py +0 -0
  174. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/types.py +0 -0
  175. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/utils/__init__.py +0 -0
  176. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/utils/config.py +0 -0
  177. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/utils/convert_rows.py +0 -0
  178. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/utils/debug.py +0 -0
  179. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/utils/dtypes.py +0 -0
  180. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/utils/events.py +0 -0
  181. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/utils/mogrify.py +0 -0
  182. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/utils/results.py +0 -0
  183. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/utils/xdict.py +0 -0
  184. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb/vectorstore.py +0 -0
  185. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb.egg-info/SOURCES.txt +0 -0
  186. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb.egg-info/dependency_links.txt +0 -0
  187. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb.egg-info/entry_points.txt +0 -0
  188. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb.egg-info/requires.txt +0 -0
  189. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/singlestoredb.egg-info/top_level.txt +0 -0
  190. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/sqlx/__init__.py +0 -0
  191. {singlestoredb-1.15.6 → singlestoredb-1.15.8}/sqlx/magic.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: singlestoredb
3
- Version: 1.15.6
3
+ Version: 1.15.8
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
1
  [metadata]
2
2
  name = singlestoredb
3
- version = 1.15.6
3
+ version = 1.15.8
4
4
  description = Interface to the SingleStoreDB database and workspace management APIs
5
5
  long_description = file: README.md
6
6
  long_description_content_type = text/markdown
@@ -13,7 +13,7 @@ Examples
13
13
 
14
14
  """
15
15
 
16
- __version__ = '1.15.6'
16
+ __version__ = '1.15.8'
17
17
 
18
18
  from typing import Any
19
19
 
@@ -0,0 +1,5 @@
1
+ from .chat import SingleStoreChat # noqa: F401
2
+ from .chat import SingleStoreChatFactory # noqa: F401
3
+ from .chat import SingleStoreChatOpenAI # noqa: F401
4
+ from .embeddings import SingleStoreEmbeddings # noqa: F401
5
+ from .embeddings import SingleStoreEmbeddingsFactory # noqa: F401
@@ -0,0 +1,177 @@
1
+ import os
2
+ from typing import Any
3
+ from typing import Callable
4
+ from typing import Optional
5
+ from typing import Union
6
+
7
+ import httpx
8
+
9
+ from singlestoredb import manage_workspaces
10
+
11
+ try:
12
+ from langchain_openai import ChatOpenAI
13
+ except ImportError:
14
+ raise ImportError(
15
+ 'Could not import langchain_openai python package. '
16
+ 'Please install it with `pip install langchain_openai`.',
17
+ )
18
+
19
+ try:
20
+ from langchain_aws import ChatBedrockConverse
21
+ except ImportError:
22
+ raise ImportError(
23
+ 'Could not import langchain-aws python package. '
24
+ 'Please install it with `pip install langchain-aws`.',
25
+ )
26
+
27
+ import boto3
28
+ from botocore import UNSIGNED
29
+ from botocore.config import Config
30
+
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
+ def SingleStoreChatFactory(
71
+ model_name: str,
72
+ api_key: Optional[str] = None,
73
+ streaming: bool = True,
74
+ http_client: Optional[httpx.Client] = None,
75
+ obo_token_getter: Optional[Callable[[], Optional[str]]] = None,
76
+ **kwargs: Any,
77
+ ) -> Union[ChatOpenAI, ChatBedrockConverse]:
78
+ """Return a chat model instance (ChatOpenAI or ChatBedrockConverse).
79
+ """
80
+ inference_api_manager = (
81
+ manage_workspaces().organizations.current.inference_apis
82
+ )
83
+ info = inference_api_manager.get(model_name=model_name)
84
+ token_env = os.environ.get('SINGLESTOREDB_USER_TOKEN')
85
+ token = api_key if api_key is not None else token_env
86
+
87
+ if info.hosting_platform == 'Amazon':
88
+ # Instantiate Bedrock client
89
+ cfg_kwargs = {
90
+ 'signature_version': UNSIGNED,
91
+ 'retries': {'max_attempts': 1, 'mode': 'standard'},
92
+ }
93
+ # Extract timeouts from http_client if provided
94
+ t = http_client.timeout if http_client is not None else None
95
+ connect_timeout = None
96
+ read_timeout = None
97
+ if t is not None:
98
+ if isinstance(t, httpx.Timeout):
99
+ if t.connect is not None:
100
+ connect_timeout = float(t.connect)
101
+ if t.read is not None:
102
+ read_timeout = float(t.read)
103
+ if connect_timeout is None and read_timeout is not None:
104
+ connect_timeout = read_timeout
105
+ if read_timeout is None and connect_timeout is not None:
106
+ read_timeout = connect_timeout
107
+ elif isinstance(t, (int, float)):
108
+ connect_timeout = float(t)
109
+ read_timeout = float(t)
110
+ if read_timeout is not None:
111
+ cfg_kwargs['read_timeout'] = read_timeout
112
+ if connect_timeout is not None:
113
+ cfg_kwargs['connect_timeout'] = connect_timeout
114
+
115
+ cfg = Config(**cfg_kwargs)
116
+ client = boto3.client(
117
+ 'bedrock-runtime',
118
+ endpoint_url=info.connection_url,
119
+ region_name='us-east-1',
120
+ aws_access_key_id='placeholder',
121
+ aws_secret_access_key='placeholder',
122
+ config=cfg,
123
+ )
124
+
125
+ def _inject_headers(request: Any, **_ignored: Any) -> None:
126
+ """Inject dynamic auth/OBO headers prior to Bedrock sending."""
127
+ if obo_token_getter is not None:
128
+ obo_val = obo_token_getter()
129
+ if obo_val:
130
+ request.headers['X-S2-OBO'] = obo_val
131
+ if token:
132
+ request.headers['Authorization'] = f'Bearer {token}'
133
+ request.headers.pop('X-Amz-Date', None)
134
+ request.headers.pop('X-Amz-Security-Token', None)
135
+
136
+ emitter = client._endpoint._event_emitter
137
+ emitter.register_first(
138
+ 'before-send.bedrock-runtime.Converse',
139
+ _inject_headers,
140
+ )
141
+ emitter.register_first(
142
+ 'before-send.bedrock-runtime.ConverseStream',
143
+ _inject_headers,
144
+ )
145
+ emitter.register_first(
146
+ 'before-send.bedrock-runtime.InvokeModel',
147
+ _inject_headers,
148
+ )
149
+ emitter.register_first(
150
+ 'before-send.bedrock-runtime.InvokeModelWithResponseStream',
151
+ _inject_headers,
152
+ )
153
+
154
+ return ChatBedrockConverse(
155
+ model_id=model_name,
156
+ endpoint_url=info.connection_url,
157
+ region_name='us-east-1',
158
+ aws_access_key_id='placeholder',
159
+ aws_secret_access_key='placeholder',
160
+ disable_streaming=not streaming,
161
+ client=client,
162
+ **kwargs,
163
+ )
164
+
165
+ # OpenAI / Azure OpenAI path
166
+ openai_kwargs = dict(
167
+ base_url=info.connection_url,
168
+ api_key=token,
169
+ model=model_name,
170
+ streaming=streaming,
171
+ )
172
+ if http_client is not None:
173
+ openai_kwargs['http_client'] = http_client
174
+ return ChatOpenAI(
175
+ **openai_kwargs,
176
+ **kwargs,
177
+ )
@@ -0,0 +1,143 @@
1
+ import os
2
+ from typing import Any
3
+ from typing import Callable
4
+ from typing import Optional
5
+ from typing import Union
6
+
7
+ import httpx
8
+
9
+ from singlestoredb import manage_workspaces
10
+
11
+ try:
12
+ from langchain_openai import OpenAIEmbeddings
13
+ except ImportError:
14
+ raise ImportError(
15
+ 'Could not import langchain_openai python package. '
16
+ 'Please install it with `pip install langchain_openai`.',
17
+ )
18
+
19
+ try:
20
+ from langchain_aws import BedrockEmbeddings
21
+ except ImportError:
22
+ raise ImportError(
23
+ 'Could not import langchain-aws python package. '
24
+ 'Please install it with `pip install langchain-aws`.',
25
+ )
26
+
27
+ import boto3
28
+ from botocore import UNSIGNED
29
+ from botocore.config import Config
30
+
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
+ def SingleStoreEmbeddingsFactory(
48
+ model_name: str,
49
+ api_key: Optional[str] = None,
50
+ http_client: Optional[httpx.Client] = None,
51
+ obo_token_getter: Optional[Callable[[], Optional[str]]] = None,
52
+ **kwargs: Any,
53
+ ) -> Union[OpenAIEmbeddings, BedrockEmbeddings]:
54
+ """Return an embeddings model instance (OpenAIEmbeddings or BedrockEmbeddings).
55
+ """
56
+ inference_api_manager = (
57
+ manage_workspaces().organizations.current.inference_apis
58
+ )
59
+ info = inference_api_manager.get(model_name=model_name)
60
+ token_env = os.environ.get('SINGLESTOREDB_USER_TOKEN')
61
+ token = api_key if api_key is not None else token_env
62
+
63
+ if info.hosting_platform == 'Amazon':
64
+ # Instantiate Bedrock client
65
+ cfg_kwargs = {
66
+ 'signature_version': UNSIGNED,
67
+ 'retries': {'max_attempts': 1, 'mode': 'standard'},
68
+ }
69
+ # Extract timeouts from http_client if provided
70
+ t = http_client.timeout if http_client is not None else None
71
+ connect_timeout = None
72
+ read_timeout = None
73
+ if t is not None:
74
+ if isinstance(t, httpx.Timeout):
75
+ if t.connect is not None:
76
+ connect_timeout = float(t.connect)
77
+ if t.read is not None:
78
+ read_timeout = float(t.read)
79
+ if connect_timeout is None and read_timeout is not None:
80
+ connect_timeout = read_timeout
81
+ if read_timeout is None and connect_timeout is not None:
82
+ read_timeout = connect_timeout
83
+ elif isinstance(t, (int, float)):
84
+ connect_timeout = float(t)
85
+ read_timeout = float(t)
86
+ if read_timeout is not None:
87
+ cfg_kwargs['read_timeout'] = read_timeout
88
+ if connect_timeout is not None:
89
+ cfg_kwargs['connect_timeout'] = connect_timeout
90
+
91
+ cfg = Config(**cfg_kwargs)
92
+ client = boto3.client(
93
+ 'bedrock-runtime',
94
+ endpoint_url=info.connection_url,
95
+ region_name='us-east-1',
96
+ aws_access_key_id='placeholder',
97
+ aws_secret_access_key='placeholder',
98
+ config=cfg,
99
+ )
100
+
101
+ def _inject_headers(request: Any, **_ignored: Any) -> None:
102
+ """Inject dynamic auth/OBO headers prior to Bedrock sending."""
103
+ if obo_token_getter is not None:
104
+ obo_val = obo_token_getter()
105
+ if obo_val:
106
+ request.headers['X-S2-OBO'] = obo_val
107
+ if token:
108
+ request.headers['Authorization'] = f'Bearer {token}'
109
+ request.headers.pop('X-Amz-Date', None)
110
+ request.headers.pop('X-Amz-Security-Token', None)
111
+
112
+ emitter = client._endpoint._event_emitter
113
+ emitter.register_first(
114
+ 'before-send.bedrock-runtime.InvokeModel',
115
+ _inject_headers,
116
+ )
117
+ emitter.register_first(
118
+ 'before-send.bedrock-runtime.InvokeModelWithResponseStream',
119
+ _inject_headers,
120
+ )
121
+
122
+ return BedrockEmbeddings(
123
+ model_id=model_name,
124
+ endpoint_url=info.connection_url,
125
+ region_name='us-east-1',
126
+ aws_access_key_id='placeholder',
127
+ aws_secret_access_key='placeholder',
128
+ client=client,
129
+ **kwargs,
130
+ )
131
+
132
+ # OpenAI / Azure OpenAI path
133
+ openai_kwargs = dict(
134
+ base_url=info.connection_url,
135
+ api_key=token,
136
+ model=model_name,
137
+ )
138
+ if http_client is not None:
139
+ openai_kwargs['http_client'] = http_client
140
+ return OpenAIEmbeddings(
141
+ **openai_kwargs,
142
+ **kwargs,
143
+ )
@@ -23,6 +23,7 @@ class InferenceAPIInfo(object):
23
23
  name: str
24
24
  connection_url: str
25
25
  project_id: str
26
+ hosting_platform: str
26
27
 
27
28
  def __init__(
28
29
  self,
@@ -31,12 +32,14 @@ class InferenceAPIInfo(object):
31
32
  name: str,
32
33
  connection_url: str,
33
34
  project_id: str,
35
+ hosting_platform: str,
34
36
  ):
35
37
  self.service_id = service_id
36
38
  self.connection_url = connection_url
37
39
  self.model_name = model_name
38
40
  self.name = name
39
41
  self.project_id = project_id
42
+ self.hosting_platform = hosting_platform
40
43
 
41
44
  @classmethod
42
45
  def from_dict(
@@ -62,6 +65,7 @@ class InferenceAPIInfo(object):
62
65
  model_name=obj['modelName'],
63
66
  name=obj['name'],
64
67
  connection_url=obj['connectionURL'],
68
+ hosting_platform=obj['hostingPlatform'],
65
69
  )
66
70
  return out
67
71
 
@@ -873,12 +873,20 @@ class TestStage(unittest.TestCase):
873
873
  def test_file_object(self):
874
874
  st = self.wg.stage
875
875
 
876
- st.mkdir('obj_test')
877
- st.mkdir('obj_test/nest_1')
876
+ obj_test_dir = f'obj_test_{id(self)}'
878
877
 
879
- f1 = st.upload_file(TEST_DIR / 'test.sql', 'obj_test.sql')
880
- f2 = st.upload_file(TEST_DIR / 'test.sql', 'obj_test/nest_1/obj_test.sql')
881
- d2 = st.info('obj_test/nest_1/')
878
+ st.mkdir(obj_test_dir)
879
+ st.mkdir(f'{obj_test_dir}/nest_1')
880
+
881
+ obj_test_sql = f'obj_test_{id(self)}.sql'
882
+ obj_test_2_sql = f'obj_test_2_{id(self)}.sql'
883
+
884
+ f1 = st.upload_file(TEST_DIR / 'test.sql', obj_test_sql)
885
+ f2 = st.upload_file(
886
+ TEST_DIR / 'test.sql',
887
+ f'{obj_test_dir}/nest_1/{obj_test_sql}',
888
+ )
889
+ d2 = st.info(f'{obj_test_dir}/nest_1/')
882
890
 
883
891
  # is_file / is_dir
884
892
  assert not f1.is_dir()
@@ -889,17 +897,17 @@ class TestStage(unittest.TestCase):
889
897
  assert not d2.is_file()
890
898
 
891
899
  # abspath / basename / dirname / exists
892
- assert f1.abspath() == 'obj_test.sql'
893
- assert f1.basename() == 'obj_test.sql'
900
+ assert f1.abspath() == obj_test_sql
901
+ assert f1.basename() == obj_test_sql
894
902
  assert f1.dirname() == '/'
895
903
  assert f1.exists()
896
- assert f2.abspath() == 'obj_test/nest_1/obj_test.sql'
897
- assert f2.basename() == 'obj_test.sql'
898
- assert f2.dirname() == 'obj_test/nest_1/'
904
+ assert f2.abspath() == f'{obj_test_dir}/nest_1/{obj_test_sql}'
905
+ assert f2.basename() == obj_test_sql
906
+ assert f2.dirname() == f'{obj_test_dir}/nest_1/'
899
907
  assert f2.exists()
900
- assert d2.abspath() == 'obj_test/nest_1/'
908
+ assert d2.abspath() == f'{obj_test_dir}/nest_1/'
901
909
  assert d2.basename() == 'nest_1'
902
- assert d2.dirname() == 'obj_test/'
910
+ assert d2.dirname() == f'{obj_test_dir}/'
903
911
  assert d2.exists()
904
912
 
905
913
  # download
@@ -910,9 +918,9 @@ class TestStage(unittest.TestCase):
910
918
  with self.assertRaises(IsADirectoryError):
911
919
  d2.remove()
912
920
 
913
- assert st.is_file('obj_test.sql')
921
+ assert st.is_file(obj_test_sql)
914
922
  f1.remove()
915
- assert not st.is_file('obj_test.sql')
923
+ assert not st.is_file(obj_test_sql)
916
924
 
917
925
  # removedirs
918
926
  with self.assertRaises(NotADirectoryError):
@@ -923,8 +931,8 @@ class TestStage(unittest.TestCase):
923
931
  assert not st.exists(d2.path)
924
932
 
925
933
  # rmdir
926
- f1 = st.upload_file(TEST_DIR / 'test.sql', 'obj_test.sql')
927
- d2 = st.mkdir('obj_test/nest_1')
934
+ f1 = st.upload_file(TEST_DIR / 'test.sql', obj_test_sql)
935
+ d2 = st.mkdir(f'{obj_test_dir}/nest_1')
928
936
 
929
937
  assert st.exists(f1.path)
930
938
  assert st.exists(d2.path)
@@ -937,20 +945,20 @@ class TestStage(unittest.TestCase):
937
945
 
938
946
  d2.rmdir()
939
947
 
940
- assert not st.exists('obj_test/nest_1/')
941
- assert not st.exists('obj_test')
948
+ assert not st.exists(f'{obj_test_dir}/nest_1/')
949
+ assert not st.exists(obj_test_dir)
942
950
 
943
951
  # mtime / ctime
944
952
  assert f1.getmtime() > 0
945
953
  assert f1.getctime() > 0
946
954
 
947
955
  # rename
948
- assert st.exists('obj_test.sql')
949
- assert not st.exists('obj_test_2.sql')
950
- f1.rename('obj_test_2.sql')
951
- assert not st.exists('obj_test.sql')
952
- assert st.exists('obj_test_2.sql')
953
- assert f1.abspath() == 'obj_test_2.sql'
956
+ assert st.exists(obj_test_sql)
957
+ assert not st.exists(obj_test_2_sql)
958
+ f1.rename(obj_test_2_sql)
959
+ assert not st.exists(obj_test_sql)
960
+ assert st.exists(obj_test_2_sql)
961
+ assert f1.abspath() == obj_test_2_sql
954
962
 
955
963
 
956
964
  @pytest.mark.management
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: singlestoredb
3
- Version: 1.15.6
3
+ Version: 1.15.8
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,2 +0,0 @@
1
- from .chat import SingleStoreChatOpenAI # noqa: F401
2
- from .embeddings import SingleStoreEmbeddings # noqa: F401
@@ -1,40 +0,0 @@
1
- import os
2
- from typing import Any
3
-
4
- from singlestoredb.fusion.handlers.utils import get_workspace_manager
5
-
6
- try:
7
- from langchain_openai import ChatOpenAI
8
- except ImportError:
9
- raise ImportError(
10
- 'Could not import langchain_openai python package. '
11
- 'Please install it with `pip install langchain_openai`.',
12
- )
13
-
14
-
15
- class SingleStoreChatOpenAI(ChatOpenAI):
16
- def __init__(self, model_name: str, **kwargs: Any):
17
- inference_api_manger = (
18
- get_workspace_manager().organizations.current.inference_apis
19
- )
20
- info = inference_api_manger.get(model_name=model_name)
21
- super().__init__(
22
- base_url=info.connection_url,
23
- api_key=os.environ.get('SINGLESTOREDB_USER_TOKEN'),
24
- model=model_name,
25
- **kwargs,
26
- )
27
-
28
-
29
- class SingleStoreChat(ChatOpenAI):
30
- def __init__(self, model_name: str, **kwargs: Any):
31
- inference_api_manger = (
32
- get_workspace_manager().organizations.current.inference_apis
33
- )
34
- info = inference_api_manger.get(model_name=model_name)
35
- super().__init__(
36
- base_url=info.connection_url,
37
- api_key=os.environ.get('SINGLESTOREDB_USER_TOKEN'),
38
- model=model_name,
39
- **kwargs,
40
- )
@@ -1,27 +0,0 @@
1
- import os
2
- from typing import Any
3
-
4
- from singlestoredb.fusion.handlers.utils import get_workspace_manager
5
-
6
- try:
7
- from langchain_openai import OpenAIEmbeddings
8
- except ImportError:
9
- raise ImportError(
10
- 'Could not import langchain_openai python package. '
11
- 'Please install it with `pip install langchain_openai`.',
12
- )
13
-
14
-
15
- class SingleStoreEmbeddings(OpenAIEmbeddings):
16
-
17
- def __init__(self, model_name: str, **kwargs: Any):
18
- inference_api_manger = (
19
- get_workspace_manager().organizations.current.inference_apis
20
- )
21
- info = inference_api_manger.get(model_name=model_name)
22
- super().__init__(
23
- base_url=info.connection_url,
24
- api_key=os.environ.get('SINGLESTOREDB_USER_TOKEN'),
25
- model=model_name,
26
- **kwargs,
27
- )
File without changes
File without changes
File without changes
File without changes