singlestoredb 1.15.1__tar.gz → 1.15.3__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 (186) hide show
  1. {singlestoredb-1.15.1/singlestoredb.egg-info → singlestoredb-1.15.3}/PKG-INFO +1 -1
  2. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/accel.c +70 -22
  3. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/setup.cfg +1 -1
  4. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/__init__.py +1 -1
  5. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/apps/_python_udfs.py +18 -3
  6. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/apps/_stdout_supress.py +1 -1
  7. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/apps/_uvicorn_util.py +4 -0
  8. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/config.py +18 -0
  9. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/converters.py +1 -1
  10. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/ext/asgi.py +209 -23
  11. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/ext/timer.py +2 -11
  12. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/ext/utils.py +55 -6
  13. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_ext_func_data.py +18 -18
  14. {singlestoredb-1.15.1 → singlestoredb-1.15.3/singlestoredb.egg-info}/PKG-INFO +1 -1
  15. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/LICENSE +0 -0
  16. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/README.md +0 -0
  17. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/setup.py +0 -0
  18. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/ai/__init__.py +0 -0
  19. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/ai/chat.py +0 -0
  20. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/ai/embeddings.py +0 -0
  21. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/alchemy/__init__.py +0 -0
  22. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/apps/__init__.py +0 -0
  23. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/apps/_cloud_functions.py +0 -0
  24. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/apps/_config.py +0 -0
  25. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/apps/_connection_info.py +0 -0
  26. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/apps/_dashboards.py +0 -0
  27. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/apps/_process.py +0 -0
  28. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/auth.py +0 -0
  29. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/connection.py +0 -0
  30. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/__init__.py +0 -0
  31. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/attrdoc.py +0 -0
  32. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/common.py +0 -0
  33. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/epydoc.py +0 -0
  34. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/google.py +0 -0
  35. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/numpydoc.py +0 -0
  36. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/parser.py +0 -0
  37. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/py.typed +0 -0
  38. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/rest.py +0 -0
  39. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/tests/__init__.py +0 -0
  40. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/tests/_pydoctor.py +0 -0
  41. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/tests/test_epydoc.py +0 -0
  42. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/tests/test_google.py +0 -0
  43. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/tests/test_numpydoc.py +0 -0
  44. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/tests/test_parse_from_object.py +0 -0
  45. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/tests/test_parser.py +0 -0
  46. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/tests/test_rest.py +0 -0
  47. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/tests/test_util.py +0 -0
  48. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/docstring/util.py +0 -0
  49. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/exceptions.py +0 -0
  50. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/__init__.py +0 -0
  51. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/decorator.py +0 -0
  52. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/dtypes.py +0 -0
  53. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/ext/__init__.py +0 -0
  54. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/ext/arrow.py +0 -0
  55. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/ext/json.py +0 -0
  56. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/ext/mmap.py +0 -0
  57. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/ext/rowdat_1.py +0 -0
  58. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/signature.py +0 -0
  59. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/typing/__init__.py +0 -0
  60. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/typing/numpy.py +0 -0
  61. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/typing/pandas.py +0 -0
  62. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/typing/polars.py +0 -0
  63. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/typing/pyarrow.py +0 -0
  64. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/functions/utils.py +0 -0
  65. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/__init__.py +0 -0
  66. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/graphql.py +0 -0
  67. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/handler.py +0 -0
  68. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/handlers/__init__.py +0 -0
  69. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/handlers/export.py +0 -0
  70. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/handlers/files.py +0 -0
  71. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/handlers/job.py +0 -0
  72. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/handlers/models.py +0 -0
  73. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/handlers/stage.py +0 -0
  74. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/handlers/utils.py +0 -0
  75. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/handlers/workspace.py +0 -0
  76. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/registry.py +0 -0
  77. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/fusion/result.py +0 -0
  78. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/http/__init__.py +0 -0
  79. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/http/connection.py +0 -0
  80. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/magics/__init__.py +0 -0
  81. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/magics/run_personal.py +0 -0
  82. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/magics/run_shared.py +0 -0
  83. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/management/__init__.py +0 -0
  84. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/management/billing_usage.py +0 -0
  85. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/management/cluster.py +0 -0
  86. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/management/export.py +0 -0
  87. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/management/files.py +0 -0
  88. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/management/inference_api.py +0 -0
  89. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/management/job.py +0 -0
  90. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/management/manager.py +0 -0
  91. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/management/organization.py +0 -0
  92. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/management/region.py +0 -0
  93. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/management/utils.py +0 -0
  94. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/management/workspace.py +0 -0
  95. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/__init__.py +0 -0
  96. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/_auth.py +0 -0
  97. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/charset.py +0 -0
  98. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/connection.py +0 -0
  99. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/constants/CLIENT.py +0 -0
  100. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/constants/COMMAND.py +0 -0
  101. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/constants/CR.py +0 -0
  102. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/constants/ER.py +0 -0
  103. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/constants/EXTENDED_TYPE.py +0 -0
  104. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/constants/FIELD_TYPE.py +0 -0
  105. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/constants/FLAG.py +0 -0
  106. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/constants/SERVER_STATUS.py +0 -0
  107. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/constants/VECTOR_TYPE.py +0 -0
  108. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/constants/__init__.py +0 -0
  109. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/converters.py +0 -0
  110. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/cursors.py +0 -0
  111. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/err.py +0 -0
  112. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/optionfile.py +0 -0
  113. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/protocol.py +0 -0
  114. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/__init__.py +0 -0
  115. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/base.py +0 -0
  116. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/conftest.py +0 -0
  117. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/test_DictCursor.py +0 -0
  118. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/test_SSCursor.py +0 -0
  119. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/test_basic.py +0 -0
  120. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/test_connection.py +0 -0
  121. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/test_converters.py +0 -0
  122. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/test_cursor.py +0 -0
  123. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/test_err.py +0 -0
  124. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/test_issues.py +0 -0
  125. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/test_load_local.py +0 -0
  126. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/test_nextset.py +0 -0
  127. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/test_optionfile.py +0 -0
  128. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/thirdparty/__init__.py +0 -0
  129. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/__init__.py +0 -0
  130. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/capabilities.py +0 -0
  131. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/dbapi20.py +0 -0
  132. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_capabilities.py +0 -0
  133. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_dbapi20.py +0 -0
  134. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_nonstandard.py +0 -0
  135. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/mysql/times.py +0 -0
  136. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/notebook/__init__.py +0 -0
  137. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/notebook/_objects.py +0 -0
  138. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/notebook/_portal.py +0 -0
  139. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/py.typed +0 -0
  140. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/pytest.py +0 -0
  141. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/server/__init__.py +0 -0
  142. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/server/docker.py +0 -0
  143. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/server/free_tier.py +0 -0
  144. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/__init__.py +0 -0
  145. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/empty.sql +0 -0
  146. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/ext_funcs/__init__.py +0 -0
  147. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/local_infile.csv +0 -0
  148. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test.ipynb +0 -0
  149. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test.sql +0 -0
  150. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test2.ipynb +0 -0
  151. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test2.sql +0 -0
  152. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_basics.py +0 -0
  153. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_config.py +0 -0
  154. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_connection.py +0 -0
  155. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_dbapi.py +0 -0
  156. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_exceptions.py +0 -0
  157. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_ext_func.py +0 -0
  158. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_fusion.py +0 -0
  159. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_http.py +0 -0
  160. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_management.py +0 -0
  161. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_plugin.py +0 -0
  162. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_results.py +0 -0
  163. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_types.py +0 -0
  164. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_udf.py +0 -0
  165. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_udf_returns.py +0 -0
  166. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_vectorstore.py +0 -0
  167. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/test_xdict.py +0 -0
  168. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/tests/utils.py +0 -0
  169. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/types.py +0 -0
  170. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/utils/__init__.py +0 -0
  171. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/utils/config.py +0 -0
  172. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/utils/convert_rows.py +0 -0
  173. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/utils/debug.py +0 -0
  174. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/utils/dtypes.py +0 -0
  175. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/utils/events.py +0 -0
  176. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/utils/mogrify.py +0 -0
  177. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/utils/results.py +0 -0
  178. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/utils/xdict.py +0 -0
  179. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb/vectorstore.py +0 -0
  180. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb.egg-info/SOURCES.txt +0 -0
  181. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb.egg-info/dependency_links.txt +0 -0
  182. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb.egg-info/entry_points.txt +0 -0
  183. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb.egg-info/requires.txt +0 -0
  184. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/singlestoredb.egg-info/top_level.txt +0 -0
  185. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/sqlx/__init__.py +0 -0
  186. {singlestoredb-1.15.1 → singlestoredb-1.15.3}/sqlx/magic.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: singlestoredb
3
- Version: 1.15.1
3
+ Version: 1.15.3
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
@@ -1950,7 +1950,6 @@ static PyObject *read_row_from_packet(
1950
1950
  case ACCEL_OUT_DICTS:
1951
1951
  case ACCEL_OUT_ARROW:
1952
1952
  PyDict_SetItem(py_result, py_state->py_names[i], py_item);
1953
- Py_INCREF(py_state->py_names[i]);
1954
1953
  Py_DECREF(py_item);
1955
1954
  break;
1956
1955
  default:
@@ -2678,8 +2677,19 @@ static PyObject *load_rowdat_1_numpy(PyObject *self, PyObject *args, PyObject *k
2678
2677
 
2679
2678
  exit:
2680
2679
  if (ctypes) free(ctypes);
2681
- if (out_cols) free(out_cols);
2682
- if (mask_cols) free(mask_cols);
2680
+ if (out_cols) {
2681
+ for (i = 0; i < n_cols; i++) {
2682
+ if (out_cols[i]) free(out_cols[i]);
2683
+ }
2684
+ free(out_cols);
2685
+ }
2686
+ if (mask_cols) {
2687
+ for (i = 0; i < n_cols; i++) {
2688
+ if (mask_cols[i]) free(mask_cols[i]);
2689
+ }
2690
+ free(mask_cols);
2691
+ }
2692
+ if (out_row_ids) free(out_row_ids);
2683
2693
  if (data_formats) free(data_formats);
2684
2694
  if (item_sizes) free(item_sizes);
2685
2695
 
@@ -2943,11 +2953,17 @@ static PyObject *dump_rowdat_1_numpy(PyObject *self, PyObject *args, PyObject *k
2943
2953
  out_l = 256 * n_cols;
2944
2954
  out_idx = 0;
2945
2955
  out = malloc(out_l);
2946
- if (!out) goto error;
2956
+ if (!out) {
2957
+ PyErr_SetString(PyExc_MemoryError, "failed to allocate output buffer");
2958
+ goto error;
2959
+ }
2947
2960
 
2948
2961
  // Get return types
2949
2962
  returns = malloc(sizeof(int) * n_cols);
2950
- if (!returns) goto error;
2963
+ if (!returns) {
2964
+ PyErr_SetString(PyExc_MemoryError, "failed to allocate returns array");
2965
+ goto error;
2966
+ }
2951
2967
 
2952
2968
  for (i = 0; i < n_cols; i++) {
2953
2969
  PyObject *py_item = PySequence_GetItem(py_returns, i);
@@ -2959,11 +2975,20 @@ static PyObject *dump_rowdat_1_numpy(PyObject *self, PyObject *args, PyObject *k
2959
2975
 
2960
2976
  // Get column array memory
2961
2977
  cols = calloc(sizeof(char*), n_cols);
2962
- if (!cols) goto error;
2978
+ if (!cols) {
2979
+ PyErr_SetString(PyExc_MemoryError, "failed to allocate cols array");
2980
+ goto error;
2981
+ }
2963
2982
  col_types = calloc(sizeof(NumpyColType), n_cols);
2964
- if (!col_types) goto error;
2983
+ if (!col_types) {
2984
+ PyErr_SetString(PyExc_MemoryError, "failed to allocate col_types array");
2985
+ goto error;
2986
+ }
2965
2987
  masks = calloc(sizeof(char*), n_cols);
2966
- if (!masks) goto error;
2988
+ if (!masks) {
2989
+ PyErr_SetString(PyExc_MemoryError, "failed to allocate masks array");
2990
+ goto error;
2991
+ }
2967
2992
  for (i = 0; i < n_cols; i++) {
2968
2993
  PyObject *py_item = PyList_GetItem(py_cols, i);
2969
2994
  if (!py_item) goto error;
@@ -2996,8 +3021,12 @@ static PyObject *dump_rowdat_1_numpy(PyObject *self, PyObject *args, PyObject *k
2996
3021
  #define CHECKMEM(x) \
2997
3022
  if ((out_idx + x) > out_l) { \
2998
3023
  out_l = out_l * 2 + x; \
2999
- out = realloc(out, out_l); \
3000
- if (!out) goto error; \
3024
+ char *new_out = realloc(out, out_l); \
3025
+ if (!new_out) { \
3026
+ PyErr_SetString(PyExc_MemoryError, "failed to reallocate output buffer"); \
3027
+ goto error; \
3028
+ } \
3029
+ out = new_out; \
3001
3030
  }
3002
3031
 
3003
3032
  for (j = 0; j < n_rows; j++) {
@@ -4079,10 +4108,10 @@ static PyObject *dump_rowdat_1_numpy(PyObject *self, PyObject *args, PyObject *k
4079
4108
  }
4080
4109
  }
4081
4110
 
4082
- py_out = PyMemoryView_FromMemory(out, out_idx, PyBUF_WRITE);
4083
- if (!py_out) goto error;
4111
+ py_out = PyBytes_FromStringAndSize(out, out_idx);
4084
4112
 
4085
4113
  exit:
4114
+ if (out) free(out);
4086
4115
  if (returns) free(returns);
4087
4116
  if (masks) free(masks);
4088
4117
  if (cols) free(cols);
@@ -4091,7 +4120,6 @@ exit:
4091
4120
  return py_out;
4092
4121
 
4093
4122
  error:
4094
- if (!py_out && out) free(out);
4095
4123
  Py_XDECREF(py_out);
4096
4124
  py_out = NULL;
4097
4125
 
@@ -4471,8 +4499,12 @@ static PyObject *dump_rowdat_1(PyObject *self, PyObject *args, PyObject *kwargs)
4471
4499
  #define CHECKMEM(x) \
4472
4500
  if ((out_idx + x) > out_l) { \
4473
4501
  out_l = out_l * 2 + x; \
4474
- out = realloc(out, out_l); \
4475
- if (!out) goto error; \
4502
+ char *new_out = realloc(out, out_l); \
4503
+ if (!new_out) { \
4504
+ PyErr_SetString(PyExc_MemoryError, "failed to reallocate output buffer"); \
4505
+ goto error; \
4506
+ } \
4507
+ out = new_out; \
4476
4508
  }
4477
4509
 
4478
4510
  py_rows_iter = PyObject_GetIter(py_rows);
@@ -4483,12 +4515,20 @@ static PyObject *dump_rowdat_1(PyObject *self, PyObject *args, PyObject *kwargs)
4483
4515
 
4484
4516
  while ((py_row = PyIter_Next(py_rows_iter))) {
4485
4517
  py_row_iter = PyObject_GetIter(py_row);
4486
- if (!py_row_iter) goto error;
4518
+ if (!py_row_iter) {
4519
+ Py_DECREF(py_row);
4520
+ goto error;
4521
+ }
4487
4522
 
4488
4523
  // First item is always a row ID
4489
4524
  py_item = PyIter_Next(py_row_ids_iter);
4490
- if (!py_item) goto error;
4525
+ if (!py_item) {
4526
+ Py_DECREF(py_row_iter);
4527
+ Py_DECREF(py_row);
4528
+ goto error;
4529
+ }
4491
4530
  row_id = (int64_t)PyLong_AsLongLong(py_item);
4531
+ Py_DECREF(py_item);
4492
4532
 
4493
4533
  CHECKMEM(8);
4494
4534
  memcpy(out+out_idx, &row_id, 8);
@@ -4631,12 +4671,16 @@ static PyObject *dump_rowdat_1(PyObject *self, PyObject *args, PyObject *kwargs)
4631
4671
  out_idx += 8;
4632
4672
  } else {
4633
4673
  PyObject *py_bytes = PyUnicode_AsEncodedString(py_item, "utf-8", "strict");
4634
- if (!py_bytes) goto error;
4674
+ if (!py_bytes) {
4675
+ Py_DECREF(py_item);
4676
+ goto error;
4677
+ }
4635
4678
 
4636
4679
  char *str = NULL;
4637
4680
  Py_ssize_t str_l = 0;
4638
4681
  if (PyBytes_AsStringAndSize(py_bytes, &str, &str_l) < 0) {
4639
4682
  Py_DECREF(py_bytes);
4683
+ Py_DECREF(py_item);
4640
4684
  goto error;
4641
4685
  }
4642
4686
 
@@ -4671,6 +4715,7 @@ static PyObject *dump_rowdat_1(PyObject *self, PyObject *args, PyObject *kwargs)
4671
4715
  char *str = NULL;
4672
4716
  Py_ssize_t str_l = 0;
4673
4717
  if (PyBytes_AsStringAndSize(py_item, &str, &str_l) < 0) {
4718
+ Py_DECREF(py_item);
4674
4719
  goto error;
4675
4720
  }
4676
4721
 
@@ -4684,6 +4729,7 @@ static PyObject *dump_rowdat_1(PyObject *self, PyObject *args, PyObject *kwargs)
4684
4729
  break;
4685
4730
 
4686
4731
  default:
4732
+ Py_DECREF(py_item);
4687
4733
  goto error;
4688
4734
  }
4689
4735
 
@@ -4693,14 +4739,17 @@ static PyObject *dump_rowdat_1(PyObject *self, PyObject *args, PyObject *kwargs)
4693
4739
  i++;
4694
4740
  }
4695
4741
 
4742
+ Py_DECREF(py_row_iter);
4696
4743
  Py_DECREF(py_row);
4744
+ py_row_iter = NULL;
4697
4745
  py_row = NULL;
4698
4746
  }
4699
4747
 
4700
- py_out = PyMemoryView_FromMemory(out, out_idx, PyBUF_WRITE);
4701
- if (!py_out) goto error;
4748
+ // Convert the output buffer to a Python bytes object and free the buffer
4749
+ py_out = PyBytes_FromStringAndSize(out, out_idx);
4702
4750
 
4703
4751
  exit:
4752
+ if (out) free(out);
4704
4753
  if (returns) free(returns);
4705
4754
 
4706
4755
  Py_XDECREF(py_item);
@@ -4712,7 +4761,6 @@ exit:
4712
4761
  return py_out;
4713
4762
 
4714
4763
  error:
4715
- if (!py_out && out) free(out);
4716
4764
  Py_XDECREF(py_out);
4717
4765
  py_out = NULL;
4718
4766
 
@@ -4839,7 +4887,7 @@ PyMODINIT_FUNC PyInit__singlestoredb_accel(void) {
4839
4887
 
4840
4888
  PyObj.create_numpy_array_kwargs = PyDict_New();
4841
4889
  if (!PyObj.create_numpy_array_kwargs) goto error;
4842
- if (PyDict_SetItemString(PyObj.create_numpy_array_kwargs, "copy", Py_False)) {
4890
+ if (PyDict_SetItemString(PyObj.create_numpy_array_kwargs, "copy", Py_True)) {
4843
4891
  goto error;
4844
4892
  }
4845
4893
 
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = singlestoredb
3
- version = 1.15.1
3
+ version = 1.15.3
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.1'
16
+ __version__ = '1.15.3'
17
17
 
18
18
  from typing import Any
19
19
 
@@ -13,6 +13,9 @@ if typing.TYPE_CHECKING:
13
13
  # Keep track of currently running server
14
14
  _running_server: 'typing.Optional[AwaitableUvicornServer]' = None
15
15
 
16
+ # Maximum number of UDFs allowed
17
+ MAX_UDFS_LIMIT = 10
18
+
16
19
 
17
20
  async def run_udf_app(
18
21
  log_level: str = 'error',
@@ -44,20 +47,32 @@ async def run_udf_app(
44
47
  udf_suffix = ''
45
48
  if app_config.running_interactively:
46
49
  udf_suffix = '_test'
47
- app = Application(url=base_url, app_mode='managed', name_suffix=udf_suffix)
50
+ app = Application(
51
+ url=base_url,
52
+ app_mode='managed',
53
+ name_suffix=udf_suffix,
54
+ log_level=log_level,
55
+ )
56
+
57
+ if not app.endpoints:
58
+ raise ValueError('You must define at least one function.')
59
+ if len(app.endpoints) > MAX_UDFS_LIMIT:
60
+ raise ValueError(
61
+ f'You can only define a maximum of {MAX_UDFS_LIMIT} functions.',
62
+ )
48
63
 
49
64
  config = uvicorn.Config(
50
65
  app,
51
66
  host='0.0.0.0',
52
67
  port=app_config.listen_port,
53
- log_level=log_level,
68
+ log_config=app.get_uvicorn_log_config(),
54
69
  )
55
- _running_server = AwaitableUvicornServer(config)
56
70
 
57
71
  # Register the functions only if the app is running interactively.
58
72
  if app_config.running_interactively:
59
73
  app.register_functions(replace=True)
60
74
 
75
+ _running_server = AwaitableUvicornServer(config)
61
76
  asyncio.create_task(_running_server.serve())
62
77
  await _running_server.wait_for_startup()
63
78
 
@@ -9,7 +9,7 @@ class StdoutSuppressor:
9
9
  This should not be used for asynchronous or threaded executions.
10
10
 
11
11
  ```py
12
- with Supressor():
12
+ with StdoutSupressor():
13
13
  print("This won't be printed")
14
14
  ```
15
15
 
@@ -30,3 +30,7 @@ class AwaitableUvicornServer(uvicorn.Server):
30
30
 
31
31
  async def wait_for_startup(self) -> None:
32
32
  await self._startup_future
33
+
34
+ async def shutdown(self, sockets: Optional[list[socket.socket]] = None) -> None:
35
+ if self.started:
36
+ await super().shutdown(sockets)
@@ -407,6 +407,12 @@ register_option(
407
407
  environ=['SINGLESTOREDB_EXT_FUNC_LOG_LEVEL'],
408
408
  )
409
409
 
410
+ register_option(
411
+ 'external_function.log_file', 'string', check_str, None,
412
+ 'File path to write logs to instead of console.',
413
+ environ=['SINGLESTOREDB_EXT_FUNC_LOG_FILE'],
414
+ )
415
+
410
416
  register_option(
411
417
  'external_function.name_prefix', 'string', check_str, '',
412
418
  'Prefix to add to external function names.',
@@ -450,6 +456,18 @@ register_option(
450
456
  environ=['SINGLESTOREDB_EXT_FUNC_TIMEOUT'],
451
457
  )
452
458
 
459
+ register_option(
460
+ 'external_function.disable_metrics', 'bool', check_bool, False,
461
+ 'Disable logging of function call metrics.',
462
+ environ=['SINGLESTOREDB_EXT_FUNC_DISABLE_METRICS'],
463
+ )
464
+
465
+ register_option(
466
+ 'external_function.app_name', 'string', check_str, None,
467
+ 'Name for the external function application instance.',
468
+ environ=['SINGLESTOREDB_EXT_FUNC_APP_NAME'],
469
+ )
470
+
453
471
  #
454
472
  # Debugging options
455
473
  #
@@ -23,7 +23,7 @@ except ImportError:
23
23
  try:
24
24
  import pygeos
25
25
  has_pygeos = True
26
- except ImportError:
26
+ except (AttributeError, ImportError):
27
27
  has_pygeos = False
28
28
 
29
29
  try: