sqlalchemy-cratedb 0.38.0__tar.gz → 0.39.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 (161) hide show
  1. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/CHANGES.md +3 -1
  2. {sqlalchemy_cratedb-0.38.0/src/sqlalchemy_cratedb.egg-info → sqlalchemy_cratedb-0.39.0}/PKG-INFO +8 -9
  3. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/pyproject.toml +118 -110
  4. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/__init__.py +7 -4
  5. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/compat/api13.py +5 -9
  6. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/compat/core10.py +26 -37
  7. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/compat/core14.py +30 -52
  8. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/compat/core20.py +35 -58
  9. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/compiler.py +72 -83
  10. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/dialect.py +62 -53
  11. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/predicate.py +14 -17
  12. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/sa_version.py +2 -2
  13. sqlalchemy_cratedb-0.39.0/src/sqlalchemy_cratedb/support/__init__.py +18 -0
  14. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/support/pandas.py +4 -5
  15. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/support/polyfill.py +9 -4
  16. sqlalchemy_cratedb-0.39.0/src/sqlalchemy_cratedb/support/util.py +82 -0
  17. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/type/__init__.py +9 -0
  18. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/type/array.py +5 -8
  19. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/type/geo.py +5 -10
  20. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/type/object.py +13 -11
  21. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/type/vector.py +6 -3
  22. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0/src/sqlalchemy_cratedb.egg-info}/PKG-INFO +8 -9
  23. sqlalchemy_cratedb-0.39.0/src/sqlalchemy_cratedb.egg-info/SOURCES.txt +43 -0
  24. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb.egg-info/requires.txt +7 -8
  25. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/tests/test_support_pandas.py +26 -11
  26. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/tests/test_support_polyfill.py +24 -10
  27. sqlalchemy_cratedb-0.39.0/tests/test_support_util.py +51 -0
  28. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/advanced-querying.rst.txt +0 -335
  29. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/crud.rst.txt +0 -301
  30. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/data-types.rst.txt +0 -87
  31. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/dataframe.rst.txt +0 -258
  32. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/getting-started.rst.txt +0 -211
  33. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/index-all.rst.txt +0 -21
  34. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/index.rst.txt +0 -252
  35. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/inspection-reflection.rst.txt +0 -126
  36. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/install.rst.txt +0 -50
  37. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/migrate-from-crate-client.md.txt +0 -54
  38. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/overview.rst.txt +0 -761
  39. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/support.md.txt +0 -243
  40. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_sources/working-with-types.rst.txt +0 -303
  41. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/_static/bundle/main.js.LICENSE.txt +0 -19
  42. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build/output.txt +0 -13
  43. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/Babel-2.15.0.dist-info/entry_points.txt +0 -20
  44. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/Babel-2.15.0.dist-info/top_level.txt +0 -1
  45. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt +0 -1
  46. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/PyYAML-6.0.1.dist-info/top_level.txt +0 -2
  47. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/alabaster-0.7.16.dist-info/entry_points.txt +0 -3
  48. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/certifi-2024.6.2.dist-info/top_level.txt +0 -1
  49. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/charset_normalizer-3.3.2.dist-info/entry_points.txt +0 -2
  50. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/charset_normalizer-3.3.2.dist-info/top_level.txt +0 -1
  51. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/colorama-0.4.6.dist-info/licenses/LICENSE.txt +0 -27
  52. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/crate/theme/rtd/crate/static/bundle/main.js.LICENSE.txt +0 -19
  53. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/crate_docs_theme-0.32.4.dev1.dist-info/top_level.txt +0 -1
  54. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/README.txt +0 -17
  55. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsa.txt +0 -162
  56. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsb.txt +0 -126
  57. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsc.txt +0 -29
  58. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsn.txt +0 -96
  59. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamso.txt +0 -62
  60. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsr.txt +0 -191
  61. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isobox.txt +0 -46
  62. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isocyr1.txt +0 -73
  63. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isocyr2.txt +0 -32
  64. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isodia.txt +0 -20
  65. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk1.txt +0 -55
  66. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk2.txt +0 -26
  67. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk3.txt +0 -52
  68. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk4-wide.txt +0 -49
  69. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk4.txt +0 -8
  70. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isolat1.txt +0 -68
  71. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isolat2.txt +0 -128
  72. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomfrk-wide.txt +0 -58
  73. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomfrk.txt +0 -11
  74. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomopf-wide.txt +0 -32
  75. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomopf.txt +0 -13
  76. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomscr-wide.txt +0 -58
  77. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomscr.txt +0 -17
  78. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isonum.txt +0 -82
  79. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isopub.txt +0 -90
  80. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isotech.txt +0 -168
  81. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/mmlalias.txt +0 -554
  82. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/mmlextra-wide.txt +0 -113
  83. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/mmlextra.txt +0 -87
  84. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/s5defs.txt +0 -68
  85. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/xhtml1-lat1.txt +0 -102
  86. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/xhtml1-special.txt +0 -37
  87. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/xhtml1-symbol.txt +0 -130
  88. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/writers/html4css1/template.txt +0 -8
  89. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/writers/html5_polyglot/template.txt +0 -8
  90. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/writers/pep_html/template.txt +0 -29
  91. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/writers/s5_html/themes/README.txt +0 -6
  92. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils-0.16.dist-info/COPYING.txt +0 -137
  93. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils-0.16.dist-info/top_level.txt +0 -1
  94. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/imagesize-1.4.1.dist-info/top_level.txt +0 -1
  95. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/importlib_metadata-7.1.0.dist-info/top_level.txt +0 -1
  96. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/jinja2-3.1.4.dist-info/LICENSE.txt +0 -28
  97. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/jinja2-3.1.4.dist-info/entry_points.txt +0 -3
  98. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/linkify_it_py-1.0.3.dist-info/top_level.txt +0 -1
  99. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/livereload-2.6.3.dist-info/entry_points.txt +0 -2
  100. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/livereload-2.6.3.dist-info/top_level.txt +0 -1
  101. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/markdown_it_py-2.2.0.dist-info/entry_points.txt +0 -3
  102. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/myst_parser-1.0.0.dist-info/entry_points.txt +0 -10
  103. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip/_vendor/vendor.txt +0 -24
  104. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip-24.0.dist-info/AUTHORS.txt +0 -760
  105. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip-24.0.dist-info/LICENSE.txt +0 -20
  106. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip-24.0.dist-info/entry_points.txt +0 -4
  107. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip-24.0.dist-info/top_level.txt +0 -1
  108. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/pygments-2.18.0.dist-info/entry_points.txt +0 -2
  109. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/requests-2.32.3.dist-info/top_level.txt +0 -1
  110. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/setuptools-58.1.0.dist-info/entry_points.txt +0 -56
  111. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/setuptools-58.1.0.dist-info/top_level.txt +0 -3
  112. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/six-1.16.0.dist-info/top_level.txt +0 -1
  113. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/snowballstemmer-2.2.0.dist-info/top_level.txt +0 -1
  114. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx-5.3.0.dist-info/entry_points.txt +0 -9
  115. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_autobuild-2021.3.14.dist-info/entry_points.txt +0 -3
  116. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_copybutton-0.5.2.dist-info/top_level.txt +0 -1
  117. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_design/compiled/material-icons_VERSION.txt +0 -3
  118. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_design_elements-0.3.2.dist-info/top_level.txt +0 -1
  119. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_sitemap-2.6.0.dist-info/top_level.txt +0 -1
  120. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_togglebutton-0.3.2.dist-info/top_level.txt +0 -1
  121. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_jsmath-1.0.1.dist-info/namespace_packages.txt +0 -1
  122. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_jsmath-1.0.1.dist-info/top_level.txt +0 -1
  123. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_mermaid-0.9.2.dist-info/namespace_packages.txt +0 -1
  124. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_mermaid-0.9.2.dist-info/top_level.txt +0 -1
  125. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_plantuml-0.30.dist-info/namespace_packages.txt +0 -1
  126. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_plantuml-0.30.dist-info/top_level.txt +0 -1
  127. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxext_opengraph-0.9.1.dist-info/top_level.txt +0 -1
  128. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/tornado/test/static/robots.txt +0 -2
  129. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/tornado/test/static_foo.txt +0 -2
  130. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/tornado-6.4.1.dist-info/top_level.txt +0 -1
  131. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/uc_micro_py-1.0.3.dist-info/top_level.txt +0 -1
  132. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/urllib3-2.2.1.dist-info/licenses/LICENSE.txt +0 -21
  133. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/wheel/vendored/vendor.txt +0 -1
  134. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/wheel-0.43.0.dist-info/LICENSE.txt +0 -21
  135. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/wheel-0.43.0.dist-info/entry_points.txt +0 -6
  136. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.venv/lib/python3.9/site-packages/zipp-3.19.2.dist-info/top_level.txt +0 -1
  137. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/common-build/requirements.txt +0 -12
  138. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/docs/_extra/robots.txt +0 -2
  139. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/docs/requirements.txt +0 -2
  140. sqlalchemy_cratedb-0.38.0/docs/.crate-docs/helpers/preview/etc/requirements.txt +0 -3
  141. sqlalchemy_cratedb-0.38.0/docs/_extra/robots.txt +0 -4
  142. sqlalchemy_cratedb-0.38.0/src/sqlalchemy_cratedb/support/__init__.py +0 -14
  143. sqlalchemy_cratedb-0.38.0/src/sqlalchemy_cratedb/support/util.py +0 -41
  144. sqlalchemy_cratedb-0.38.0/src/sqlalchemy_cratedb.egg-info/SOURCES.txt +0 -156
  145. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/CODE_OF_CONDUCT.md +0 -0
  146. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/CONTRIBUTING.md +0 -0
  147. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/DEVELOP.md +0 -0
  148. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/LICENSE +0 -0
  149. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/MANIFEST.in +0 -0
  150. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/NOTICE +0 -0
  151. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/README.md +0 -0
  152. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/backlog.md +0 -0
  153. {sqlalchemy_cratedb-0.38.0/docs/.crate-docs/.build → sqlalchemy_cratedb-0.39.0/docs/_extra}/robots.txt +0 -0
  154. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/docs/requirements.txt +0 -0
  155. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/setup.cfg +0 -0
  156. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/setup.py +0 -0
  157. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb/compat/__init__.py +0 -0
  158. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb.egg-info/dependency_links.txt +0 -0
  159. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb.egg-info/entry_points.txt +0 -0
  160. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/src/sqlalchemy_cratedb.egg-info/top_level.txt +0 -0
  161. {sqlalchemy_cratedb-0.38.0 → sqlalchemy_cratedb-0.39.0}/tests/test_schema.py +0 -0
@@ -1,8 +1,10 @@
1
1
  # Changelog
2
2
 
3
-
4
3
  ## Unreleased
5
4
 
5
+ ## 2024/08/29 0.39.0
6
+ Added `quote_relation_name` support utility function
7
+
6
8
  ## 2024/06/25 0.38.0
7
9
  - Added/reactivated documentation as `sqlalchemy-cratedb`
8
10
  - Added `CrateIdentifierPreparer`, in order to quote reserved words
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlalchemy-cratedb
3
- Version: 0.38.0
3
+ Version: 0.39.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.dev0
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.28; 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.20; 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."
@@ -84,34 +80,32 @@ dynamic = [
84
80
  "version",
85
81
  ]
86
82
  dependencies = [
87
- 'backports.zoneinfo<1; python_version < "3.9"',
88
- "crate==1.0.0dev0",
83
+ "backports.zoneinfo<1; python_version<'3.9'",
84
+ "crate==1.0.0.dev0",
89
85
  "geojson<4,>=2.5",
90
- 'importlib-resources; python_version < "3.9"',
86
+ "importlib-resources; python_version<'3.9'",
91
87
  "sqlalchemy<2.1,>=1",
92
88
  "verlib2==0.2",
93
89
  ]
94
- [project.optional-dependencies]
95
- all = [
90
+ optional-dependencies.all = [
96
91
  "sqlalchemy-cratedb[vector]",
97
92
  ]
98
- develop = [
99
- "black<25",
100
- "mypy<1.11",
101
- "poethepoet<0.27",
102
- "pyproject-fmt<2.2",
103
- "ruff<0.5",
104
- "validate-pyproject<0.19",
93
+ optional-dependencies.develop = [
94
+ "mypy<1.12",
95
+ "poethepoet<0.28",
96
+ "pyproject-fmt<2.3",
97
+ "ruff<0.7",
98
+ "validate-pyproject<0.20",
105
99
  ]
106
- doc = [
100
+ optional-dependencies.doc = [
107
101
  "crate-docs-theme>=0.26.5",
108
- "sphinx<8,>=3.5",
102
+ "sphinx>=3.5,<9",
109
103
  ]
110
- release = [
104
+ optional-dependencies.release = [
111
105
  "build<2",
112
106
  "twine<6",
113
107
  ]
114
- test = [
108
+ optional-dependencies.test = [
115
109
  "cratedb-toolkit[testing]",
116
110
  "dask[dataframe]",
117
111
  "pandas<2.3",
@@ -120,54 +114,81 @@ test = [
120
114
  "pytest-cov<6",
121
115
  "pytest-mock<4",
122
116
  ]
123
- vector = [
117
+ optional-dependencies.vector = [
124
118
  "numpy",
125
119
  ]
126
- [project.urls]
127
- changelog = "https://github.com/crate/sqlalchemy-cratedb/blob/main/CHANGES.md"
128
- documentation = "https://cratedb.com/docs/sqlalchemy-cratedb/"
129
- homepage = "https://cratedb.com/docs/sqlalchemy-cratedb/"
130
- repository = "https://github.com/crate/sqlalchemy-cratedb"
131
- [project.entry-points."sqlalchemy.dialects"]
132
- 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"
133
125
 
134
126
  [tool.black]
135
127
  line-length = 100
136
128
 
137
- [tool.coverage.paths]
138
- source = [
139
- "src/",
129
+ [tool.ruff]
130
+ line-length = 100
131
+
132
+ extend-exclude = [
140
133
  ]
141
134
 
142
- [tool.coverage.run]
143
- branch = false
144
- omit = [
145
- "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",
146
161
  ]
147
162
 
148
- [tool.coverage.report]
149
- fail_under = 0
150
- show_missing = true
151
- exclude_lines = [
152
- "# pragma: no cover",
153
- "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",
154
180
  ]
155
181
 
156
- [tool.mypy]
157
- mypy_path = "src"
158
- packages = ["sqlalchemy_cratedb"]
159
- 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
160
191
  ]
161
- check_untyped_defs = true
162
- explicit_package_bases = true
163
- ignore_missing_imports = true
164
- implicit_optional = true
165
- install_types = true
166
- namespace_packages = true
167
- non_interactive = true
168
- # Needed until `mypy-0.990` for `ConverterDefinition` in `converter.py`.
169
- # https://github.com/python/mypy/issues/731#issuecomment-1260976955
170
- # enable_recursive_aliases = true
171
192
 
172
193
  [tool.pytest.ini_options]
173
194
  addopts = """
@@ -179,7 +200,7 @@ log_level = "DEBUG"
179
200
  log_cli_level = "DEBUG"
180
201
  log_format = "%(asctime)-15s [%(name)-36s] %(levelname)-8s: %(message)s"
181
202
  pythonpath = [
182
- "src"
203
+ "src",
183
204
  ]
184
205
  testpaths = [
185
206
  "examples",
@@ -194,60 +215,44 @@ xfail_strict = true
194
215
  markers = [
195
216
  ]
196
217
 
197
- [tool.ruff]
198
- line-length = 100
199
-
200
- select = [
201
- # Bandit
202
- "S",
203
- # Bugbear
204
- "B",
205
- # Builtins
206
- "A",
207
- # comprehensions
208
- "C4",
209
- # eradicate
210
- "ERA",
211
- # flake8-2020
212
- "YTT",
213
- # isort
214
- "I",
215
- # pandas-vet
216
- "PD",
217
- # print
218
- "T20",
219
- # Pycodestyle
220
- "E",
221
- "W",
222
- # Pyflakes
223
- "F",
224
- # return
225
- "RET",
218
+ [tool.coverage.paths]
219
+ source = [
220
+ "src/",
226
221
  ]
227
222
 
228
- extend-ignore = [
229
- # zip() without an explicit strict= parameter
230
- "B905",
231
- # df is a bad variable name. Be kinder to your future self.
232
- "PD901",
233
- # Unnecessary variable assignment before `return` statement
234
- "RET504",
235
- # Unnecessary `elif` after `return` statement
236
- "RET505",
237
- # Probable insecure usage of temporary file or directory
238
- "S108",
223
+ [tool.coverage.run]
224
+ branch = false
225
+ omit = [
226
+ "tests/*",
239
227
  ]
240
228
 
241
- extend-exclude = [
229
+ [tool.coverage.report]
230
+ fail_under = 0
231
+ show_missing = true
232
+ exclude_lines = [
233
+ "# pragma: no cover",
234
+ "raise NotImplemented",
242
235
  ]
243
236
 
244
- [tool.ruff.per-file-ignores]
245
- "*/tests/*" = [
246
- "S101", # Allow use of `assert`, and `print`.
247
- "S608", # Possible SQL injection vector through string-based query construction.
237
+ [tool.mypy]
238
+ mypy_path = "src"
239
+ packages = [ "sqlalchemy_cratedb" ]
240
+ exclude = [
248
241
  ]
249
- "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
250
252
 
253
+ [tool.versioningit.vcs]
254
+ method = "git"
255
+ default-tag = "0.0.0"
251
256
 
252
257
  # ===================
253
258
  # Tasks configuration
@@ -256,23 +261,26 @@ extend-exclude = [
256
261
  [tool.poe.tasks]
257
262
 
258
263
  check = [
259
- # "lint",
264
+ "lint",
260
265
  "test",
261
266
  ]
262
267
 
263
268
  format = [
264
- { cmd = "black ." },
265
- # Configure Ruff not to auto-fix (remove!):
266
- # unused imports (F401), unused variables (F841), `print` statements (T201), and commented-out code (ERA001).
267
- { cmd = "ruff --fix --ignore=ERA --ignore=F401 --ignore=F841 --ignore=T20 --ignore=ERA001 ." },
269
+ # Format project metadata.
268
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" },
269
277
  ]
270
278
 
271
279
  lint = [
272
- { cmd = "ruff ." },
273
- { cmd = "black --check ." },
280
+ { cmd = "ruff format --check" },
281
+ { cmd = "ruff check" },
274
282
  { cmd = "validate-pyproject pyproject.toml" },
275
- { cmd = "mypy" },
283
+ # { cmd = "mypy" },
276
284
  ]
277
285
 
278
286
  release = [
@@ -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: