sqlalchemy-cratedb 0.36.0__tar.gz → 0.37.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.
Files changed (158) hide show
  1. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/CHANGES.md +13 -0
  2. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/DEVELOP.md +11 -12
  3. {sqlalchemy_cratedb-0.36.0/src/sqlalchemy_cratedb.egg-info → sqlalchemy_cratedb-0.37.0}/PKG-INFO +7 -2
  4. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/pyproject.toml +8 -1
  5. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/__init__.py +3 -0
  6. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/compiler.py +6 -0
  7. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/dialect.py +14 -2
  8. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/type/__init__.py +1 -0
  9. sqlalchemy_cratedb-0.37.0/src/sqlalchemy_cratedb/type/vector.py +173 -0
  10. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0/src/sqlalchemy_cratedb.egg-info}/PKG-INFO +7 -2
  11. sqlalchemy_cratedb-0.37.0/src/sqlalchemy_cratedb.egg-info/SOURCES.txt +36 -0
  12. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb.egg-info/requires.txt +8 -1
  13. sqlalchemy_cratedb-0.37.0/tests/test_schema.py +25 -0
  14. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/advanced-querying.rst.txt +0 -335
  15. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/backlog.md.txt +0 -12
  16. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/by-example/index.rst.txt +0 -30
  17. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/by-example/sqlalchemy/advanced-querying.rst.txt +0 -335
  18. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/by-example/sqlalchemy/crud.rst.txt +0 -301
  19. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/by-example/sqlalchemy/dataframe.rst.txt +0 -258
  20. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/by-example/sqlalchemy/getting-started.rst.txt +0 -211
  21. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/by-example/sqlalchemy/inspection-reflection.rst.txt +0 -126
  22. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/by-example/sqlalchemy/working-with-types.rst.txt +0 -265
  23. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/crud.rst.txt +0 -301
  24. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/data-types.rst.txt +0 -85
  25. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/dataframe.rst.txt +0 -258
  26. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/getting-started.rst.txt +0 -211
  27. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/index-all.rst.txt +0 -18
  28. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/index.rst.txt +0 -215
  29. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/inspection-reflection.rst.txt +0 -126
  30. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/install.rst.txt +0 -52
  31. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/overview.rst.txt +0 -719
  32. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/sqlalchemy.rst.txt +0 -719
  33. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_sources/working-with-types.rst.txt +0 -265
  34. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/_static/bundle/main.js.LICENSE.txt +0 -63
  35. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build/output.txt +0 -28
  36. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/Babel-2.14.0.dist-info/entry_points.txt +0 -20
  37. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/Babel-2.14.0.dist-info/top_level.txt +0 -1
  38. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/Jinja2-3.1.2.dist-info/entry_points.txt +0 -2
  39. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/Jinja2-3.1.2.dist-info/top_level.txt +0 -1
  40. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/MarkupSafe-2.1.3.dist-info/top_level.txt +0 -1
  41. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/PyYAML-6.0.1.dist-info/top_level.txt +0 -2
  42. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/alabaster-0.7.13.dist-info/entry_points.txt +0 -3
  43. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/alabaster-0.7.13.dist-info/top_level.txt +0 -1
  44. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/certifi-2023.11.17.dist-info/top_level.txt +0 -1
  45. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/charset_normalizer-3.3.2.dist-info/entry_points.txt +0 -2
  46. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/charset_normalizer-3.3.2.dist-info/top_level.txt +0 -1
  47. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/colorama-0.4.6.dist-info/licenses/LICENSE.txt +0 -27
  48. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/crate/theme/rtd/crate/static/bundle/main.js.LICENSE.txt +0 -63
  49. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/crate_docs_theme-0.29.9.dist-info/top_level.txt +0 -1
  50. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/README.txt +0 -17
  51. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isoamsa.txt +0 -162
  52. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isoamsb.txt +0 -126
  53. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isoamsc.txt +0 -29
  54. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isoamsn.txt +0 -96
  55. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isoamso.txt +0 -62
  56. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isoamsr.txt +0 -191
  57. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isobox.txt +0 -46
  58. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isocyr1.txt +0 -73
  59. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isocyr2.txt +0 -32
  60. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isodia.txt +0 -20
  61. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isogrk1.txt +0 -55
  62. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isogrk2.txt +0 -26
  63. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isogrk3.txt +0 -52
  64. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isogrk4-wide.txt +0 -49
  65. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isogrk4.txt +0 -8
  66. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isolat1.txt +0 -68
  67. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isolat2.txt +0 -128
  68. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isomfrk-wide.txt +0 -58
  69. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isomfrk.txt +0 -11
  70. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isomopf-wide.txt +0 -32
  71. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isomopf.txt +0 -13
  72. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isomscr-wide.txt +0 -58
  73. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isomscr.txt +0 -17
  74. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isonum.txt +0 -82
  75. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isopub.txt +0 -90
  76. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/isotech.txt +0 -168
  77. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/mmlalias.txt +0 -554
  78. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/mmlextra-wide.txt +0 -113
  79. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/mmlextra.txt +0 -87
  80. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/s5defs.txt +0 -68
  81. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/xhtml1-lat1.txt +0 -102
  82. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/xhtml1-special.txt +0 -37
  83. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/parsers/rst/include/xhtml1-symbol.txt +0 -130
  84. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/writers/html4css1/template.txt +0 -8
  85. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/writers/html5_polyglot/template.txt +0 -8
  86. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/writers/pep_html/template.txt +0 -29
  87. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils/writers/s5_html/themes/README.txt +0 -6
  88. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils-0.16.dist-info/COPYING.txt +0 -137
  89. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/docutils-0.16.dist-info/top_level.txt +0 -1
  90. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/imagesize-1.4.1.dist-info/top_level.txt +0 -1
  91. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/linkify_it_py-1.0.3.dist-info/top_level.txt +0 -1
  92. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/livereload-2.6.3.dist-info/entry_points.txt +0 -2
  93. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/livereload-2.6.3.dist-info/top_level.txt +0 -1
  94. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/markdown_it_py-2.2.0.dist-info/entry_points.txt +0 -3
  95. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/myst_parser-1.0.0.dist-info/entry_points.txt +0 -10
  96. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/pip/_vendor/vendor.txt +0 -24
  97. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/pip-23.3.2.dist-info/AUTHORS.txt +0 -753
  98. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/pip-23.3.2.dist-info/LICENSE.txt +0 -20
  99. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/pip-23.3.2.dist-info/entry_points.txt +0 -4
  100. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/pip-23.3.2.dist-info/top_level.txt +0 -1
  101. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/pygments-2.17.2.dist-info/entry_points.txt +0 -2
  102. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/requests-2.31.0.dist-info/top_level.txt +0 -1
  103. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/setuptools-68.2.2.dist-info/entry_points.txt +0 -56
  104. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/setuptools-68.2.2.dist-info/top_level.txt +0 -3
  105. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/six-1.16.0.dist-info/top_level.txt +0 -1
  106. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/snowballstemmer-2.2.0.dist-info/top_level.txt +0 -1
  107. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinx-5.3.0.dist-info/entry_points.txt +0 -9
  108. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinx_autobuild-2021.3.14.dist-info/entry_points.txt +0 -3
  109. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinx_copybutton-0.5.2.dist-info/top_level.txt +0 -1
  110. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinx_design/compiled/material-icons_VERSION.txt +0 -3
  111. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinx_design_elements-0.2.1.dist-info/top_level.txt +0 -1
  112. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinx_sitemap-2.5.1.dist-info/top_level.txt +0 -1
  113. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinx_togglebutton-0.3.2.dist-info/top_level.txt +0 -1
  114. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinxcontrib_jsmath-1.0.1.dist-info/namespace_packages.txt +0 -1
  115. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinxcontrib_jsmath-1.0.1.dist-info/top_level.txt +0 -1
  116. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinxcontrib_mermaid-0.9.2.dist-info/namespace_packages.txt +0 -1
  117. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinxcontrib_mermaid-0.9.2.dist-info/top_level.txt +0 -1
  118. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinxcontrib_plantuml-0.27.dist-info/namespace_packages.txt +0 -1
  119. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinxcontrib_plantuml-0.27.dist-info/top_level.txt +0 -1
  120. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/sphinxext_opengraph-0.9.1.dist-info/top_level.txt +0 -1
  121. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/tornado/test/static/robots.txt +0 -2
  122. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/tornado/test/static_foo.txt +0 -2
  123. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/tornado-6.4.dist-info/top_level.txt +0 -1
  124. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/uc_micro_py-1.0.2.dist-info/top_level.txt +0 -1
  125. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/urllib3-2.1.0.dist-info/licenses/LICENSE.txt +0 -21
  126. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/wheel/vendored/vendor.txt +0 -1
  127. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/wheel-0.42.0.dist-info/LICENSE.txt +0 -21
  128. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.venv/lib/python3.11/site-packages/wheel-0.42.0.dist-info/entry_points.txt +0 -6
  129. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/common-build/requirements.txt +0 -10
  130. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/docs/_extra/robots.txt +0 -2
  131. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/docs/requirements.txt +0 -2
  132. sqlalchemy_cratedb-0.36.0/docs/.crate-docs/helpers/preview/etc/requirements.txt +0 -3
  133. sqlalchemy_cratedb-0.36.0/docs/_extra/robots.txt +0 -4
  134. sqlalchemy_cratedb-0.36.0/src/sqlalchemy_cratedb.egg-info/SOURCES.txt +0 -154
  135. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/CODE_OF_CONDUCT.md +0 -0
  136. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/CONTRIBUTING.md +0 -0
  137. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/LICENSE +0 -0
  138. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/MANIFEST.in +0 -0
  139. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/NOTICE +0 -0
  140. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/README.md +0 -0
  141. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/backlog.md +0 -0
  142. {sqlalchemy_cratedb-0.36.0/docs/.crate-docs/.build → sqlalchemy_cratedb-0.37.0/docs/_extra}/robots.txt +0 -0
  143. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/docs/requirements.txt +0 -0
  144. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/setup.cfg +0 -0
  145. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/compat/__init__.py +0 -0
  146. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/compat/api13.py +0 -0
  147. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/compat/core10.py +0 -0
  148. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/compat/core14.py +0 -0
  149. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/compat/core20.py +0 -0
  150. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/predicate.py +0 -0
  151. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/sa_version.py +0 -0
  152. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/support.py +0 -0
  153. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/type/array.py +0 -0
  154. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/type/geo.py +0 -0
  155. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb/type/object.py +0 -0
  156. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb.egg-info/dependency_links.txt +0 -0
  157. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb.egg-info/entry_points.txt +0 -0
  158. {sqlalchemy_cratedb-0.36.0 → sqlalchemy_cratedb-0.37.0}/src/sqlalchemy_cratedb.egg-info/top_level.txt +0 -0
@@ -3,6 +3,19 @@
3
3
 
4
4
  ## Unreleased
5
5
 
6
+ ## 2024/06/13 0.37.0
7
+ - Added support for CrateDB's [FLOAT_VECTOR] data type and its accompanying
8
+ [KNN_MATCH] function, for HNSW matches. For SQLAlchemy column definitions,
9
+ you can use it like `FloatVector(dimensions=1536)`.
10
+ - Fixed `get_table_names()` reflection method to respect the
11
+ `schema` query argument in SQLAlchemy connection URLs.
12
+
13
+ [FLOAT_VECTOR]: https://cratedb.com/docs/crate/reference/en/latest/general/ddl/data-types.html#float-vector
14
+ [KNN_MATCH]: https://cratedb.com/docs/crate/reference/en/latest/general/builtins/scalar-functions.html#scalar-knn-match
15
+
16
+ ## 2024/06/11 0.36.1
17
+ - Dependencies: Use `crate==1.0.0dev0`
18
+
6
19
  ## 2024/06/11 0.36.0
7
20
  - Dependencies: Use `dask[dataframe]`
8
21
  - Maintenance release after splitting packages `crate-python` vs.
@@ -16,6 +16,7 @@ further commands.
16
16
 
17
17
  Verify code by running all linters and software tests:
18
18
 
19
+ export CRATEDB_VERSION=latest
19
20
  docker compose -f tests/docker-compose.yml up
20
21
  poe check
21
22
 
@@ -36,25 +37,23 @@ Format code:
36
37
 
37
38
  On branch `main`:
38
39
 
39
- - Add a section for the new version in the `CHANGES.md` file
40
- - Commit your changes with a message like \"Release x.y.z\"
41
- - Push to origin/\<release_branch\>
40
+ - Add a section for the new version in the `CHANGES.md` file.
41
+ - Commit your changes with a message like `Release x.y.z`.
42
42
  - Create a tag, and push to remote.
43
+ This will trigger a GitHub action which releases the new version to PyPi.
43
44
  ```shell
44
- git tag v0.0.1
45
+ git tag 0.36.1
45
46
  git push --tags
46
47
  ```
47
- - Build package, and upload to PyPI.
48
- ```shell
49
- poe release
50
- ```
51
-
52
- On GitHub:
53
-
54
- - Designate a new release on GitHub, copying in the relevant section
48
+ - On GitHub, designate a new release, copying in the relevant section
55
49
  from the CHANGELOG.
56
50
  https://github.com/crate-workbench/sqlalchemy-cratedb/releases
57
51
 
52
+ Optionally, build the package and upload to PyPI manually.
53
+ ```shell
54
+ poe release
55
+ ```
56
+
58
57
 
59
58
  ## Writing documentation
60
59
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlalchemy-cratedb
3
- Version: 0.36.0
3
+ Version: 0.37.0
4
4
  Summary: SQLAlchemy dialect for CrateDB.
5
5
  Author-email: "Crate.io" <office@crate.io>
6
6
  License: Apache License 2.0
@@ -63,11 +63,13 @@ Description-Content-Type: text/markdown
63
63
  License-File: LICENSE
64
64
  License-File: NOTICE
65
65
  Requires-Dist: backports.zoneinfo<1; python_version < "3.9"
66
- Requires-Dist: crate
66
+ Requires-Dist: crate==1.0.0dev0
67
67
  Requires-Dist: geojson<4,>=2.5
68
68
  Requires-Dist: importlib-resources; python_version < "3.9"
69
69
  Requires-Dist: sqlalchemy<2.1,>=1
70
70
  Requires-Dist: verlib2==0.2
71
+ Provides-Extra: all
72
+ Requires-Dist: sqlalchemy-cratedb[vector]; extra == "all"
71
73
  Provides-Extra: develop
72
74
  Requires-Dist: black<25; extra == "develop"
73
75
  Requires-Dist: mypy<1.11; extra == "develop"
@@ -82,12 +84,15 @@ Provides-Extra: release
82
84
  Requires-Dist: build<2; extra == "release"
83
85
  Requires-Dist: twine<6; extra == "release"
84
86
  Provides-Extra: test
87
+ Requires-Dist: cratedb-toolkit[testing]; extra == "test"
85
88
  Requires-Dist: dask[dataframe]; extra == "test"
86
89
  Requires-Dist: pandas<2.3; extra == "test"
87
90
  Requires-Dist: pueblo>=0.0.7; extra == "test"
88
91
  Requires-Dist: pytest<9; extra == "test"
89
92
  Requires-Dist: pytest-cov<6; extra == "test"
90
93
  Requires-Dist: pytest-mock<4; extra == "test"
94
+ Provides-Extra: vector
95
+ Requires-Dist: numpy; extra == "vector"
91
96
 
92
97
  # SQLAlchemy dialect for CrateDB
93
98
 
@@ -85,13 +85,16 @@ dynamic = [
85
85
  ]
86
86
  dependencies = [
87
87
  'backports.zoneinfo<1; python_version < "3.9"',
88
- "crate",
88
+ "crate==1.0.0dev0",
89
89
  "geojson<4,>=2.5",
90
90
  'importlib-resources; python_version < "3.9"',
91
91
  "sqlalchemy<2.1,>=1",
92
92
  "verlib2==0.2",
93
93
  ]
94
94
  [project.optional-dependencies]
95
+ all = [
96
+ "sqlalchemy-cratedb[vector]",
97
+ ]
95
98
  develop = [
96
99
  "black<25",
97
100
  "mypy<1.11",
@@ -109,6 +112,7 @@ release = [
109
112
  "twine<6",
110
113
  ]
111
114
  test = [
115
+ "cratedb-toolkit[testing]",
112
116
  "dask[dataframe]",
113
117
  "pandas<2.3",
114
118
  "pueblo>=0.0.7",
@@ -116,6 +120,9 @@ test = [
116
120
  "pytest-cov<6",
117
121
  "pytest-mock<4",
118
122
  ]
123
+ vector = [
124
+ "numpy",
125
+ ]
119
126
  [project.urls]
120
127
  changelog = "https://github.com/crate-workbench/sqlalchemy-cratedb/blob/main/CHANGES.md"
121
128
  documentation = "https://github.com/crate-workbench/sqlalchemy-cratedb"
@@ -27,6 +27,7 @@ from .support import insert_bulk
27
27
  from .type.array import ObjectArray
28
28
  from .type.geo import Geopoint, Geoshape
29
29
  from .type.object import ObjectType
30
+ from .type.vector import FloatVector, knn_match
30
31
 
31
32
  if SA_VERSION < SA_1_4:
32
33
  import textwrap
@@ -51,9 +52,11 @@ if SA_VERSION < SA_1_4:
51
52
 
52
53
  __all__ = [
53
54
  dialect,
55
+ FloatVector,
54
56
  Geopoint,
55
57
  Geoshape,
56
58
  ObjectArray,
57
59
  ObjectType,
58
60
  match,
61
+ knn_match,
59
62
  ]
@@ -238,6 +238,12 @@ class CrateTypeCompiler(compiler.GenericTypeCompiler):
238
238
  def visit_OBJECT(self, type_, **kw):
239
239
  return "OBJECT"
240
240
 
241
+ def visit_FLOAT_VECTOR(self, type_, **kw):
242
+ dimensions = type_.dimensions
243
+ if dimensions is None:
244
+ raise ValueError("FloatVector must be initialized with dimension size")
245
+ return f"FLOAT_VECTOR({dimensions})"
246
+
241
247
 
242
248
  class CrateCompiler(compiler.SQLCompiler):
243
249
 
@@ -33,7 +33,7 @@ from .compiler import (
33
33
  )
34
34
  from crate.client.exceptions import TimezoneUnawareException
35
35
  from .sa_version import SA_VERSION, SA_1_4, SA_2_0
36
- from .type import ObjectArray, ObjectType
36
+ from .type import FloatVector, ObjectArray, ObjectType
37
37
 
38
38
  TYPES_MAP = {
39
39
  "boolean": sqltypes.Boolean,
@@ -51,7 +51,8 @@ TYPES_MAP = {
51
51
  "float": sqltypes.Float,
52
52
  "real": sqltypes.Float,
53
53
  "string": sqltypes.String,
54
- "text": sqltypes.String
54
+ "text": sqltypes.String,
55
+ "float_vector": FloatVector,
55
56
  }
56
57
  try:
57
58
  # SQLAlchemy >= 1.1
@@ -228,6 +229,15 @@ class CrateDialect(default.DefaultDialect):
228
229
  def _get_default_schema_name(self, connection):
229
230
  return 'doc'
230
231
 
232
+ def _get_effective_schema_name(self, connection):
233
+ schema_name_raw = connection.engine.url.query.get("schema")
234
+ schema_name = None
235
+ if isinstance(schema_name_raw, str):
236
+ schema_name = schema_name_raw
237
+ elif isinstance(schema_name_raw, tuple):
238
+ schema_name = schema_name_raw[0]
239
+ return schema_name
240
+
231
241
  def _get_server_version_info(self, connection):
232
242
  return tuple(connection.connection.lowest_server_version.version)
233
243
 
@@ -257,6 +267,8 @@ class CrateDialect(default.DefaultDialect):
257
267
 
258
268
  @reflection.cache
259
269
  def get_table_names(self, connection, schema=None, **kw):
270
+ if schema is None:
271
+ schema = self._get_effective_schema_name(connection)
260
272
  cursor = connection.exec_driver_sql(
261
273
  "SELECT table_name FROM information_schema.tables "
262
274
  "WHERE {0} = ? "
@@ -1,3 +1,4 @@
1
1
  from .array import ObjectArray
2
2
  from .geo import Geopoint, Geoshape
3
3
  from .object import ObjectType
4
+ from .vector import FloatVector, knn_match
@@ -0,0 +1,173 @@
1
+ """
2
+ ## About
3
+ SQLAlchemy data type implementation for CrateDB's `FLOAT_VECTOR` type.
4
+
5
+ ## References
6
+ - https://cratedb.com/docs/crate/reference/en/latest/general/ddl/data-types.html#float-vector
7
+ - https://cratedb.com/docs/crate/reference/en/latest/general/builtins/scalar-functions.html#scalar-knn-match
8
+
9
+ ## Details
10
+ The implementation is based on SQLAlchemy's `TypeDecorator`, and also
11
+ offers compiler support.
12
+
13
+ ## Notes
14
+ CrateDB currently only supports the similarity function `VectorSimilarityFunction.EUCLIDEAN`.
15
+ -- https://github.com/crate/crate/blob/5.5.1/server/src/main/java/io/crate/types/FloatVectorType.java#L55
16
+
17
+ pgvector use a comparator to apply different similarity functions as operators,
18
+ see `pgvector.sqlalchemy.Vector.comparator_factory`.
19
+
20
+ <->: l2/euclidean_distance
21
+ <#>: max_inner_product
22
+ <=>: cosine_distance
23
+
24
+ ## Backlog
25
+ - After dropping support for SQLAlchemy 1.3, use
26
+ `class FloatVector(sa.TypeDecorator[t.Sequence[float]]):`
27
+
28
+ ## Origin
29
+ This module is based on the corresponding pgvector implementation
30
+ by Andrew Kane. Thank you.
31
+
32
+ The MIT License (MIT)
33
+ Copyright (c) 2021-2023 Andrew Kane
34
+ https://github.com/pgvector/pgvector-python
35
+ """
36
+ import typing as t
37
+
38
+ if t.TYPE_CHECKING:
39
+ import numpy.typing as npt # pragma: no cover
40
+
41
+ import sqlalchemy as sa
42
+ from sqlalchemy.sql.expression import ColumnElement, literal
43
+ from sqlalchemy.ext.compiler import compiles
44
+
45
+
46
+ __all__ = [
47
+ "from_db",
48
+ "knn_match",
49
+ "to_db",
50
+ "FloatVector",
51
+ ]
52
+
53
+
54
+ def from_db(value: t.Iterable) -> t.Optional["npt.ArrayLike"]:
55
+ import numpy as np
56
+
57
+ # from `pgvector.utils`
58
+ # could be ndarray if already cast by lower-level driver
59
+ if value is None or isinstance(value, np.ndarray):
60
+ return value
61
+
62
+ return np.array(value, dtype=np.float32)
63
+
64
+
65
+ def to_db(value: t.Any, dim: t.Optional[int] = None) -> t.Optional[t.List]:
66
+ import numpy as np
67
+
68
+ # from `pgvector.utils`
69
+ if value is None:
70
+ return value
71
+
72
+ if isinstance(value, np.ndarray):
73
+ if value.ndim != 1:
74
+ raise ValueError("expected ndim to be 1")
75
+
76
+ if not np.issubdtype(value.dtype, np.integer) and not np.issubdtype(value.dtype, np.floating):
77
+ raise ValueError("dtype must be numeric")
78
+
79
+ value = value.tolist()
80
+
81
+ if dim is not None and len(value) != dim:
82
+ raise ValueError("expected %d dimensions, not %d" % (dim, len(value)))
83
+
84
+ return value
85
+
86
+
87
+ class FloatVector(sa.TypeDecorator):
88
+ """
89
+ SQLAlchemy `FloatVector` data type for CrateDB.
90
+ """
91
+
92
+ cache_ok = False
93
+
94
+ __visit_name__ = "FLOAT_VECTOR"
95
+
96
+ _is_array = True
97
+
98
+ zero_indexes = False
99
+
100
+ impl = sa.ARRAY
101
+
102
+ def __init__(self, dimensions: int = None):
103
+ super().__init__(sa.FLOAT, dimensions=dimensions)
104
+
105
+ def as_generic(self, allow_nulltype=False):
106
+ return sa.ARRAY(item_type=sa.FLOAT)
107
+
108
+ @property
109
+ def python_type(self):
110
+ return list
111
+
112
+ def bind_processor(self, dialect: sa.engine.Dialect) -> t.Callable:
113
+ def process(value: t.Iterable) -> t.Optional[t.List]:
114
+ return to_db(value, self.dimensions)
115
+
116
+ return process
117
+
118
+ def result_processor(self, dialect: sa.engine.Dialect, coltype: t.Any) -> t.Callable:
119
+ def process(value: t.Any) -> t.Optional["npt.ArrayLike"]:
120
+ return from_db(value)
121
+
122
+ return process
123
+
124
+
125
+ class KnnMatch(ColumnElement):
126
+ """
127
+ Wrap CrateDB's `KNN_MATCH` function into an SQLAlchemy function.
128
+
129
+ https://cratedb.com/docs/crate/reference/en/latest/general/builtins/scalar-functions.html#scalar-knn-match
130
+ """
131
+ inherit_cache = True
132
+
133
+ def __init__(self, column, term, k=None):
134
+ super().__init__()
135
+ self.column = column
136
+ self.term = term
137
+ self.k = k
138
+
139
+ def compile_column(self, compiler):
140
+ return compiler.process(self.column)
141
+
142
+ def compile_term(self, compiler):
143
+ return compiler.process(literal(self.term))
144
+
145
+ def compile_k(self, compiler):
146
+ return compiler.process(literal(self.k))
147
+
148
+
149
+ def knn_match(column, term, k):
150
+ """
151
+ Generate a match predicate for vector search.
152
+
153
+ :param column: A reference to a column or an index.
154
+
155
+ :param term: The term to match against. This is an array of floating point
156
+ values, which is compared to other vectors using a HNSW index search.
157
+
158
+ :param k: The `k` argument determines the number of nearest neighbours to
159
+ search in the index.
160
+ """
161
+ return KnnMatch(column, term, k)
162
+
163
+
164
+ @compiles(KnnMatch)
165
+ def compile_knn_match(knn_match, compiler, **kwargs):
166
+ """
167
+ Clause compiler for `KNN_MATCH`.
168
+ """
169
+ return "KNN_MATCH(%s, %s, %s)" % (
170
+ knn_match.compile_column(compiler),
171
+ knn_match.compile_term(compiler),
172
+ knn_match.compile_k(compiler),
173
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlalchemy-cratedb
3
- Version: 0.36.0
3
+ Version: 0.37.0
4
4
  Summary: SQLAlchemy dialect for CrateDB.
5
5
  Author-email: "Crate.io" <office@crate.io>
6
6
  License: Apache License 2.0
@@ -63,11 +63,13 @@ Description-Content-Type: text/markdown
63
63
  License-File: LICENSE
64
64
  License-File: NOTICE
65
65
  Requires-Dist: backports.zoneinfo<1; python_version < "3.9"
66
- Requires-Dist: crate
66
+ Requires-Dist: crate==1.0.0dev0
67
67
  Requires-Dist: geojson<4,>=2.5
68
68
  Requires-Dist: importlib-resources; python_version < "3.9"
69
69
  Requires-Dist: sqlalchemy<2.1,>=1
70
70
  Requires-Dist: verlib2==0.2
71
+ Provides-Extra: all
72
+ Requires-Dist: sqlalchemy-cratedb[vector]; extra == "all"
71
73
  Provides-Extra: develop
72
74
  Requires-Dist: black<25; extra == "develop"
73
75
  Requires-Dist: mypy<1.11; extra == "develop"
@@ -82,12 +84,15 @@ Provides-Extra: release
82
84
  Requires-Dist: build<2; extra == "release"
83
85
  Requires-Dist: twine<6; extra == "release"
84
86
  Provides-Extra: test
87
+ Requires-Dist: cratedb-toolkit[testing]; extra == "test"
85
88
  Requires-Dist: dask[dataframe]; extra == "test"
86
89
  Requires-Dist: pandas<2.3; extra == "test"
87
90
  Requires-Dist: pueblo>=0.0.7; extra == "test"
88
91
  Requires-Dist: pytest<9; extra == "test"
89
92
  Requires-Dist: pytest-cov<6; extra == "test"
90
93
  Requires-Dist: pytest-mock<4; extra == "test"
94
+ Provides-Extra: vector
95
+ Requires-Dist: numpy; extra == "vector"
91
96
 
92
97
  # SQLAlchemy dialect for CrateDB
93
98
 
@@ -0,0 +1,36 @@
1
+ CHANGES.md
2
+ CODE_OF_CONDUCT.md
3
+ CONTRIBUTING.md
4
+ DEVELOP.md
5
+ LICENSE
6
+ MANIFEST.in
7
+ NOTICE
8
+ README.md
9
+ backlog.md
10
+ pyproject.toml
11
+ setup.cfg
12
+ docs/requirements.txt
13
+ docs/_extra/robots.txt
14
+ src/sqlalchemy_cratedb/__init__.py
15
+ src/sqlalchemy_cratedb/compiler.py
16
+ src/sqlalchemy_cratedb/dialect.py
17
+ src/sqlalchemy_cratedb/predicate.py
18
+ src/sqlalchemy_cratedb/sa_version.py
19
+ src/sqlalchemy_cratedb/support.py
20
+ src/sqlalchemy_cratedb.egg-info/PKG-INFO
21
+ src/sqlalchemy_cratedb.egg-info/SOURCES.txt
22
+ src/sqlalchemy_cratedb.egg-info/dependency_links.txt
23
+ src/sqlalchemy_cratedb.egg-info/entry_points.txt
24
+ src/sqlalchemy_cratedb.egg-info/requires.txt
25
+ src/sqlalchemy_cratedb.egg-info/top_level.txt
26
+ src/sqlalchemy_cratedb/compat/__init__.py
27
+ src/sqlalchemy_cratedb/compat/api13.py
28
+ src/sqlalchemy_cratedb/compat/core10.py
29
+ src/sqlalchemy_cratedb/compat/core14.py
30
+ src/sqlalchemy_cratedb/compat/core20.py
31
+ src/sqlalchemy_cratedb/type/__init__.py
32
+ src/sqlalchemy_cratedb/type/array.py
33
+ src/sqlalchemy_cratedb/type/geo.py
34
+ src/sqlalchemy_cratedb/type/object.py
35
+ src/sqlalchemy_cratedb/type/vector.py
36
+ tests/test_schema.py
@@ -1,4 +1,4 @@
1
- crate
1
+ crate==1.0.0dev0
2
2
  geojson<4,>=2.5
3
3
  sqlalchemy<2.1,>=1
4
4
  verlib2==0.2
@@ -7,6 +7,9 @@ verlib2==0.2
7
7
  backports.zoneinfo<1
8
8
  importlib-resources
9
9
 
10
+ [all]
11
+ sqlalchemy-cratedb[vector]
12
+
10
13
  [develop]
11
14
  black<25
12
15
  mypy<1.11
@@ -24,9 +27,13 @@ build<2
24
27
  twine<6
25
28
 
26
29
  [test]
30
+ cratedb-toolkit[testing]
27
31
  dask[dataframe]
28
32
  pandas<2.3
29
33
  pueblo>=0.0.7
30
34
  pytest<9
31
35
  pytest-cov<6
32
36
  pytest-mock<4
37
+
38
+ [vector]
39
+ numpy
@@ -0,0 +1,25 @@
1
+ import sqlalchemy as sa
2
+
3
+ from tests.conftest import TESTDRIVE_DATA_SCHEMA
4
+
5
+
6
+ def test_correct_schema(cratedb_service):
7
+ """
8
+ Tests that the correct schema is being picked up.
9
+ """
10
+ database = cratedb_service.database
11
+
12
+ tablename = f'"{TESTDRIVE_DATA_SCHEMA}"."foobar"'
13
+ inspector: sa.Inspector = sa.inspect(database.engine)
14
+ database.run_sql(f"CREATE TABLE {tablename} AS SELECT 1")
15
+
16
+ assert TESTDRIVE_DATA_SCHEMA in inspector.get_schema_names()
17
+
18
+ table_names = inspector.get_table_names(schema=TESTDRIVE_DATA_SCHEMA)
19
+ assert table_names == ["foobar"]
20
+
21
+ view_names = inspector.get_view_names(schema=TESTDRIVE_DATA_SCHEMA)
22
+ assert view_names == []
23
+
24
+ indexes = inspector.get_indexes(tablename)
25
+ assert indexes == []