sqlalchemy-cratedb 0.38.0.dev0__tar.gz → 0.40.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 (163) hide show
  1. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/CHANGES.md +15 -1
  2. {sqlalchemy_cratedb-0.38.0.dev0/src/sqlalchemy_cratedb.egg-info → sqlalchemy_cratedb-0.40.0}/PKG-INFO +8 -9
  3. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/pyproject.toml +122 -115
  4. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/__init__.py +7 -4
  5. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/compat/api13.py +5 -9
  6. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/compat/core10.py +26 -37
  7. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/compat/core14.py +30 -52
  8. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/compat/core20.py +35 -58
  9. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/compiler.py +80 -81
  10. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/dialect.py +93 -65
  11. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/predicate.py +14 -17
  12. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/sa_version.py +2 -2
  13. sqlalchemy_cratedb-0.40.0/src/sqlalchemy_cratedb/support/__init__.py +18 -0
  14. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/support/pandas.py +4 -5
  15. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/support/polyfill.py +10 -8
  16. sqlalchemy_cratedb-0.40.0/src/sqlalchemy_cratedb/support/util.py +82 -0
  17. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/type/__init__.py +9 -0
  18. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/type/array.py +5 -8
  19. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/type/geo.py +5 -10
  20. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/type/object.py +13 -11
  21. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/type/vector.py +6 -3
  22. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0/src/sqlalchemy_cratedb.egg-info}/PKG-INFO +8 -9
  23. sqlalchemy_cratedb-0.40.0/src/sqlalchemy_cratedb.egg-info/SOURCES.txt +44 -0
  24. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb.egg-info/requires.txt +7 -8
  25. sqlalchemy_cratedb-0.40.0/tests/test_error_handling.py +21 -0
  26. sqlalchemy_cratedb-0.40.0/tests/test_support_pandas.py +115 -0
  27. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/tests/test_support_polyfill.py +24 -10
  28. sqlalchemy_cratedb-0.40.0/tests/test_support_util.py +51 -0
  29. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/advanced-querying.rst.txt +0 -335
  30. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/crud.rst.txt +0 -301
  31. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/data-types.rst.txt +0 -87
  32. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/dataframe.rst.txt +0 -258
  33. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/getting-started.rst.txt +0 -211
  34. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/index-all.rst.txt +0 -21
  35. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/index.rst.txt +0 -252
  36. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/inspection-reflection.rst.txt +0 -126
  37. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/install.rst.txt +0 -50
  38. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/migrate-from-crate-client.md.txt +0 -54
  39. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/overview.rst.txt +0 -761
  40. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/support.md.txt +0 -243
  41. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_sources/working-with-types.rst.txt +0 -303
  42. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/_static/bundle/main.js.LICENSE.txt +0 -19
  43. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build/output.txt +0 -13
  44. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/Babel-2.15.0.dist-info/entry_points.txt +0 -20
  45. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/Babel-2.15.0.dist-info/top_level.txt +0 -1
  46. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt +0 -1
  47. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/PyYAML-6.0.1.dist-info/top_level.txt +0 -2
  48. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/alabaster-0.7.16.dist-info/entry_points.txt +0 -3
  49. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/certifi-2024.6.2.dist-info/top_level.txt +0 -1
  50. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/charset_normalizer-3.3.2.dist-info/entry_points.txt +0 -2
  51. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/charset_normalizer-3.3.2.dist-info/top_level.txt +0 -1
  52. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/colorama-0.4.6.dist-info/licenses/LICENSE.txt +0 -27
  53. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/crate/theme/rtd/crate/static/bundle/main.js.LICENSE.txt +0 -19
  54. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/crate_docs_theme-0.32.4.dev1.dist-info/top_level.txt +0 -1
  55. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/README.txt +0 -17
  56. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsa.txt +0 -162
  57. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsb.txt +0 -126
  58. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsc.txt +0 -29
  59. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsn.txt +0 -96
  60. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamso.txt +0 -62
  61. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsr.txt +0 -191
  62. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isobox.txt +0 -46
  63. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isocyr1.txt +0 -73
  64. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isocyr2.txt +0 -32
  65. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isodia.txt +0 -20
  66. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk1.txt +0 -55
  67. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk2.txt +0 -26
  68. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk3.txt +0 -52
  69. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk4-wide.txt +0 -49
  70. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk4.txt +0 -8
  71. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isolat1.txt +0 -68
  72. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isolat2.txt +0 -128
  73. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomfrk-wide.txt +0 -58
  74. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomfrk.txt +0 -11
  75. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomopf-wide.txt +0 -32
  76. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomopf.txt +0 -13
  77. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomscr-wide.txt +0 -58
  78. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomscr.txt +0 -17
  79. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isonum.txt +0 -82
  80. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isopub.txt +0 -90
  81. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isotech.txt +0 -168
  82. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/mmlalias.txt +0 -554
  83. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/mmlextra-wide.txt +0 -113
  84. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/mmlextra.txt +0 -87
  85. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/s5defs.txt +0 -68
  86. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/xhtml1-lat1.txt +0 -102
  87. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/xhtml1-special.txt +0 -37
  88. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/xhtml1-symbol.txt +0 -130
  89. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/writers/html4css1/template.txt +0 -8
  90. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/writers/html5_polyglot/template.txt +0 -8
  91. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/writers/pep_html/template.txt +0 -29
  92. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/writers/s5_html/themes/README.txt +0 -6
  93. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils-0.16.dist-info/COPYING.txt +0 -137
  94. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils-0.16.dist-info/top_level.txt +0 -1
  95. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/imagesize-1.4.1.dist-info/top_level.txt +0 -1
  96. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/importlib_metadata-7.1.0.dist-info/top_level.txt +0 -1
  97. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/jinja2-3.1.4.dist-info/LICENSE.txt +0 -28
  98. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/jinja2-3.1.4.dist-info/entry_points.txt +0 -3
  99. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/linkify_it_py-1.0.3.dist-info/top_level.txt +0 -1
  100. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/livereload-2.6.3.dist-info/entry_points.txt +0 -2
  101. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/livereload-2.6.3.dist-info/top_level.txt +0 -1
  102. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/markdown_it_py-2.2.0.dist-info/entry_points.txt +0 -3
  103. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/myst_parser-1.0.0.dist-info/entry_points.txt +0 -10
  104. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip/_vendor/vendor.txt +0 -24
  105. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip-24.0.dist-info/AUTHORS.txt +0 -760
  106. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip-24.0.dist-info/LICENSE.txt +0 -20
  107. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip-24.0.dist-info/entry_points.txt +0 -4
  108. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip-24.0.dist-info/top_level.txt +0 -1
  109. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/pygments-2.18.0.dist-info/entry_points.txt +0 -2
  110. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/requests-2.32.3.dist-info/top_level.txt +0 -1
  111. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/setuptools-58.1.0.dist-info/entry_points.txt +0 -56
  112. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/setuptools-58.1.0.dist-info/top_level.txt +0 -3
  113. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/six-1.16.0.dist-info/top_level.txt +0 -1
  114. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/snowballstemmer-2.2.0.dist-info/top_level.txt +0 -1
  115. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx-5.3.0.dist-info/entry_points.txt +0 -9
  116. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_autobuild-2021.3.14.dist-info/entry_points.txt +0 -3
  117. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_copybutton-0.5.2.dist-info/top_level.txt +0 -1
  118. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_design/compiled/material-icons_VERSION.txt +0 -3
  119. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_design_elements-0.3.2.dist-info/top_level.txt +0 -1
  120. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_sitemap-2.6.0.dist-info/top_level.txt +0 -1
  121. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_togglebutton-0.3.2.dist-info/top_level.txt +0 -1
  122. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_jsmath-1.0.1.dist-info/namespace_packages.txt +0 -1
  123. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_jsmath-1.0.1.dist-info/top_level.txt +0 -1
  124. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_mermaid-0.9.2.dist-info/namespace_packages.txt +0 -1
  125. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_mermaid-0.9.2.dist-info/top_level.txt +0 -1
  126. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_plantuml-0.30.dist-info/namespace_packages.txt +0 -1
  127. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_plantuml-0.30.dist-info/top_level.txt +0 -1
  128. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxext_opengraph-0.9.1.dist-info/top_level.txt +0 -1
  129. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/tornado/test/static/robots.txt +0 -2
  130. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/tornado/test/static_foo.txt +0 -2
  131. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/tornado-6.4.1.dist-info/top_level.txt +0 -1
  132. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/uc_micro_py-1.0.3.dist-info/top_level.txt +0 -1
  133. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/urllib3-2.2.1.dist-info/licenses/LICENSE.txt +0 -21
  134. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/wheel/vendored/vendor.txt +0 -1
  135. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/wheel-0.43.0.dist-info/LICENSE.txt +0 -21
  136. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/wheel-0.43.0.dist-info/entry_points.txt +0 -6
  137. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.venv/lib/python3.9/site-packages/zipp-3.19.2.dist-info/top_level.txt +0 -1
  138. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/common-build/requirements.txt +0 -12
  139. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/docs/_extra/robots.txt +0 -2
  140. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/docs/requirements.txt +0 -2
  141. sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/helpers/preview/etc/requirements.txt +0 -3
  142. sqlalchemy_cratedb-0.38.0.dev0/docs/_extra/robots.txt +0 -4
  143. sqlalchemy_cratedb-0.38.0.dev0/src/sqlalchemy_cratedb/support/__init__.py +0 -14
  144. sqlalchemy_cratedb-0.38.0.dev0/src/sqlalchemy_cratedb/support/util.py +0 -34
  145. sqlalchemy_cratedb-0.38.0.dev0/src/sqlalchemy_cratedb.egg-info/SOURCES.txt +0 -156
  146. sqlalchemy_cratedb-0.38.0.dev0/tests/test_support_pandas.py +0 -74
  147. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/CODE_OF_CONDUCT.md +0 -0
  148. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/CONTRIBUTING.md +0 -0
  149. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/DEVELOP.md +0 -0
  150. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/LICENSE +0 -0
  151. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/MANIFEST.in +0 -0
  152. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/NOTICE +0 -0
  153. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/README.md +0 -0
  154. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/backlog.md +0 -0
  155. {sqlalchemy_cratedb-0.38.0.dev0/docs/.crate-docs/.build → sqlalchemy_cratedb-0.40.0/docs/_extra}/robots.txt +0 -0
  156. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/docs/requirements.txt +0 -0
  157. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/setup.cfg +0 -0
  158. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/setup.py +0 -0
  159. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb/compat/__init__.py +0 -0
  160. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb.egg-info/dependency_links.txt +0 -0
  161. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb.egg-info/entry_points.txt +0 -0
  162. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/src/sqlalchemy_cratedb.egg-info/top_level.txt +0 -0
  163. {sqlalchemy_cratedb-0.38.0.dev0 → sqlalchemy_cratedb-0.40.0}/tests/test_schema.py +0 -0
@@ -1,7 +1,17 @@
1
1
  # Changelog
2
2
 
3
-
4
3
  ## Unreleased
4
+
5
+ ## 2024/10/07 0.40.0
6
+ - Propagate error traces properly, using the `error_trace` `connect_args` option,
7
+ by using `crate-1.0.0dev1`
8
+ - Use slightly amended `do_execute`, `do_execute_no_params`, `do_executemany`
9
+ to store their responses into the request context instance
10
+
11
+ ## 2024/08/29 0.39.0
12
+ - Added `quote_relation_name` support utility function
13
+
14
+ ## 2024/06/25 0.38.0
5
15
  - Added/reactivated documentation as `sqlalchemy-cratedb`
6
16
  - Added `CrateIdentifierPreparer`, in order to quote reserved words
7
17
  like `object` properly, for example when used as column names.
@@ -11,6 +21,10 @@
11
21
  `check_uniqueness_factory`
12
22
  - Added `table_kwargs` context manager to enable pandas/Dask to support
13
23
  CrateDB dialect table options.
24
+ - Fixed SQL rendering of special DDL table options in `CrateDDLCompiler`.
25
+ Before, configuring `crate_"translog.durability"` was not possible.
26
+ - Unlocked supporting timezone-aware `DateTime` fields
27
+ - Added support for marshalling Python `datetime.date` values on `sa.DateTime` fields
14
28
 
15
29
  ## 2024/06/13 0.37.0
16
30
  - Added support for CrateDB's [FLOAT_VECTOR] data type and its accompanying
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlalchemy-cratedb
3
- Version: 0.38.0.dev0
3
+ Version: 0.40.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,7 +63,7 @@ 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==1.0.0dev0
66
+ Requires-Dist: crate==1.0.0.dev1
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
@@ -71,15 +71,14 @@ Requires-Dist: verlib2==0.2
71
71
  Provides-Extra: all
72
72
  Requires-Dist: sqlalchemy-cratedb[vector]; extra == "all"
73
73
  Provides-Extra: develop
74
- Requires-Dist: black<25; extra == "develop"
75
- Requires-Dist: mypy<1.11; extra == "develop"
76
- Requires-Dist: poethepoet<0.27; extra == "develop"
77
- Requires-Dist: pyproject-fmt<2.2; extra == "develop"
78
- Requires-Dist: ruff<0.5; extra == "develop"
79
- Requires-Dist: validate-pyproject<0.19; extra == "develop"
74
+ Requires-Dist: mypy<1.12; extra == "develop"
75
+ Requires-Dist: poethepoet<0.30; extra == "develop"
76
+ Requires-Dist: pyproject-fmt<2.3; extra == "develop"
77
+ Requires-Dist: ruff<0.7; extra == "develop"
78
+ Requires-Dist: validate-pyproject<0.21; extra == "develop"
80
79
  Provides-Extra: doc
81
80
  Requires-Dist: crate-docs-theme>=0.26.5; extra == "doc"
82
- Requires-Dist: sphinx<8,>=3.5; extra == "doc"
81
+ Requires-Dist: sphinx<9,>=3.5; extra == "doc"
83
82
  Provides-Extra: release
84
83
  Requires-Dist: build<2; extra == "release"
85
84
  Requires-Dist: twine<6; extra == "release"
@@ -5,10 +5,6 @@ requires = [
5
5
  "versioningit",
6
6
  ]
7
7
 
8
- [tool.versioningit.vcs]
9
- method = "git"
10
- default-tag = "0.0.0"
11
-
12
8
  [project]
13
9
  name = "sqlalchemy-cratedb"
14
10
  description = "SQLAlchemy dialect for CrateDB."
@@ -80,39 +76,36 @@ classifiers = [
80
76
  "Topic :: Text Processing",
81
77
  "Topic :: Utilities",
82
78
  ]
83
- #dynamic = [
84
- # "version",
85
- #]
86
- version = "0.38.0.dev0"
79
+ dynamic = [
80
+ "version",
81
+ ]
87
82
  dependencies = [
88
- 'backports.zoneinfo<1; python_version < "3.9"',
89
- "crate==1.0.0dev0",
83
+ "backports.zoneinfo<1; python_version<'3.9'",
84
+ "crate==1.0.0.dev1",
90
85
  "geojson<4,>=2.5",
91
- 'importlib-resources; python_version < "3.9"',
86
+ "importlib-resources; python_version<'3.9'",
92
87
  "sqlalchemy<2.1,>=1",
93
88
  "verlib2==0.2",
94
89
  ]
95
- [project.optional-dependencies]
96
- all = [
90
+ optional-dependencies.all = [
97
91
  "sqlalchemy-cratedb[vector]",
98
92
  ]
99
- develop = [
100
- "black<25",
101
- "mypy<1.11",
102
- "poethepoet<0.27",
103
- "pyproject-fmt<2.2",
104
- "ruff<0.5",
105
- "validate-pyproject<0.19",
93
+ optional-dependencies.develop = [
94
+ "mypy<1.12",
95
+ "poethepoet<0.30",
96
+ "pyproject-fmt<2.3",
97
+ "ruff<0.7",
98
+ "validate-pyproject<0.21",
106
99
  ]
107
- doc = [
100
+ optional-dependencies.doc = [
108
101
  "crate-docs-theme>=0.26.5",
109
- "sphinx<8,>=3.5",
102
+ "sphinx>=3.5,<9",
110
103
  ]
111
- release = [
104
+ optional-dependencies.release = [
112
105
  "build<2",
113
106
  "twine<6",
114
107
  ]
115
- test = [
108
+ optional-dependencies.test = [
116
109
  "cratedb-toolkit[testing]",
117
110
  "dask[dataframe]",
118
111
  "pandas<2.3",
@@ -121,54 +114,81 @@ test = [
121
114
  "pytest-cov<6",
122
115
  "pytest-mock<4",
123
116
  ]
124
- vector = [
117
+ optional-dependencies.vector = [
125
118
  "numpy",
126
119
  ]
127
- [project.urls]
128
- changelog = "https://github.com/crate/sqlalchemy-cratedb/blob/main/CHANGES.md"
129
- documentation = "https://cratedb.com/docs/sqlalchemy-cratedb/"
130
- homepage = "https://cratedb.com/docs/sqlalchemy-cratedb/"
131
- repository = "https://github.com/crate/sqlalchemy-cratedb"
132
- [project.entry-points."sqlalchemy.dialects"]
133
- crate = "sqlalchemy_cratedb:dialect"
120
+ urls.changelog = "https://github.com/crate/sqlalchemy-cratedb/blob/main/CHANGES.md"
121
+ urls.documentation = "https://cratedb.com/docs/sqlalchemy-cratedb/"
122
+ urls.homepage = "https://cratedb.com/docs/sqlalchemy-cratedb/"
123
+ urls.repository = "https://github.com/crate/sqlalchemy-cratedb"
124
+ entry-points."sqlalchemy.dialects".crate = "sqlalchemy_cratedb:dialect"
134
125
 
135
126
  [tool.black]
136
127
  line-length = 100
137
128
 
138
- [tool.coverage.paths]
139
- source = [
140
- "src/",
129
+ [tool.ruff]
130
+ line-length = 100
131
+
132
+ extend-exclude = [
141
133
  ]
142
134
 
143
- [tool.coverage.run]
144
- branch = false
145
- omit = [
146
- "tests/*",
135
+ lint.select = [
136
+ # Builtins
137
+ "A",
138
+ # Bugbear
139
+ "B",
140
+ # comprehensions
141
+ "C4",
142
+ # Pycodestyle
143
+ "E",
144
+ # eradicate
145
+ "ERA",
146
+ # Pyflakes
147
+ "F",
148
+ # isort
149
+ "I",
150
+ # pandas-vet
151
+ "PD",
152
+ # return
153
+ "RET",
154
+ # Bandit
155
+ "S",
156
+ # print
157
+ "T20",
158
+ "W",
159
+ # flake8-2020
160
+ "YTT",
147
161
  ]
148
162
 
149
- [tool.coverage.report]
150
- fail_under = 0
151
- show_missing = true
152
- exclude_lines = [
153
- "# pragma: no cover",
154
- "raise NotImplemented"
163
+ lint.extend-ignore = [
164
+ # zip() without an explicit strict= parameter
165
+ "B905",
166
+ # Unnecessary generator (rewrite as a `dict` comprehension)
167
+ "C402",
168
+ # Unnecessary `map` usage (rewrite using a `set` comprehension)
169
+ "C417",
170
+ # df is a bad variable name. Be kinder to your future self.
171
+ "PD901",
172
+ # Unnecessary variable assignment before `return` statement
173
+ "RET504",
174
+ # Unnecessary `elif` after `return` statement
175
+ "RET505",
176
+ # Probable insecure usage of temporary file or directory
177
+ "S108",
178
+ # Possible SQL injection vector through string-based query construction
179
+ "S608",
155
180
  ]
156
181
 
157
- [tool.mypy]
158
- mypy_path = "src"
159
- packages = ["sqlalchemy_cratedb"]
160
- exclude = [
182
+ lint.per-file-ignores."examples/*" = [
183
+ "T201", # Allow `print`
184
+ ]
185
+
186
+ lint.per-file-ignores."tests/*" = [
187
+ "S101", # Allow use of `assert`, and `print`
188
+ "S608", # Possible SQL injection vector through string-based query construction
189
+ "W291", # Trailing whitespace
190
+ "W293", # Blank line contains whitespace
161
191
  ]
162
- check_untyped_defs = true
163
- explicit_package_bases = true
164
- ignore_missing_imports = true
165
- implicit_optional = true
166
- install_types = true
167
- namespace_packages = true
168
- non_interactive = true
169
- # Needed until `mypy-0.990` for `ConverterDefinition` in `converter.py`.
170
- # https://github.com/python/mypy/issues/731#issuecomment-1260976955
171
- # enable_recursive_aliases = true
172
192
 
173
193
  [tool.pytest.ini_options]
174
194
  addopts = """
@@ -180,7 +200,7 @@ log_level = "DEBUG"
180
200
  log_cli_level = "DEBUG"
181
201
  log_format = "%(asctime)-15s [%(name)-36s] %(levelname)-8s: %(message)s"
182
202
  pythonpath = [
183
- "src"
203
+ "src",
184
204
  ]
185
205
  testpaths = [
186
206
  "examples",
@@ -195,60 +215,44 @@ xfail_strict = true
195
215
  markers = [
196
216
  ]
197
217
 
198
- [tool.ruff]
199
- line-length = 100
200
-
201
- select = [
202
- # Bandit
203
- "S",
204
- # Bugbear
205
- "B",
206
- # Builtins
207
- "A",
208
- # comprehensions
209
- "C4",
210
- # eradicate
211
- "ERA",
212
- # flake8-2020
213
- "YTT",
214
- # isort
215
- "I",
216
- # pandas-vet
217
- "PD",
218
- # print
219
- "T20",
220
- # Pycodestyle
221
- "E",
222
- "W",
223
- # Pyflakes
224
- "F",
225
- # return
226
- "RET",
218
+ [tool.coverage.paths]
219
+ source = [
220
+ "src/",
227
221
  ]
228
222
 
229
- extend-ignore = [
230
- # zip() without an explicit strict= parameter
231
- "B905",
232
- # df is a bad variable name. Be kinder to your future self.
233
- "PD901",
234
- # Unnecessary variable assignment before `return` statement
235
- "RET504",
236
- # Unnecessary `elif` after `return` statement
237
- "RET505",
238
- # Probable insecure usage of temporary file or directory
239
- "S108",
223
+ [tool.coverage.run]
224
+ branch = false
225
+ omit = [
226
+ "tests/*",
240
227
  ]
241
228
 
242
- extend-exclude = [
229
+ [tool.coverage.report]
230
+ fail_under = 0
231
+ show_missing = true
232
+ exclude_lines = [
233
+ "# pragma: no cover",
234
+ "raise NotImplemented",
243
235
  ]
244
236
 
245
- [tool.ruff.per-file-ignores]
246
- "*/tests/*" = [
247
- "S101", # Allow use of `assert`, and `print`.
248
- "S608", # Possible SQL injection vector through string-based query construction.
237
+ [tool.mypy]
238
+ mypy_path = "src"
239
+ packages = [ "sqlalchemy_cratedb" ]
240
+ exclude = [
249
241
  ]
250
- "examples/*" = ["T201"] # Allow `print`
242
+ check_untyped_defs = true
243
+ explicit_package_bases = true
244
+ ignore_missing_imports = true
245
+ implicit_optional = true
246
+ install_types = true
247
+ namespace_packages = true
248
+ non_interactive = true
249
+ # Needed until `mypy-0.990` for `ConverterDefinition` in `converter.py`.
250
+ # https://github.com/python/mypy/issues/731#issuecomment-1260976955
251
+ # enable_recursive_aliases = true
251
252
 
253
+ [tool.versioningit.vcs]
254
+ method = "git"
255
+ default-tag = "0.0.0"
252
256
 
253
257
  # ===================
254
258
  # Tasks configuration
@@ -257,28 +261,31 @@ extend-exclude = [
257
261
  [tool.poe.tasks]
258
262
 
259
263
  check = [
260
- # "lint",
264
+ "lint",
261
265
  "test",
262
266
  ]
263
267
 
264
268
  format = [
265
- { cmd = "black ." },
266
- # Configure Ruff not to auto-fix (remove!):
267
- # unused imports (F401), unused variables (F841), `print` statements (T201), and commented-out code (ERA001).
268
- { cmd = "ruff --fix --ignore=ERA --ignore=F401 --ignore=F841 --ignore=T20 --ignore=ERA001 ." },
269
+ # Format project metadata.
269
270
  { cmd = "pyproject-fmt --keep-full-version pyproject.toml" },
271
+
272
+ # Format code.
273
+ # Configure Ruff not to auto-fix a few items that are useful in workbench mode.
274
+ # e.g.: unused imports (F401), unused variables (F841), `print` statements (T201), commented-out code (ERA001)
275
+ { cmd = "ruff format" },
276
+ { cmd = "ruff check --fix --ignore=ERA --ignore=F401 --ignore=F841 --ignore=T20 --ignore=ERA001" },
270
277
  ]
271
278
 
272
279
  lint = [
273
- { cmd = "ruff ." },
274
- { cmd = "black --check ." },
280
+ { cmd = "ruff format --check" },
281
+ { cmd = "ruff check" },
275
282
  { cmd = "validate-pyproject pyproject.toml" },
276
- { cmd = "mypy" },
283
+ # { cmd = "mypy" },
277
284
  ]
278
285
 
279
286
  release = [
280
287
  { cmd = "python -m build" },
281
- { cmd = "twine upload dist/*" },
288
+ { cmd = "twine upload --skip-existing dist/*" },
282
289
  ]
283
290
 
284
291
  test = [
@@ -22,7 +22,7 @@
22
22
  from .compat.api13 import monkeypatch_add_exec_driver_sql
23
23
  from .dialect import dialect
24
24
  from .predicate import match
25
- from .sa_version import SA_1_4, SA_2_0, SA_VERSION
25
+ from .sa_version import SA_1_4, SA_VERSION
26
26
  from .support import insert_bulk
27
27
  from .type.array import ObjectArray
28
28
  from .type.geo import Geopoint, Geoshape
@@ -34,7 +34,8 @@ if SA_VERSION < SA_1_4:
34
34
  import warnings
35
35
 
36
36
  # SQLAlchemy 1.3 is effectively EOL.
37
- SA13_DEPRECATION_WARNING = textwrap.dedent("""
37
+ SA13_DEPRECATION_WARNING = textwrap.dedent(
38
+ """
38
39
  WARNING: SQLAlchemy 1.3 is effectively EOL.
39
40
 
40
41
  SQLAlchemy 1.3 is EOL since 2023-01-27.
@@ -43,8 +44,9 @@ if SA_VERSION < SA_1_4:
43
44
 
44
45
  - https://docs.sqlalchemy.org/en/14/changelog/migration_14.html
45
46
  - https://docs.sqlalchemy.org/en/20/changelog/migration_20.html
46
- """.lstrip("\n"))
47
- warnings.warn(message=SA13_DEPRECATION_WARNING, category=DeprecationWarning)
47
+ """.lstrip("\n")
48
+ )
49
+ warnings.warn(message=SA13_DEPRECATION_WARNING, category=DeprecationWarning, stacklevel=2)
48
50
 
49
51
  # SQLAlchemy 1.3 does not have the `exec_driver_sql` method, so add it.
50
52
  monkeypatch_add_exec_driver_sql()
@@ -59,4 +61,5 @@ __all__ = [
59
61
  ObjectType,
60
62
  match,
61
63
  knn_match,
64
+ insert_bulk,
62
65
  ]
@@ -40,7 +40,6 @@ from sqlalchemy.sql import Select
40
40
  from sqlalchemy.sql import select as original_select
41
41
  from sqlalchemy.util import immutabledict
42
42
 
43
-
44
43
  # `_distill_params_20` copied from SA14's `sqlalchemy.engine.{base,util}`.
45
44
  _no_tuple = ()
46
45
  _no_kw = immutabledict()
@@ -52,9 +51,7 @@ def _distill_params_20(params):
52
51
  elif isinstance(params, list):
53
52
  # collections_abc.MutableSequence): # avoid abc.__instancecheck__
54
53
  if params and not isinstance(params[0], (collections_abc.Mapping, tuple)):
55
- raise exc.ArgumentError(
56
- "List argument must consist only of tuples or dictionaries"
57
- )
54
+ raise exc.ArgumentError("List argument must consist only of tuples or dictionaries")
58
55
 
59
56
  return (params,), _no_kw
60
57
  elif isinstance(
@@ -74,8 +71,7 @@ def exec_driver_sql(self, statement, parameters=None, execution_options=None):
74
71
  """
75
72
  if execution_options is not None:
76
73
  raise ValueError(
77
- "SA13 backward-compatibility: "
78
- "`exec_driver_sql` does not support `execution_options`"
74
+ "SA13 backward-compatibility: " "`exec_driver_sql` does not support `execution_options`"
79
75
  )
80
76
  args_10style, kwargs_10style = _distill_params_20(parameters)
81
77
  return self.execute(statement, *args_10style, **kwargs_10style)
@@ -106,12 +102,11 @@ def select_sa14(*columns, **kw) -> Select:
106
102
  Derived from https://github.com/sqlalchemy/alembic/blob/b1fad6b6/alembic/util/sqla_compat.py#L557-L558
107
103
 
108
104
  sqlalchemy.exc.ArgumentError: columns argument to select() must be a Python list or other iterable
109
- """
105
+ """ # noqa: E501
110
106
  if isinstance(columns, tuple) and isinstance(columns[0], list):
111
107
  if "whereclause" in kw:
112
108
  raise ValueError(
113
- "SA13 backward-compatibility: "
114
- "`whereclause` is both in kwargs and columns tuple"
109
+ "SA13 backward-compatibility: " "`whereclause` is both in kwargs and columns tuple"
115
110
  )
116
111
  columns, whereclause = columns
117
112
  kw["whereclause"] = whereclause
@@ -153,4 +148,5 @@ def connectionfairy_driver_connection_sa14(self):
153
148
 
154
149
  def monkeypatch_add_connectionfairy_driver_connection():
155
150
  import sqlalchemy.pool.base
151
+
156
152
  sqlalchemy.pool.base._ConnectionFairy.driver_connection = connectionfairy_driver_connection_sa14
@@ -21,18 +21,21 @@
21
21
 
22
22
  import sqlalchemy as sa
23
23
  from sqlalchemy.dialects.postgresql.base import PGCompiler
24
- from sqlalchemy.sql.crud import (REQUIRED, _create_bind_param,
25
- _extend_values_for_multiparams,
26
- _get_multitable_params,
27
- _get_stmt_parameters_params,
28
- _key_getters_for_crud_column, _scan_cols,
29
- _scan_insert_from_select_cols)
24
+ from sqlalchemy.sql.crud import (
25
+ REQUIRED,
26
+ _create_bind_param,
27
+ _extend_values_for_multiparams,
28
+ _get_multitable_params,
29
+ _get_stmt_parameters_params,
30
+ _key_getters_for_crud_column,
31
+ _scan_cols,
32
+ _scan_insert_from_select_cols,
33
+ )
30
34
 
31
35
  from sqlalchemy_cratedb.compiler import CrateCompiler
32
36
 
33
37
 
34
38
  class CrateCompilerSA10(CrateCompiler):
35
-
36
39
  def returning_clause(self, stmt, returning_cols):
37
40
  """
38
41
  Generate RETURNING clause, PostgreSQL-compatible.
@@ -46,70 +49,58 @@ class CrateCompilerSA10(CrateCompiler):
46
49
  """
47
50
 
48
51
  # [10] CrateDB patch.
49
- if not update_stmt.parameters and \
50
- not hasattr(update_stmt, '_crate_specific'):
52
+ if not update_stmt.parameters and not hasattr(update_stmt, "_crate_specific"):
51
53
  return super().visit_update(update_stmt, **kw)
52
54
 
53
55
  self.isupdate = True
54
56
 
55
57
  extra_froms = update_stmt._extra_froms
56
58
 
57
- text = 'UPDATE '
59
+ text = "UPDATE "
58
60
 
59
61
  if update_stmt._prefixes:
60
- text += self._generate_prefixes(update_stmt,
61
- update_stmt._prefixes, **kw)
62
+ text += self._generate_prefixes(update_stmt, update_stmt._prefixes, **kw)
62
63
 
63
- table_text = self.update_tables_clause(update_stmt, update_stmt.table,
64
- extra_froms, **kw)
64
+ table_text = self.update_tables_clause(update_stmt, update_stmt.table, extra_froms, **kw)
65
65
 
66
66
  dialect_hints = None
67
67
  if update_stmt._hints:
68
- dialect_hints, table_text = self._setup_crud_hints(
69
- update_stmt, table_text
70
- )
68
+ dialect_hints, table_text = self._setup_crud_hints(update_stmt, table_text)
71
69
 
72
70
  # [10] CrateDB patch.
73
71
  crud_params = _get_crud_params(self, update_stmt, **kw)
74
72
 
75
73
  text += table_text
76
74
 
77
- text += ' SET '
75
+ text += " SET "
78
76
 
79
77
  # [10] CrateDB patch begin.
80
- include_table = \
81
- extra_froms and self.render_table_with_column_in_update_from
78
+ include_table = extra_froms and self.render_table_with_column_in_update_from
82
79
 
83
80
  set_clauses = []
84
81
 
85
82
  for k, v in crud_params:
86
- clause = k._compiler_dispatch(self,
87
- include_table=include_table) + \
88
- ' = ' + v
83
+ clause = k._compiler_dispatch(self, include_table=include_table) + " = " + v
89
84
  set_clauses.append(clause)
90
85
 
91
86
  for k, v in update_stmt.parameters.items():
92
- if isinstance(k, str) and '[' in k:
87
+ if isinstance(k, str) and "[" in k:
93
88
  bindparam = sa.sql.bindparam(k, v)
94
- set_clauses.append(k + ' = ' + self.process(bindparam))
89
+ set_clauses.append(k + " = " + self.process(bindparam))
95
90
 
96
- text += ', '.join(set_clauses)
91
+ text += ", ".join(set_clauses)
97
92
  # [10] CrateDB patch end.
98
93
 
99
94
  if self.returning or update_stmt._returning:
100
95
  if not self.returning:
101
96
  self.returning = update_stmt._returning
102
97
  if self.returning_precedes_values:
103
- text += " " + self.returning_clause(
104
- update_stmt, self.returning)
98
+ text += " " + self.returning_clause(update_stmt, self.returning)
105
99
 
106
100
  if extra_froms:
107
101
  extra_from_text = self.update_from_clause(
108
- update_stmt,
109
- update_stmt.table,
110
- extra_froms,
111
- dialect_hints,
112
- **kw)
102
+ update_stmt, update_stmt.table, extra_froms, dialect_hints, **kw
103
+ )
113
104
  if extra_from_text:
114
105
  text += " " + extra_from_text
115
106
 
@@ -123,8 +114,7 @@ class CrateCompilerSA10(CrateCompiler):
123
114
  text += " " + limit_clause
124
115
 
125
116
  if self.returning and not self.returning_precedes_values:
126
- text += " " + self.returning_clause(
127
- update_stmt, self.returning)
117
+ text += " " + self.returning_clause(update_stmt, self.returning)
128
118
 
129
119
  return text
130
120
 
@@ -149,8 +139,7 @@ def _get_crud_params(compiler, stmt, **kw):
149
139
  # compiled params - return binds for all columns
150
140
  if compiler.column_keys is None and stmt.parameters is None:
151
141
  return [
152
- (c, _create_bind_param(compiler, c, None, required=True))
153
- for c in stmt.table.columns
142
+ (c, _create_bind_param(compiler, c, None, required=True)) for c in stmt.table.columns
154
143
  ]
155
144
 
156
145
  if stmt._has_multi_parameters: