sqlalchemy-cratedb 0.41.0.dev2__tar.gz → 0.42.0.dev0__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.
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/CHANGES.md +2 -0
- {sqlalchemy_cratedb-0.41.0.dev2/src/sqlalchemy_cratedb.egg-info → sqlalchemy_cratedb-0.42.0.dev0}/PKG-INFO +13 -11
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/pyproject.toml +18 -16
- sqlalchemy_cratedb-0.42.0.dev0/setup.cfg +4 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/__init__.py +15 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/compat/core14.py +1 -5
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/compiler.py +41 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/dialect.py +42 -27
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/type/__init__.py +2 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/type/array.py +5 -0
- sqlalchemy_cratedb-0.42.0.dev0/src/sqlalchemy_cratedb/type/binary.py +44 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0/src/sqlalchemy_cratedb.egg-info}/PKG-INFO +13 -11
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb.egg-info/SOURCES.txt +1 -1
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb.egg-info/requires.txt +12 -11
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/tests/test_schema.py +4 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/tests/test_support_pandas.py +46 -0
- sqlalchemy_cratedb-0.41.0.dev2/setup.cfg +0 -7
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/CODE_OF_CONDUCT.md +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/CONTRIBUTING.md +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/DEVELOP.md +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/LICENSE +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/MANIFEST.in +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/NOTICE +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/README.md +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/backlog.md +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/advanced-querying.rst.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/crud.rst.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/data-types.rst.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/dataframe.rst.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/getting-started.rst.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/index-all.rst.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/index.rst.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/inspection-reflection.rst.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/install.rst.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/migrate-from-crate-client.md.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/overview.rst.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/support.md.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_sources/working-with-types.rst.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_static/bundle/main.js.LICENSE.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/_static/vendor/furo/scripts/furo.js.LICENSE.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/output.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.build/robots.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/PyYAML-6.0.2.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/alabaster-0.7.16.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/babel-2.16.0.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/babel-2.16.0.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/certifi-2024.8.30.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/charset_normalizer-3.4.0.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/charset_normalizer-3.4.0.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/colorama-0.4.6.dist-info/licenses/LICENSE.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/crate/theme/rtd/crate/static/bundle/main.js.LICENSE.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/crate/theme/rtd/crate/static/vendor/furo/scripts/furo.js.LICENSE.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/crate_docs_theme-0.36.1.dist-info/namespace_packages.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/crate_docs_theme-0.36.1.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/README.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsa.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsb.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsc.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsn.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamso.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isoamsr.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isobox.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isocyr1.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isocyr2.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isodia.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk1.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk2.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk3.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk4-wide.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isogrk4.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isolat1.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isolat2.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomfrk-wide.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomfrk.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomopf-wide.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomopf.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomscr-wide.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isomscr.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isonum.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isopub.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/isotech.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/mmlalias.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/mmlextra-wide.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/mmlextra.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/s5defs.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/xhtml1-lat1.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/xhtml1-special.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/parsers/rst/include/xhtml1-symbol.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/writers/html4css1/template.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/writers/html5_polyglot/template.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/writers/pep_html/template.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils/writers/s5_html/themes/README.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils-0.19.dist-info/COPYING.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils-0.19.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils-0.19.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/docutils_stubs-0.0.22.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/furo/theme/furo/static/scripts/furo.js.LICENSE.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/furo-2024.5.6.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/imagesize-1.4.1.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/importlib_metadata-8.5.0.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/jinja2-3.1.4.dist-info/LICENSE.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/jinja2-3.1.4.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/linkify_it_py-2.0.3.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/livereload-2.7.0.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/livereload-2.7.0.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/markdown_it_py-3.0.0.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/myst_parser-3.0.1.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip/_vendor/vendor.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip-24.3.1.dist-info/AUTHORS.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip-24.3.1.dist-info/LICENSE.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip-24.3.1.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/pip-24.3.1.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/pygments-2.18.0.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/requests-2.32.3.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/setuptools-58.1.0.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/setuptools-58.1.0.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/snowballstemmer-2.2.0.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx-7.1.2.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_autobuild-2021.3.14.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_basic_ng-1.0.0b2.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_basic_ng-1.0.0b2.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_copybutton-0.5.2.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_design/compiled/material-icons_VERSION.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_design_elements-0.4.0.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_sitemap-2.6.0.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinx_togglebutton-0.3.2.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_jsmath-1.0.1.dist-info/namespace_packages.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_jsmath-1.0.1.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_mermaid-1.0.0.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_plantuml-0.30.dist-info/namespace_packages.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxcontrib_plantuml-0.30.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/sphinxext_opengraph-0.9.1.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/tornado/test/static/robots.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/tornado/test/static_foo.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/tornado-6.4.1.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/uc_micro_py-1.0.3.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/urllib3-2.2.3.dist-info/licenses/LICENSE.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/wheel/vendored/vendor.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/wheel-0.45.0.dist-info/LICENSE.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/wheel-0.45.0.dist-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/.venv/lib/python3.9/site-packages/zipp-3.21.0.dist-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/common-build/requirements.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/docs/_extra/robots.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/docs/requirements.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/.crate-docs/helpers/preview/etc/requirements.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/_extra/robots.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/docs/requirements.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/setup.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/compat/__init__.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/compat/api13.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/compat/core10.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/compat/core20.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/predicate.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/sa_version.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/support/__init__.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/support/pandas.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/support/polyfill.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/support/util.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/type/geo.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/type/object.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/type/vector.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb.egg-info/dependency_links.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb.egg-info/entry_points.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb.egg-info/top_level.txt +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/tests/test_error_handling.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/tests/test_support_polyfill.py +0 -0
- {sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/tests/test_support_util.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: sqlalchemy-cratedb
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.42.0.dev0
|
4
4
|
Summary: SQLAlchemy dialect for CrateDB.
|
5
5
|
Author-email: "Crate.io" <office@crate.io>
|
6
6
|
License: Apache License 2.0
|
@@ -64,19 +64,20 @@ Description-Content-Type: text/markdown
|
|
64
64
|
License-File: LICENSE
|
65
65
|
License-File: NOTICE
|
66
66
|
Requires-Dist: backports.zoneinfo<1; python_version < "3.9"
|
67
|
-
Requires-Dist: crate<3,>=2
|
67
|
+
Requires-Dist: crate<3,>=2
|
68
68
|
Requires-Dist: geojson<4,>=2.5
|
69
|
+
Requires-Dist: importlib-metadata; python_version < "3.8"
|
69
70
|
Requires-Dist: importlib-resources; python_version < "3.9"
|
70
71
|
Requires-Dist: sqlalchemy<2.1,>=1
|
71
|
-
Requires-Dist: verlib2
|
72
|
+
Requires-Dist: verlib2<0.4
|
72
73
|
Provides-Extra: all
|
73
74
|
Requires-Dist: sqlalchemy-cratedb[vector]; extra == "all"
|
74
75
|
Provides-Extra: develop
|
75
|
-
Requires-Dist: mypy<1.
|
76
|
-
Requires-Dist: poethepoet<
|
77
|
-
Requires-Dist: pyproject-fmt<
|
78
|
-
Requires-Dist: ruff<0.
|
79
|
-
Requires-Dist: validate-pyproject<
|
76
|
+
Requires-Dist: mypy<1.16; extra == "develop"
|
77
|
+
Requires-Dist: poethepoet<1; extra == "develop"
|
78
|
+
Requires-Dist: pyproject-fmt<3; extra == "develop"
|
79
|
+
Requires-Dist: ruff<0.12; extra == "develop"
|
80
|
+
Requires-Dist: validate-pyproject<1; extra == "develop"
|
80
81
|
Provides-Extra: doc
|
81
82
|
Requires-Dist: crate-docs-theme>=0.26.5; extra == "doc"
|
82
83
|
Requires-Dist: sphinx<9,>=3.5; extra == "doc"
|
@@ -85,14 +86,15 @@ Requires-Dist: build<2; extra == "release"
|
|
85
86
|
Requires-Dist: twine<7; extra == "release"
|
86
87
|
Provides-Extra: test
|
87
88
|
Requires-Dist: cratedb-toolkit[testing]; extra == "test"
|
88
|
-
Requires-Dist: dask[dataframe];
|
89
|
-
Requires-Dist: pandas<2.3; extra == "test"
|
89
|
+
Requires-Dist: dask[dataframe]; extra == "test"
|
90
|
+
Requires-Dist: pandas[test]<2.3; extra == "test"
|
90
91
|
Requires-Dist: pueblo>=0.0.7; extra == "test"
|
91
92
|
Requires-Dist: pytest<9; extra == "test"
|
92
93
|
Requires-Dist: pytest-cov<7; extra == "test"
|
93
94
|
Requires-Dist: pytest-mock<4; extra == "test"
|
94
95
|
Provides-Extra: vector
|
95
96
|
Requires-Dist: numpy; extra == "vector"
|
97
|
+
Dynamic: license-file
|
96
98
|
|
97
99
|
# SQLAlchemy dialect for CrateDB
|
98
100
|
|
@@ -7,7 +7,10 @@ requires = [
|
|
7
7
|
|
8
8
|
[project]
|
9
9
|
name = "sqlalchemy-cratedb"
|
10
|
-
|
10
|
+
#dynamic = [
|
11
|
+
# "version",
|
12
|
+
#]
|
13
|
+
version = "0.42.0.dev0"
|
11
14
|
description = "SQLAlchemy dialect for CrateDB."
|
12
15
|
readme = "README.md"
|
13
16
|
keywords = [
|
@@ -78,26 +81,24 @@ classifiers = [
|
|
78
81
|
"Topic :: Text Processing",
|
79
82
|
"Topic :: Utilities",
|
80
83
|
]
|
81
|
-
#dynamic = [
|
82
|
-
# "version",
|
83
|
-
#]
|
84
84
|
dependencies = [
|
85
85
|
"backports.zoneinfo<1; python_version<'3.9'",
|
86
|
-
"crate>=2
|
87
|
-
"geojson
|
86
|
+
"crate>=2,<3",
|
87
|
+
"geojson>=2.5,<4",
|
88
|
+
"importlib-metadata; python_version<'3.8'",
|
88
89
|
"importlib-resources; python_version<'3.9'",
|
89
|
-
"sqlalchemy
|
90
|
-
"verlib2
|
90
|
+
"sqlalchemy>=1,<2.1",
|
91
|
+
"verlib2<0.4",
|
91
92
|
]
|
92
93
|
optional-dependencies.all = [
|
93
94
|
"sqlalchemy-cratedb[vector]",
|
94
95
|
]
|
95
96
|
optional-dependencies.develop = [
|
96
|
-
"mypy<1.
|
97
|
-
"poethepoet<
|
98
|
-
"pyproject-fmt<
|
99
|
-
"ruff<0.
|
100
|
-
"validate-pyproject<
|
97
|
+
"mypy<1.16",
|
98
|
+
"poethepoet<1",
|
99
|
+
"pyproject-fmt<3",
|
100
|
+
"ruff<0.12",
|
101
|
+
"validate-pyproject<1",
|
101
102
|
]
|
102
103
|
optional-dependencies.doc = [
|
103
104
|
"crate-docs-theme>=0.26.5",
|
@@ -109,8 +110,8 @@ optional-dependencies.release = [
|
|
109
110
|
]
|
110
111
|
optional-dependencies.test = [
|
111
112
|
"cratedb-toolkit[testing]",
|
112
|
-
"dask[dataframe]
|
113
|
-
"pandas<2.3",
|
113
|
+
"dask[dataframe]",
|
114
|
+
"pandas[test]<2.3",
|
114
115
|
"pueblo>=0.0.7",
|
115
116
|
"pytest<9",
|
116
117
|
"pytest-cov<7",
|
@@ -253,8 +254,9 @@ non_interactive = true
|
|
253
254
|
# enable_recursive_aliases = true
|
254
255
|
|
255
256
|
[tool.versioningit.vcs]
|
256
|
-
method = "git"
|
257
|
+
method = "git-archive"
|
257
258
|
default-tag = "0.0.0"
|
259
|
+
describe-subst = "$Format:%(describe:tags)$"
|
258
260
|
|
259
261
|
# ===================
|
260
262
|
# Tasks configuration
|
{sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/__init__.py
RENAMED
@@ -52,7 +52,22 @@ if SA_VERSION < SA_1_4:
|
|
52
52
|
monkeypatch_add_exec_driver_sql()
|
53
53
|
|
54
54
|
|
55
|
+
try:
|
56
|
+
from importlib.metadata import PackageNotFoundError, version
|
57
|
+
except (ImportError, ModuleNotFoundError): # pragma:nocover
|
58
|
+
from importlib_metadata import ( # type: ignore[assignment,no-redef,unused-ignore]
|
59
|
+
PackageNotFoundError,
|
60
|
+
version,
|
61
|
+
)
|
62
|
+
|
63
|
+
try:
|
64
|
+
__version__ = version("sqlalchemy-cratedb")
|
65
|
+
except PackageNotFoundError: # pragma: no cover
|
66
|
+
__version__ = "unknown"
|
67
|
+
|
68
|
+
|
55
69
|
__all__ = [
|
70
|
+
__version__,
|
56
71
|
dialect,
|
57
72
|
FloatVector,
|
58
73
|
Geopoint,
|
@@ -317,11 +317,7 @@ def _get_crud_params(compiler, stmt, compile_state, **kw):
|
|
317
317
|
_column_as_key,
|
318
318
|
kw,
|
319
319
|
)
|
320
|
-
elif
|
321
|
-
not values
|
322
|
-
and compiler.for_executemany # noqa: W503
|
323
|
-
and compiler.dialect.supports_default_metavalue # noqa: W503
|
324
|
-
):
|
320
|
+
elif not values and compiler.for_executemany and compiler.dialect.supports_default_metavalue:
|
325
321
|
# convert an "INSERT DEFAULT VALUES"
|
326
322
|
# into INSERT (firstcol) VALUES (DEFAULT) which can be turned
|
327
323
|
# into an in-place multi values. This supports
|
{sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/compiler.py
RENAMED
@@ -200,6 +200,17 @@ class CrateDDLCompiler(compiler.DDLCompiler):
|
|
200
200
|
)
|
201
201
|
return
|
202
202
|
|
203
|
+
def visit_create_index(self, create, **kw) -> str:
|
204
|
+
"""
|
205
|
+
CrateDB does not support `CREATE INDEX` statements.
|
206
|
+
"""
|
207
|
+
warnings.warn(
|
208
|
+
"CrateDB does not support `CREATE INDEX` statements, "
|
209
|
+
"they will be omitted when generating DDL statements.",
|
210
|
+
stacklevel=2,
|
211
|
+
)
|
212
|
+
return "SELECT 1"
|
213
|
+
|
203
214
|
|
204
215
|
class CrateTypeCompiler(compiler.GenericTypeCompiler):
|
205
216
|
def visit_string(self, type_, **kw):
|
@@ -254,6 +265,36 @@ class CrateTypeCompiler(compiler.GenericTypeCompiler):
|
|
254
265
|
"""
|
255
266
|
return "TIMESTAMP %s" % ((type_.timezone and "WITH" or "WITHOUT") + " TIME ZONE",)
|
256
267
|
|
268
|
+
def visit_BLOB(self, type_, **kw):
|
269
|
+
return "STRING"
|
270
|
+
|
271
|
+
def visit_FLOAT(self, type_, **kw):
|
272
|
+
"""
|
273
|
+
From `sqlalchemy.sql.sqltypes.Float`.
|
274
|
+
|
275
|
+
When a :paramref:`.Float.precision` is not provided in a
|
276
|
+
:class:`_types.Float` type some backend may compile this type as
|
277
|
+
an 8 bytes / 64 bit float datatype. To use a 4 bytes / 32 bit float
|
278
|
+
datatype a precision <= 24 can usually be provided or the
|
279
|
+
:class:`_types.REAL` type can be used.
|
280
|
+
This is known to be the case in the PostgreSQL and MSSQL dialects
|
281
|
+
that render the type as ``FLOAT`` that's in both an alias of
|
282
|
+
``DOUBLE PRECISION``. Other third party dialects may have similar
|
283
|
+
behavior.
|
284
|
+
"""
|
285
|
+
if not type_.precision:
|
286
|
+
return "FLOAT"
|
287
|
+
elif type_.precision <= 24:
|
288
|
+
return "FLOAT"
|
289
|
+
else:
|
290
|
+
return "DOUBLE"
|
291
|
+
|
292
|
+
def visit_JSON(self, type_, **kw):
|
293
|
+
return "OBJECT"
|
294
|
+
|
295
|
+
def visit_JSONB(self, type_, **kw):
|
296
|
+
return "OBJECT"
|
297
|
+
|
257
298
|
|
258
299
|
class CrateCompiler(compiler.SQLCompiler):
|
259
300
|
def visit_getitem_binary(self, binary, operator, **kw):
|
{sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/src/sqlalchemy_cratedb/dialect.py
RENAMED
@@ -34,46 +34,60 @@ from .compiler import (
|
|
34
34
|
)
|
35
35
|
from .sa_version import SA_1_4, SA_2_0, SA_VERSION
|
36
36
|
from .type import FloatVector, ObjectArray, ObjectType
|
37
|
+
from .type.binary import LargeBinary
|
37
38
|
|
39
|
+
# For SQLAlchemy >= 1.1.
|
38
40
|
TYPES_MAP = {
|
39
|
-
"boolean": sqltypes.
|
40
|
-
"short": sqltypes.
|
41
|
-
"smallint": sqltypes.
|
42
|
-
"timestamp": sqltypes.TIMESTAMP
|
43
|
-
"timestamp with time zone": sqltypes.TIMESTAMP(timezone=
|
41
|
+
"boolean": sqltypes.BOOLEAN,
|
42
|
+
"short": sqltypes.SMALLINT,
|
43
|
+
"smallint": sqltypes.SMALLINT,
|
44
|
+
"timestamp": sqltypes.TIMESTAMP,
|
45
|
+
"timestamp with time zone": sqltypes.TIMESTAMP(timezone=False),
|
46
|
+
"timestamp without time zone": sqltypes.TIMESTAMP(timezone=True),
|
44
47
|
"object": ObjectType,
|
45
|
-
"
|
46
|
-
"
|
47
|
-
"
|
48
|
+
"object_array": ObjectArray, # TODO: Can this also be improved to use `sqltypes.ARRAY`?
|
49
|
+
"integer": sqltypes.INTEGER,
|
50
|
+
"long": sqltypes.BIGINT,
|
51
|
+
"bigint": sqltypes.BIGINT,
|
52
|
+
"float": sqltypes.FLOAT,
|
48
53
|
"double": sqltypes.DECIMAL,
|
49
54
|
"double precision": sqltypes.DECIMAL,
|
50
|
-
"
|
51
|
-
"
|
52
|
-
"
|
53
|
-
"string": sqltypes.String,
|
54
|
-
"text": sqltypes.String,
|
55
|
+
"real": sqltypes.REAL,
|
56
|
+
"string": sqltypes.VARCHAR,
|
57
|
+
"text": sqltypes.VARCHAR,
|
55
58
|
"float_vector": FloatVector,
|
56
59
|
}
|
57
60
|
|
58
|
-
#
|
59
|
-
# TODO: Dissolve.
|
61
|
+
# For SQLAlchemy >= 1.4.
|
60
62
|
try:
|
61
63
|
from sqlalchemy.types import ARRAY
|
62
64
|
|
63
|
-
TYPES_MAP["integer_array"] = ARRAY(sqltypes.
|
64
|
-
TYPES_MAP["boolean_array"] = ARRAY(sqltypes.
|
65
|
-
TYPES_MAP["short_array"] = ARRAY(sqltypes.
|
66
|
-
TYPES_MAP["smallint_array"] = ARRAY(sqltypes.
|
65
|
+
TYPES_MAP["integer_array"] = ARRAY(sqltypes.INTEGER)
|
66
|
+
TYPES_MAP["boolean_array"] = ARRAY(sqltypes.BOOLEAN)
|
67
|
+
TYPES_MAP["short_array"] = ARRAY(sqltypes.SMALLINT)
|
68
|
+
TYPES_MAP["smallint_array"] = ARRAY(sqltypes.SMALLINT)
|
69
|
+
TYPES_MAP["timestamp_array"] = ARRAY(sqltypes.TIMESTAMP)
|
67
70
|
TYPES_MAP["timestamp_array"] = ARRAY(sqltypes.TIMESTAMP(timezone=False))
|
68
71
|
TYPES_MAP["timestamp with time zone_array"] = ARRAY(sqltypes.TIMESTAMP(timezone=True))
|
69
|
-
TYPES_MAP["long_array"] = ARRAY(sqltypes.
|
70
|
-
TYPES_MAP["bigint_array"] = ARRAY(sqltypes.
|
71
|
-
TYPES_MAP["
|
72
|
-
TYPES_MAP["
|
73
|
-
TYPES_MAP["
|
74
|
-
TYPES_MAP["
|
75
|
-
|
76
|
-
|
72
|
+
TYPES_MAP["long_array"] = ARRAY(sqltypes.BIGINT)
|
73
|
+
TYPES_MAP["bigint_array"] = ARRAY(sqltypes.BIGINT)
|
74
|
+
TYPES_MAP["float_array"] = ARRAY(sqltypes.FLOAT)
|
75
|
+
TYPES_MAP["real_array"] = ARRAY(sqltypes.REAL)
|
76
|
+
TYPES_MAP["string_array"] = ARRAY(sqltypes.VARCHAR)
|
77
|
+
TYPES_MAP["text_array"] = ARRAY(sqltypes.VARCHAR)
|
78
|
+
except Exception: # noqa: S110
|
79
|
+
pass
|
80
|
+
|
81
|
+
# For SQLAlchemy >= 2.0.
|
82
|
+
try:
|
83
|
+
from sqlalchemy.types import DOUBLE, DOUBLE_PRECISION
|
84
|
+
|
85
|
+
TYPES_MAP["real"] = DOUBLE
|
86
|
+
TYPES_MAP["real_array"] = ARRAY(DOUBLE)
|
87
|
+
TYPES_MAP["double"] = DOUBLE
|
88
|
+
TYPES_MAP["double_array"] = ARRAY(DOUBLE)
|
89
|
+
TYPES_MAP["double precision"] = DOUBLE_PRECISION
|
90
|
+
TYPES_MAP["double precision_array"] = ARRAY(DOUBLE_PRECISION)
|
77
91
|
except Exception: # noqa: S110
|
78
92
|
pass
|
79
93
|
|
@@ -158,6 +172,7 @@ colspecs = {
|
|
158
172
|
sqltypes.Date: Date,
|
159
173
|
sqltypes.DateTime: DateTime,
|
160
174
|
sqltypes.TIMESTAMP: DateTime,
|
175
|
+
sqltypes.LargeBinary: LargeBinary,
|
161
176
|
}
|
162
177
|
|
163
178
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from .array import ObjectArray
|
2
|
+
from .binary import LargeBinary
|
2
3
|
from .geo import Geopoint, Geoshape
|
3
4
|
from .object import ObjectType
|
4
5
|
from .vector import FloatVector, knn_match
|
@@ -6,6 +7,7 @@ from .vector import FloatVector, knn_match
|
|
6
7
|
__all__ = [
|
7
8
|
Geopoint,
|
8
9
|
Geoshape,
|
10
|
+
LargeBinary,
|
9
11
|
ObjectArray,
|
10
12
|
ObjectType,
|
11
13
|
FloatVector,
|
@@ -96,6 +96,8 @@ class Any(expression.ColumnElement):
|
|
96
96
|
self.operator = operator
|
97
97
|
|
98
98
|
|
99
|
+
# TODO: Should this be inherited from PostgreSQL's
|
100
|
+
# `ARRAY`, in order to improve type checking?
|
99
101
|
class _ObjectArray(sqltypes.UserDefinedType):
|
100
102
|
cache_ok = True
|
101
103
|
|
@@ -139,5 +141,8 @@ class _ObjectArray(sqltypes.UserDefinedType):
|
|
139
141
|
def get_col_spec(self, **kws):
|
140
142
|
return "ARRAY(OBJECT)"
|
141
143
|
|
144
|
+
def as_generic(self, **kwargs):
|
145
|
+
return sqltypes.ARRAY
|
146
|
+
|
142
147
|
|
143
148
|
ObjectArray = MutableList.as_mutable(_ObjectArray)
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import base64
|
2
|
+
|
3
|
+
import sqlalchemy as sa
|
4
|
+
|
5
|
+
|
6
|
+
class LargeBinary(sa.String):
|
7
|
+
"""A type for large binary byte data.
|
8
|
+
|
9
|
+
The :class:`.LargeBinary` type corresponds to a large and/or unlengthed
|
10
|
+
binary type for the target platform, such as BLOB on MySQL and BYTEA for
|
11
|
+
PostgreSQL. It also handles the necessary conversions for the DBAPI.
|
12
|
+
|
13
|
+
"""
|
14
|
+
|
15
|
+
__visit_name__ = "large_binary"
|
16
|
+
|
17
|
+
def bind_processor(self, dialect):
|
18
|
+
if dialect.dbapi is None:
|
19
|
+
return None
|
20
|
+
|
21
|
+
# TODO: DBAPIBinary = dialect.dbapi.Binary
|
22
|
+
|
23
|
+
def process(value):
|
24
|
+
if value is not None:
|
25
|
+
# TODO: return DBAPIBinary(value)
|
26
|
+
return base64.b64encode(value).decode()
|
27
|
+
else:
|
28
|
+
return None
|
29
|
+
|
30
|
+
return process
|
31
|
+
|
32
|
+
# Python 3 has native bytes() type
|
33
|
+
# both sqlite3 and pg8000 seem to return it,
|
34
|
+
# psycopg2 as of 2.5 returns 'memoryview'
|
35
|
+
def result_processor(self, dialect, coltype):
|
36
|
+
if dialect.returns_native_bytes:
|
37
|
+
return None
|
38
|
+
|
39
|
+
def process(value):
|
40
|
+
if value is not None:
|
41
|
+
return base64.b64decode(value)
|
42
|
+
return value
|
43
|
+
|
44
|
+
return process
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: sqlalchemy-cratedb
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.42.0.dev0
|
4
4
|
Summary: SQLAlchemy dialect for CrateDB.
|
5
5
|
Author-email: "Crate.io" <office@crate.io>
|
6
6
|
License: Apache License 2.0
|
@@ -64,19 +64,20 @@ Description-Content-Type: text/markdown
|
|
64
64
|
License-File: LICENSE
|
65
65
|
License-File: NOTICE
|
66
66
|
Requires-Dist: backports.zoneinfo<1; python_version < "3.9"
|
67
|
-
Requires-Dist: crate<3,>=2
|
67
|
+
Requires-Dist: crate<3,>=2
|
68
68
|
Requires-Dist: geojson<4,>=2.5
|
69
|
+
Requires-Dist: importlib-metadata; python_version < "3.8"
|
69
70
|
Requires-Dist: importlib-resources; python_version < "3.9"
|
70
71
|
Requires-Dist: sqlalchemy<2.1,>=1
|
71
|
-
Requires-Dist: verlib2
|
72
|
+
Requires-Dist: verlib2<0.4
|
72
73
|
Provides-Extra: all
|
73
74
|
Requires-Dist: sqlalchemy-cratedb[vector]; extra == "all"
|
74
75
|
Provides-Extra: develop
|
75
|
-
Requires-Dist: mypy<1.
|
76
|
-
Requires-Dist: poethepoet<
|
77
|
-
Requires-Dist: pyproject-fmt<
|
78
|
-
Requires-Dist: ruff<0.
|
79
|
-
Requires-Dist: validate-pyproject<
|
76
|
+
Requires-Dist: mypy<1.16; extra == "develop"
|
77
|
+
Requires-Dist: poethepoet<1; extra == "develop"
|
78
|
+
Requires-Dist: pyproject-fmt<3; extra == "develop"
|
79
|
+
Requires-Dist: ruff<0.12; extra == "develop"
|
80
|
+
Requires-Dist: validate-pyproject<1; extra == "develop"
|
80
81
|
Provides-Extra: doc
|
81
82
|
Requires-Dist: crate-docs-theme>=0.26.5; extra == "doc"
|
82
83
|
Requires-Dist: sphinx<9,>=3.5; extra == "doc"
|
@@ -85,14 +86,15 @@ Requires-Dist: build<2; extra == "release"
|
|
85
86
|
Requires-Dist: twine<7; extra == "release"
|
86
87
|
Provides-Extra: test
|
87
88
|
Requires-Dist: cratedb-toolkit[testing]; extra == "test"
|
88
|
-
Requires-Dist: dask[dataframe];
|
89
|
-
Requires-Dist: pandas<2.3; extra == "test"
|
89
|
+
Requires-Dist: dask[dataframe]; extra == "test"
|
90
|
+
Requires-Dist: pandas[test]<2.3; extra == "test"
|
90
91
|
Requires-Dist: pueblo>=0.0.7; extra == "test"
|
91
92
|
Requires-Dist: pytest<9; extra == "test"
|
92
93
|
Requires-Dist: pytest-cov<7; extra == "test"
|
93
94
|
Requires-Dist: pytest-mock<4; extra == "test"
|
94
95
|
Provides-Extra: vector
|
95
96
|
Requires-Dist: numpy; extra == "vector"
|
97
|
+
Dynamic: license-file
|
96
98
|
|
97
99
|
# SQLAlchemy dialect for CrateDB
|
98
100
|
|
@@ -8,7 +8,6 @@ NOTICE
|
|
8
8
|
README.md
|
9
9
|
backlog.md
|
10
10
|
pyproject.toml
|
11
|
-
setup.cfg
|
12
11
|
setup.py
|
13
12
|
docs/requirements.txt
|
14
13
|
docs/.crate-docs/.build/output.txt
|
@@ -156,6 +155,7 @@ src/sqlalchemy_cratedb/support/polyfill.py
|
|
156
155
|
src/sqlalchemy_cratedb/support/util.py
|
157
156
|
src/sqlalchemy_cratedb/type/__init__.py
|
158
157
|
src/sqlalchemy_cratedb/type/array.py
|
158
|
+
src/sqlalchemy_cratedb/type/binary.py
|
159
159
|
src/sqlalchemy_cratedb/type/geo.py
|
160
160
|
src/sqlalchemy_cratedb/type/object.py
|
161
161
|
src/sqlalchemy_cratedb/type/vector.py
|
@@ -1,7 +1,10 @@
|
|
1
|
-
crate<3,>=2
|
1
|
+
crate<3,>=2
|
2
2
|
geojson<4,>=2.5
|
3
3
|
sqlalchemy<2.1,>=1
|
4
|
-
verlib2
|
4
|
+
verlib2<0.4
|
5
|
+
|
6
|
+
[:python_version < "3.8"]
|
7
|
+
importlib-metadata
|
5
8
|
|
6
9
|
[:python_version < "3.9"]
|
7
10
|
backports.zoneinfo<1
|
@@ -11,11 +14,11 @@ importlib-resources
|
|
11
14
|
sqlalchemy-cratedb[vector]
|
12
15
|
|
13
16
|
[develop]
|
14
|
-
mypy<1.
|
15
|
-
poethepoet<
|
16
|
-
pyproject-fmt<
|
17
|
-
ruff<0.
|
18
|
-
validate-pyproject<
|
17
|
+
mypy<1.16
|
18
|
+
poethepoet<1
|
19
|
+
pyproject-fmt<3
|
20
|
+
ruff<0.12
|
21
|
+
validate-pyproject<1
|
19
22
|
|
20
23
|
[doc]
|
21
24
|
crate-docs-theme>=0.26.5
|
@@ -27,14 +30,12 @@ twine<7
|
|
27
30
|
|
28
31
|
[test]
|
29
32
|
cratedb-toolkit[testing]
|
30
|
-
|
33
|
+
dask[dataframe]
|
34
|
+
pandas[test]<2.3
|
31
35
|
pueblo>=0.0.7
|
32
36
|
pytest<9
|
33
37
|
pytest-cov<7
|
34
38
|
pytest-mock<4
|
35
39
|
|
36
|
-
[test:python_version < "3.13"]
|
37
|
-
dask[dataframe]
|
38
|
-
|
39
40
|
[vector]
|
40
41
|
numpy
|
@@ -1,8 +1,12 @@
|
|
1
|
+
from unittest import skipIf
|
2
|
+
|
1
3
|
import sqlalchemy as sa
|
2
4
|
|
5
|
+
from sqlalchemy_cratedb.sa_version import SA_1_4, SA_VERSION
|
3
6
|
from tests.conftest import TESTDRIVE_DATA_SCHEMA
|
4
7
|
|
5
8
|
|
9
|
+
@skipIf(SA_VERSION < SA_1_4, "Does not work correctly on SQLAlchemy 1.3")
|
6
10
|
def test_correct_schema(cratedb_service):
|
7
11
|
"""
|
8
12
|
Tests that the correct schema is being picked up.
|
{sqlalchemy_cratedb-0.41.0.dev2 → sqlalchemy_cratedb-0.42.0.dev0}/tests/test_support_pandas.py
RENAMED
@@ -1,7 +1,10 @@
|
|
1
1
|
import re
|
2
2
|
import sys
|
3
3
|
|
4
|
+
import pandas as pd
|
4
5
|
import pytest
|
6
|
+
import sqlalchemy as sa
|
7
|
+
from pandas._testing import assert_equal
|
5
8
|
from pueblo.testing.pandas import makeTimeDataFrame
|
6
9
|
from sqlalchemy.exc import ProgrammingError
|
7
10
|
|
@@ -15,6 +18,18 @@ INSERT_RECORDS = 42
|
|
15
18
|
df = makeTimeDataFrame(nper=INSERT_RECORDS, freq="S")
|
16
19
|
df["time"] = df.index
|
17
20
|
|
21
|
+
float_double_data = {
|
22
|
+
"col_1": [19556.88, 629414.27, 51570.0, 2933.52, 20338.98],
|
23
|
+
"col_2": [
|
24
|
+
15379.920000000002,
|
25
|
+
1107140.42,
|
26
|
+
8081.999999999999,
|
27
|
+
1570.0300000000002,
|
28
|
+
29468.539999999997,
|
29
|
+
],
|
30
|
+
}
|
31
|
+
float_double_df = pd.DataFrame.from_dict(float_double_data)
|
32
|
+
|
18
33
|
|
19
34
|
@pytest.mark.skipif(
|
20
35
|
sys.version_info < (3, 8), reason="Feature not supported on Python 3.7 and earlier"
|
@@ -113,3 +128,34 @@ def test_table_kwargs_unknown(cratedb_service):
|
|
113
128
|
"passed to [ALTER | CREATE] TABLE statement]"
|
114
129
|
)
|
115
130
|
)
|
131
|
+
|
132
|
+
|
133
|
+
@pytest.mark.skipif(
|
134
|
+
sys.version_info < (3, 8), reason="Feature not supported on Python 3.7 and earlier"
|
135
|
+
)
|
136
|
+
@pytest.mark.skipif(
|
137
|
+
SA_VERSION < SA_2_0, reason="Feature not supported on SQLAlchemy 1.4 and earlier"
|
138
|
+
)
|
139
|
+
def test_float_double(cratedb_service):
|
140
|
+
"""
|
141
|
+
Validate I/O with floating point numbers, specifically DOUBLE types.
|
142
|
+
|
143
|
+
Motto: Do not lose precision when DOUBLE is required.
|
144
|
+
"""
|
145
|
+
tablename = "pandas_double"
|
146
|
+
engine = cratedb_service.database.engine
|
147
|
+
float_double_df.to_sql(
|
148
|
+
tablename,
|
149
|
+
engine,
|
150
|
+
if_exists="replace",
|
151
|
+
index=False,
|
152
|
+
)
|
153
|
+
with engine.connect() as conn:
|
154
|
+
conn.execute(sa.text(f"REFRESH TABLE {tablename}"))
|
155
|
+
df_load = pd.read_sql_table(tablename, engine)
|
156
|
+
|
157
|
+
before = float_double_df.sort_values(by="col_1", ignore_index=True)
|
158
|
+
after = df_load.sort_values(by="col_1", ignore_index=True)
|
159
|
+
|
160
|
+
pd.options.display.float_format = "{:.12f}".format
|
161
|
+
assert_equal(before, after, check_exact=True)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|