diff --git a/.github/workflows/ibis-backends.yml b/.github/workflows/ibis-backends.yml index 26e3199d349b..e816320b6097 100644 --- a/.github/workflows/ibis-backends.yml +++ b/.github/workflows/ibis-backends.yml @@ -166,7 +166,7 @@ jobs: sys-deps: - libgeos-dev - name: risingwave - title: Risingwave + title: RisingWave serial: true services: - risingwave @@ -304,7 +304,7 @@ jobs: - os: windows-latest backend: name: risingwave - title: Risingwave + title: RisingWave serial: true services: - risingwave diff --git a/docs/backends/risingwave.qmd b/docs/backends/risingwave.qmd index c7879e4a3893..1eb7cc9d504e 100644 --- a/docs/backends/risingwave.qmd +++ b/docs/backends/risingwave.qmd @@ -30,7 +30,7 @@ con = ibis.risingwave.connect() # <1> ## `conda` -Install for Risingwave: +Install for RisingWave: ```{.bash} conda install -c conda-forge ibis-risingwave @@ -48,7 +48,7 @@ con = ibis.risingwave.connect() # <1> ## `mamba` -Install for Risingwave: +Install for RisingWave: ```{.bash} mamba install -c conda-forge ibis-risingwave @@ -98,7 +98,7 @@ render_do_connect("risingwave") ```{python} #| echo: false -BACKEND = "Risingwave" +BACKEND = "RisingWave" ``` {{< include ./_templates/api.qmd >}} diff --git a/docs/backends/support/matrix.qmd b/docs/backends/support/matrix.qmd index 469ddf71b8c6..693c2739367b 100644 --- a/docs/backends/support/matrix.qmd +++ b/docs/backends/support/matrix.qmd @@ -72,7 +72,7 @@ import ibis.expr.operations as ops def make_support_matrix(): """Construct the backend operation support matrix data.""" - from ibis.backends.sql.compiler import ALL_OPERATIONS + from ibis.backends.sql.compilers.base import ALL_OPERATIONS support_matrix_ignored_operations = (ops.ScalarParameter,) diff --git a/ibis/backends/bigquery/__init__.py b/ibis/backends/bigquery/__init__.py index fb2a0c50188a..9452518ad518 100644 --- a/ibis/backends/bigquery/__init__.py +++ b/ibis/backends/bigquery/__init__.py @@ -31,10 +31,10 @@ rename_partitioned_column, schema_from_bigquery_table, ) -from ibis.backends.bigquery.compiler import BigQueryCompiler from ibis.backends.bigquery.datatypes import BigQuerySchema from ibis.backends.bigquery.udf.core import PythonToJavaScriptTranslator from ibis.backends.sql import SQLBackend +from ibis.backends.sql.compilers import BigQueryCompiler from ibis.backends.sql.datatypes import BigQueryType if TYPE_CHECKING: diff --git a/ibis/backends/bigquery/tests/unit/test_compiler.py b/ibis/backends/bigquery/tests/unit/test_compiler.py index 9a1ec9dbc04e..e66451316d88 100644 --- a/ibis/backends/bigquery/tests/unit/test_compiler.py +++ b/ibis/backends/bigquery/tests/unit/test_compiler.py @@ -13,7 +13,7 @@ import ibis.expr.datatypes as dt import ibis.expr.operations as ops from ibis import _ -from ibis.backends.bigquery.compiler import BigQueryCompiler +from ibis.backends.sql.compilers import BigQueryCompiler from ibis.common.annotations import ValidationError to_sql = ibis.bigquery.compile diff --git a/ibis/backends/clickhouse/__init__.py b/ibis/backends/clickhouse/__init__.py index 84d59b4fa7d6..b934708d2489 100644 --- a/ibis/backends/clickhouse/__init__.py +++ b/ibis/backends/clickhouse/__init__.py @@ -24,10 +24,10 @@ import ibis.expr.types as ir from ibis import util from ibis.backends import BaseBackend, CanCreateDatabase -from ibis.backends.clickhouse.compiler import ClickHouseCompiler from ibis.backends.clickhouse.converter import ClickHousePandasData from ibis.backends.sql import SQLBackend -from ibis.backends.sql.compiler import C +from ibis.backends.sql.compilers import ClickHouseCompiler +from ibis.backends.sql.compilers.base import C if TYPE_CHECKING: from collections.abc import Iterable, Iterator, Mapping diff --git a/ibis/backends/datafusion/__init__.py b/ibis/backends/datafusion/__init__.py index ebc860851c5e..1e06ead4b17e 100644 --- a/ibis/backends/datafusion/__init__.py +++ b/ibis/backends/datafusion/__init__.py @@ -20,9 +20,9 @@ import ibis.expr.schema as sch import ibis.expr.types as ir from ibis.backends import CanCreateCatalog, CanCreateDatabase, CanCreateSchema, NoUrl -from ibis.backends.datafusion.compiler import DataFusionCompiler from ibis.backends.sql import SQLBackend -from ibis.backends.sql.compiler import C +from ibis.backends.sql.compilers import DataFusionCompiler +from ibis.backends.sql.compilers.base import C from ibis.common.dispatch import lazy_singledispatch from ibis.expr.operations.udf import InputType from ibis.formats.pyarrow import PyArrowSchema, PyArrowType diff --git a/ibis/backends/druid/__init__.py b/ibis/backends/druid/__init__.py index 9dd44684e443..4c737e001ded 100644 --- a/ibis/backends/druid/__init__.py +++ b/ibis/backends/druid/__init__.py @@ -12,9 +12,9 @@ import ibis.expr.datatypes as dt import ibis.expr.schema as sch -from ibis.backends.druid.compiler import DruidCompiler from ibis.backends.sql import SQLBackend -from ibis.backends.sql.compiler import STAR +from ibis.backends.sql.compilers import DruidCompiler +from ibis.backends.sql.compilers.base import STAR from ibis.backends.sql.datatypes import DruidType if TYPE_CHECKING: diff --git a/ibis/backends/duckdb/__init__.py b/ibis/backends/duckdb/__init__.py index ad9d21006f07..8f23c3bce534 100644 --- a/ibis/backends/duckdb/__init__.py +++ b/ibis/backends/duckdb/__init__.py @@ -24,10 +24,10 @@ import ibis.expr.types as ir from ibis import util from ibis.backends import CanCreateDatabase, CanCreateSchema, UrlFromPath -from ibis.backends.duckdb.compiler import DuckDBCompiler from ibis.backends.duckdb.converter import DuckDBPandasData from ibis.backends.sql import SQLBackend -from ibis.backends.sql.compiler import STAR, C +from ibis.backends.sql.compilers import DuckDBCompiler +from ibis.backends.sql.compilers.base import STAR, C from ibis.common.dispatch import lazy_singledispatch from ibis.expr.operations.udf import InputType from ibis.util import deprecated diff --git a/ibis/backends/exasol/__init__.py b/ibis/backends/exasol/__init__.py index 0e781f898ef6..e7c91383e2ca 100644 --- a/ibis/backends/exasol/__init__.py +++ b/ibis/backends/exasol/__init__.py @@ -19,9 +19,9 @@ import ibis.expr.types as ir from ibis import util from ibis.backends import CanCreateDatabase, CanCreateSchema -from ibis.backends.exasol.compiler import ExasolCompiler from ibis.backends.sql import SQLBackend -from ibis.backends.sql.compiler import STAR, C +from ibis.backends.sql.compilers import ExasolCompiler +from ibis.backends.sql.compilers.base import STAR, C if TYPE_CHECKING: from collections.abc import Iterable, Mapping diff --git a/ibis/backends/flink/__init__.py b/ibis/backends/flink/__init__.py index e0b58e34cc15..69059cba9c90 100644 --- a/ibis/backends/flink/__init__.py +++ b/ibis/backends/flink/__init__.py @@ -11,7 +11,6 @@ import ibis.expr.schema as sch import ibis.expr.types as ir from ibis.backends import CanCreateDatabase, NoUrl -from ibis.backends.flink.compiler import FlinkCompiler from ibis.backends.flink.ddl import ( CreateDatabase, CreateTableWithSchema, @@ -22,6 +21,7 @@ RenameTable, ) from ibis.backends.sql import SQLBackend +from ibis.backends.sql.compilers import FlinkCompiler from ibis.backends.tests.errors import Py4JJavaError from ibis.expr.operations.udf import InputType from ibis.util import gen_name diff --git a/ibis/backends/impala/__init__.py b/ibis/backends/impala/__init__.py index 8f492c2c8f3d..44d9759d2501 100644 --- a/ibis/backends/impala/__init__.py +++ b/ibis/backends/impala/__init__.py @@ -20,7 +20,6 @@ from ibis import util from ibis.backends.impala import ddl, udf from ibis.backends.impala.client import ImpalaTable -from ibis.backends.impala.compiler import ImpalaCompiler from ibis.backends.impala.ddl import ( CTAS, CreateDatabase, @@ -39,6 +38,7 @@ wrap_udf, ) from ibis.backends.sql import SQLBackend +from ibis.backends.sql.compilers import ImpalaCompiler if TYPE_CHECKING: from collections.abc import Mapping diff --git a/ibis/backends/impala/tests/mocks.py b/ibis/backends/impala/tests/mocks.py index 2798c36a4b64..5c847a1fac49 100644 --- a/ibis/backends/impala/tests/mocks.py +++ b/ibis/backends/impala/tests/mocks.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ibis.backends.impala.compiler import ImpalaCompiler +from ibis.backends.sql.compilers import ImpalaCompiler from ibis.tests.expr.mocks import MockBackend diff --git a/ibis/backends/mssql/__init__.py b/ibis/backends/mssql/__init__.py index 4afc52f3341a..a1adff0fba97 100644 --- a/ibis/backends/mssql/__init__.py +++ b/ibis/backends/mssql/__init__.py @@ -21,9 +21,9 @@ import ibis.expr.types as ir from ibis import util from ibis.backends import CanCreateCatalog, CanCreateDatabase, CanCreateSchema, NoUrl -from ibis.backends.mssql.compiler import MSSQLCompiler from ibis.backends.sql import SQLBackend -from ibis.backends.sql.compiler import STAR, C +from ibis.backends.sql.compilers import MSSQLCompiler +from ibis.backends.sql.compilers.base import STAR, C if TYPE_CHECKING: from collections.abc import Iterable, Mapping diff --git a/ibis/backends/mysql/__init__.py b/ibis/backends/mysql/__init__.py index f255dd46e9b9..0fbd6eb48ad0 100644 --- a/ibis/backends/mysql/__init__.py +++ b/ibis/backends/mysql/__init__.py @@ -22,10 +22,10 @@ import ibis.expr.types as ir from ibis import util from ibis.backends import CanCreateDatabase -from ibis.backends.mysql.compiler import MySQLCompiler from ibis.backends.mysql.datatypes import _type_from_cursor_info from ibis.backends.sql import SQLBackend -from ibis.backends.sql.compiler import STAR, TRUE, C +from ibis.backends.sql.compilers import MySQLCompiler +from ibis.backends.sql.compilers.base import STAR, TRUE, C if TYPE_CHECKING: from collections.abc import Mapping diff --git a/ibis/backends/oracle/__init__.py b/ibis/backends/oracle/__init__.py index bce452dc44cb..f3f4e22fb62d 100644 --- a/ibis/backends/oracle/__init__.py +++ b/ibis/backends/oracle/__init__.py @@ -24,9 +24,9 @@ import ibis.expr.types as ir from ibis import util from ibis.backends import CanListDatabase, CanListSchema -from ibis.backends.oracle.compiler import OracleCompiler from ibis.backends.sql import STAR, SQLBackend -from ibis.backends.sql.compiler import C +from ibis.backends.sql.compilers import OracleCompiler +from ibis.backends.sql.compilers.base import C if TYPE_CHECKING: from urllib.parse import ParseResult diff --git a/ibis/backends/postgres/__init__.py b/ibis/backends/postgres/__init__.py index d12e0a362d55..39797ca982d6 100644 --- a/ibis/backends/postgres/__init__.py +++ b/ibis/backends/postgres/__init__.py @@ -26,9 +26,9 @@ import ibis.expr.types as ir from ibis import util from ibis.backends import CanCreateDatabase, CanCreateSchema, CanListCatalog -from ibis.backends.postgres.compiler import PostgresCompiler from ibis.backends.sql import SQLBackend -from ibis.backends.sql.compiler import TRUE, C, ColGen, F +from ibis.backends.sql.compilers import PostgresCompiler +from ibis.backends.sql.compilers.base import TRUE, C, ColGen, F from ibis.common.exceptions import InvalidDecoratorError if TYPE_CHECKING: diff --git a/ibis/backends/pyspark/__init__.py b/ibis/backends/pyspark/__init__.py index ee4f74f6a29f..1705e8c720db 100644 --- a/ibis/backends/pyspark/__init__.py +++ b/ibis/backends/pyspark/__init__.py @@ -21,10 +21,10 @@ import ibis.expr.types as ir from ibis import util from ibis.backends import CanCreateDatabase, CanListCatalog -from ibis.backends.pyspark.compiler import PySparkCompiler from ibis.backends.pyspark.converter import PySparkPandasData from ibis.backends.pyspark.datatypes import PySparkSchema, PySparkType from ibis.backends.sql import SQLBackend +from ibis.backends.sql.compilers import PySparkCompiler from ibis.expr.operations.udf import InputType from ibis.legacy.udf.vectorized import _coerce_to_series from ibis.util import deprecated diff --git a/ibis/backends/risingwave/__init__.py b/ibis/backends/risingwave/__init__.py index f90f22de0f48..960ab9522b84 100644 --- a/ibis/backends/risingwave/__init__.py +++ b/ibis/backends/risingwave/__init__.py @@ -1,4 +1,4 @@ -"""Risingwave backend.""" +"""RisingWave backend.""" from __future__ import annotations @@ -16,7 +16,7 @@ import ibis.expr.types as ir from ibis import util from ibis.backends.postgres import Backend as PostgresBackend -from ibis.backends.risingwave.compiler import RisingwaveCompiler +from ibis.backends.sql.compilers import RisingWaveCompiler from ibis.util import experimental if TYPE_CHECKING: @@ -45,7 +45,7 @@ def format_properties(props): class Backend(PostgresBackend): name = "risingwave" - compiler = RisingwaveCompiler() + compiler = RisingWaveCompiler() supports_python_udfs = False def do_connect( @@ -88,7 +88,7 @@ def do_connect( [...] >>> t = con.table("functional_alltypes") >>> t - RisingwaveTable[table] + RisingWaveTable[table] name: functional_alltypes schema: id : int32 @@ -140,7 +140,7 @@ def create_table( encode_format: str | None = None, encode_properties: dict | None = None, ): - """Create a table in Risingwave. + """Create a table in RisingWave. Parameters ---------- diff --git a/ibis/backends/risingwave/tests/test_streaming.py b/ibis/backends/risingwave/tests/test_streaming.py index 344788c51e2f..d3d7bf31717c 100644 --- a/ibis/backends/risingwave/tests/test_streaming.py +++ b/ibis/backends/risingwave/tests/test_streaming.py @@ -27,7 +27,7 @@ def test_simple_mv(con, alltypes, column): def test_mv_on_simple_source(con): sc_name = util.gen_name("simple_sc") schema = ibis.schema([("v", "int32")]) - # use Risingwave's internal data generator to imitate a upstream data source + # use RisingWave's internal data generator to imitate a upstream data source connector_properties = { "connector": "datagen", "fields.v.kind": "sequence", @@ -58,7 +58,7 @@ def test_mv_on_simple_source(con): def test_mv_on_table_with_connector(con): tblc_name = util.gen_name("simple_table_with_connector") schema = ibis.schema([("v", "int32")]) - # use Risingwave's internal data generator to imitate a upstream data source + # use RisingWave's internal data generator to imitate a upstream data source connector_properties = { "connector": "datagen", "fields.v.kind": "sequence", diff --git a/ibis/backends/snowflake/__init__.py b/ibis/backends/snowflake/__init__.py index d3594e38950b..ea4b64407ab5 100644 --- a/ibis/backends/snowflake/__init__.py +++ b/ibis/backends/snowflake/__init__.py @@ -32,10 +32,10 @@ import ibis.expr.types as ir from ibis import util from ibis.backends import CanCreateCatalog, CanCreateDatabase, CanCreateSchema -from ibis.backends.snowflake.compiler import SnowflakeCompiler from ibis.backends.snowflake.converter import SnowflakePandasData from ibis.backends.sql import SQLBackend -from ibis.backends.sql.compiler import STAR +from ibis.backends.sql.compilers import SnowflakeCompiler +from ibis.backends.sql.compilers.base import STAR from ibis.backends.sql.datatypes import SnowflakeType if TYPE_CHECKING: diff --git a/ibis/backends/sql/__init__.py b/ibis/backends/sql/__init__.py index e2d4389c8661..a8356a694547 100644 --- a/ibis/backends/sql/__init__.py +++ b/ibis/backends/sql/__init__.py @@ -14,7 +14,7 @@ import ibis.expr.types as ir from ibis import util from ibis.backends import BaseBackend -from ibis.backends.sql.compiler import STAR +from ibis.backends.sql.compilers.base import STAR if TYPE_CHECKING: from collections.abc import Iterable, Mapping @@ -22,7 +22,7 @@ import pandas as pd import pyarrow as pa - from ibis.backends.sql.compiler import SQLGlotCompiler + from ibis.backends.sql.compilers.base import SQLGlotCompiler from ibis.expr.schema import SchemaLike diff --git a/ibis/backends/sql/compilers/__init__.py b/ibis/backends/sql/compilers/__init__.py new file mode 100644 index 000000000000..d2105ed00279 --- /dev/null +++ b/ibis/backends/sql/compilers/__init__.py @@ -0,0 +1,39 @@ +from __future__ import annotations + +__all__ = [ + "BigQueryCompiler", + "ClickHouseCompiler", + "DataFusionCompiler", + "DruidCompiler", + "DuckDBCompiler", + "ExasolCompiler", + "FlinkCompiler", + "ImpalaCompiler", + "MSSQLCompiler", + "MySQLCompiler", + "OracleCompiler", + "PostgresCompiler", + "PySparkCompiler", + "RisingWaveCompiler", + "SnowflakeCompiler", + "SQLiteCompiler", + "TrinoCompiler", +] + +from ibis.backends.sql.compilers.bigquery import BigQueryCompiler +from ibis.backends.sql.compilers.clickhouse import ClickHouseCompiler +from ibis.backends.sql.compilers.datafusion import DataFusionCompiler +from ibis.backends.sql.compilers.druid import DruidCompiler +from ibis.backends.sql.compilers.duckdb import DuckDBCompiler +from ibis.backends.sql.compilers.exasol import ExasolCompiler +from ibis.backends.sql.compilers.flink import FlinkCompiler +from ibis.backends.sql.compilers.impala import ImpalaCompiler +from ibis.backends.sql.compilers.mssql import MSSQLCompiler +from ibis.backends.sql.compilers.mysql import MySQLCompiler +from ibis.backends.sql.compilers.oracle import OracleCompiler +from ibis.backends.sql.compilers.postgres import PostgresCompiler +from ibis.backends.sql.compilers.pyspark import PySparkCompiler +from ibis.backends.sql.compilers.risingwave import RisingWaveCompiler +from ibis.backends.sql.compilers.snowflake import SnowflakeCompiler +from ibis.backends.sql.compilers.sqlite import SQLiteCompiler +from ibis.backends.sql.compilers.trino import TrinoCompiler diff --git a/ibis/backends/sql/compiler.py b/ibis/backends/sql/compilers/base.py similarity index 100% rename from ibis/backends/sql/compiler.py rename to ibis/backends/sql/compilers/base.py diff --git a/ibis/backends/bigquery/compiler.py b/ibis/backends/sql/compilers/bigquery.py similarity index 99% rename from ibis/backends/bigquery/compiler.py rename to ibis/backends/sql/compilers/bigquery.py index 2466922f6032..10c405492c9b 100644 --- a/ibis/backends/bigquery/compiler.py +++ b/ibis/backends/sql/compilers/bigquery.py @@ -12,7 +12,7 @@ import ibis.expr.datatypes as dt import ibis.expr.operations as ops from ibis import util -from ibis.backends.sql.compiler import NULL, STAR, SQLGlotCompiler +from ibis.backends.sql.compilers.base import NULL, STAR, SQLGlotCompiler from ibis.backends.sql.datatypes import BigQueryType, BigQueryUDFType from ibis.backends.sql.rewrites import ( exclude_unsupported_window_frame_from_ops, diff --git a/ibis/backends/clickhouse/compiler.py b/ibis/backends/sql/compilers/clickhouse.py similarity index 99% rename from ibis/backends/clickhouse/compiler.py rename to ibis/backends/sql/compilers/clickhouse.py index 760452924b4d..743bd70ad398 100644 --- a/ibis/backends/clickhouse/compiler.py +++ b/ibis/backends/sql/compilers/clickhouse.py @@ -11,7 +11,7 @@ import ibis.expr.datatypes as dt import ibis.expr.operations as ops from ibis import util -from ibis.backends.sql.compiler import NULL, STAR, AggGen, SQLGlotCompiler +from ibis.backends.sql.compilers.base import NULL, STAR, AggGen, SQLGlotCompiler from ibis.backends.sql.datatypes import ClickHouseType from ibis.backends.sql.dialects import ClickHouse diff --git a/ibis/backends/datafusion/compiler.py b/ibis/backends/sql/compilers/datafusion.py similarity index 99% rename from ibis/backends/datafusion/compiler.py rename to ibis/backends/sql/compilers/datafusion.py index e710e36d2165..fda582f88aee 100644 --- a/ibis/backends/datafusion/compiler.py +++ b/ibis/backends/sql/compilers/datafusion.py @@ -11,13 +11,12 @@ import ibis.common.exceptions as com import ibis.expr.datatypes as dt import ibis.expr.operations as ops -from ibis.backends.sql.compiler import FALSE, NULL, STAR, AggGen, SQLGlotCompiler +from ibis.backends.sql.compilers.base import FALSE, NULL, STAR, AggGen, SQLGlotCompiler from ibis.backends.sql.datatypes import DataFusionType from ibis.backends.sql.dialects import DataFusion from ibis.backends.sql.rewrites import exclude_nulls_from_array_collect from ibis.common.temporal import IntervalUnit, TimestampUnit from ibis.expr.operations.udf import InputType -from ibis.formats.pyarrow import PyArrowType class DataFusionCompiler(SQLGlotCompiler): @@ -136,6 +135,8 @@ def visit_Cast(self, op, *, arg, to): if to.is_timestamp(): return self._to_timestamp(arg, to) if to.is_decimal(): + from ibis.formats.pyarrow import PyArrowType + return self.f.arrow_cast(arg, f"{PyArrowType.from_ibis(to)}".capitalize()) return self.cast(arg, to) diff --git a/ibis/backends/druid/compiler.py b/ibis/backends/sql/compilers/druid.py similarity index 98% rename from ibis/backends/druid/compiler.py rename to ibis/backends/sql/compilers/druid.py index 19a81c6d07ad..56196875d9f1 100644 --- a/ibis/backends/druid/compiler.py +++ b/ibis/backends/sql/compilers/druid.py @@ -6,7 +6,7 @@ import ibis.expr.datatypes as dt import ibis.expr.operations as ops -from ibis.backends.sql.compiler import NULL, AggGen, SQLGlotCompiler +from ibis.backends.sql.compilers.base import NULL, AggGen, SQLGlotCompiler from ibis.backends.sql.datatypes import DruidType from ibis.backends.sql.dialects import Druid diff --git a/ibis/backends/duckdb/compiler.py b/ibis/backends/sql/compilers/duckdb.py similarity index 99% rename from ibis/backends/duckdb/compiler.py rename to ibis/backends/sql/compilers/duckdb.py index f2c38a17dd8c..7adcf362e3b9 100644 --- a/ibis/backends/duckdb/compiler.py +++ b/ibis/backends/sql/compilers/duckdb.py @@ -5,13 +5,12 @@ import sqlglot as sg import sqlglot.expressions as sge -from public import public from sqlglot.dialects import DuckDB import ibis.common.exceptions as com import ibis.expr.datatypes as dt import ibis.expr.operations as ops -from ibis.backends.sql.compiler import NULL, STAR, AggGen, SQLGlotCompiler +from ibis.backends.sql.compilers.base import NULL, STAR, AggGen, SQLGlotCompiler from ibis.backends.sql.datatypes import DuckDBType from ibis.backends.sql.rewrites import exclude_nulls_from_array_collect from ibis.util import gen_name @@ -28,7 +27,6 @@ } -@public class DuckDBCompiler(SQLGlotCompiler): __slots__ = () diff --git a/ibis/backends/exasol/compiler.py b/ibis/backends/sql/compilers/exasol.py similarity index 99% rename from ibis/backends/exasol/compiler.py rename to ibis/backends/sql/compilers/exasol.py index c752f9f9068d..e5e67c1d5e82 100644 --- a/ibis/backends/exasol/compiler.py +++ b/ibis/backends/sql/compilers/exasol.py @@ -6,7 +6,7 @@ import ibis.common.exceptions as com import ibis.expr.datatypes as dt import ibis.expr.operations as ops -from ibis.backends.sql.compiler import NULL, SQLGlotCompiler +from ibis.backends.sql.compilers.base import NULL, SQLGlotCompiler from ibis.backends.sql.datatypes import ExasolType from ibis.backends.sql.dialects import Exasol from ibis.backends.sql.rewrites import ( diff --git a/ibis/backends/flink/compiler.py b/ibis/backends/sql/compilers/flink.py similarity index 99% rename from ibis/backends/flink/compiler.py rename to ibis/backends/sql/compilers/flink.py index 1f894487788e..1bdf6cae9ebf 100644 --- a/ibis/backends/flink/compiler.py +++ b/ibis/backends/sql/compilers/flink.py @@ -8,7 +8,7 @@ import ibis.common.exceptions as com import ibis.expr.datatypes as dt import ibis.expr.operations as ops -from ibis.backends.sql.compiler import NULL, STAR, AggGen, SQLGlotCompiler +from ibis.backends.sql.compilers.base import NULL, STAR, AggGen, SQLGlotCompiler from ibis.backends.sql.datatypes import FlinkType from ibis.backends.sql.dialects import Flink from ibis.backends.sql.rewrites import ( diff --git a/ibis/backends/impala/compiler.py b/ibis/backends/sql/compilers/impala.py similarity index 98% rename from ibis/backends/impala/compiler.py rename to ibis/backends/sql/compilers/impala.py index 49a07f761606..6288865d2ec6 100644 --- a/ibis/backends/impala/compiler.py +++ b/ibis/backends/sql/compilers/impala.py @@ -7,12 +7,10 @@ import ibis.expr.datatypes as dt import ibis.expr.operations as ops from ibis import util -from ibis.backends.sql.compiler import NULL, STAR, SQLGlotCompiler +from ibis.backends.sql.compilers.base import NULL, STAR, SQLGlotCompiler from ibis.backends.sql.datatypes import ImpalaType from ibis.backends.sql.dialects import Impala -from ibis.backends.sql.rewrites import ( - rewrite_empty_order_by_window, -) +from ibis.backends.sql.rewrites import rewrite_empty_order_by_window class ImpalaCompiler(SQLGlotCompiler): diff --git a/ibis/backends/mssql/compiler.py b/ibis/backends/sql/compilers/mssql.py similarity index 99% rename from ibis/backends/mssql/compiler.py rename to ibis/backends/sql/compilers/mssql.py index 3f40ce1528b2..4da9b31e2c5f 100644 --- a/ibis/backends/mssql/compiler.py +++ b/ibis/backends/sql/compilers/mssql.py @@ -4,12 +4,11 @@ import sqlglot as sg import sqlglot.expressions as sge -from public import public import ibis.common.exceptions as com import ibis.expr.datatypes as dt import ibis.expr.operations as ops -from ibis.backends.sql.compiler import ( +from ibis.backends.sql.compilers.base import ( FALSE, NULL, STAR, @@ -50,7 +49,6 @@ def rewrite_rows_range_order_by_window(_, **kwargs): return _.copy(order_by=(_.func.arg,)) -@public class MSSQLCompiler(SQLGlotCompiler): __slots__ = () diff --git a/ibis/backends/mysql/compiler.py b/ibis/backends/sql/compilers/mysql.py similarity index 99% rename from ibis/backends/mysql/compiler.py rename to ibis/backends/sql/compilers/mysql.py index f4ce57ec931f..95f262eebfc5 100644 --- a/ibis/backends/mysql/compiler.py +++ b/ibis/backends/sql/compilers/mysql.py @@ -5,12 +5,11 @@ import sqlglot as sg import sqlglot.expressions as sge -from public import public import ibis.common.exceptions as com import ibis.expr.datatypes as dt import ibis.expr.operations as ops -from ibis.backends.sql.compiler import NULL, STAR, SQLGlotCompiler +from ibis.backends.sql.compilers.base import NULL, STAR, SQLGlotCompiler from ibis.backends.sql.datatypes import MySQLType from ibis.backends.sql.dialects import MySQL from ibis.backends.sql.rewrites import ( @@ -41,7 +40,6 @@ def rewrite_limit(_, **kwargs): return _ -@public class MySQLCompiler(SQLGlotCompiler): __slots__ = () diff --git a/ibis/backends/oracle/compiler.py b/ibis/backends/sql/compilers/oracle.py similarity index 99% rename from ibis/backends/oracle/compiler.py rename to ibis/backends/sql/compilers/oracle.py index 71fe551af81c..e952b71c047f 100644 --- a/ibis/backends/oracle/compiler.py +++ b/ibis/backends/sql/compilers/oracle.py @@ -3,11 +3,10 @@ import sqlglot as sg import sqlglot.expressions as sge import toolz -from public import public import ibis.common.exceptions as com import ibis.expr.operations as ops -from ibis.backends.sql.compiler import NULL, STAR, SQLGlotCompiler +from ibis.backends.sql.compilers.base import NULL, STAR, SQLGlotCompiler from ibis.backends.sql.datatypes import OracleType from ibis.backends.sql.dialects import Oracle from ibis.backends.sql.rewrites import ( @@ -21,7 +20,6 @@ ) -@public class OracleCompiler(SQLGlotCompiler): __slots__ = () diff --git a/ibis/backends/postgres/compiler.py b/ibis/backends/sql/compilers/postgres.py similarity index 99% rename from ibis/backends/postgres/compiler.py rename to ibis/backends/sql/compilers/postgres.py index cb959d2bd199..e074f9f89c4e 100644 --- a/ibis/backends/postgres/compiler.py +++ b/ibis/backends/sql/compilers/postgres.py @@ -5,13 +5,12 @@ import sqlglot as sg import sqlglot.expressions as sge -from public import public import ibis.common.exceptions as com import ibis.expr.datatypes as dt import ibis.expr.operations as ops import ibis.expr.rules as rlz -from ibis.backends.sql.compiler import NULL, STAR, AggGen, SQLGlotCompiler +from ibis.backends.sql.compilers.base import NULL, STAR, AggGen, SQLGlotCompiler from ibis.backends.sql.datatypes import PostgresType from ibis.backends.sql.dialects import Postgres from ibis.backends.sql.rewrites import exclude_nulls_from_array_collect @@ -22,7 +21,6 @@ class PostgresUDFNode(ops.Value): shape = rlz.shape_like("args") -@public class PostgresCompiler(SQLGlotCompiler): __slots__ = () diff --git a/ibis/backends/pyspark/compiler.py b/ibis/backends/sql/compilers/pyspark.py similarity index 99% rename from ibis/backends/pyspark/compiler.py rename to ibis/backends/sql/compilers/pyspark.py index 6cbd7f0796a9..b3b8bed250a8 100644 --- a/ibis/backends/pyspark/compiler.py +++ b/ibis/backends/sql/compilers/pyspark.py @@ -6,13 +6,12 @@ import sqlglot as sg import sqlglot.expressions as sge -from public import public import ibis import ibis.common.exceptions as com import ibis.expr.datatypes as dt import ibis.expr.operations as ops -from ibis.backends.sql.compiler import FALSE, NULL, STAR, SQLGlotCompiler +from ibis.backends.sql.compilers.base import FALSE, NULL, STAR, SQLGlotCompiler from ibis.backends.sql.datatypes import PySparkType from ibis.backends.sql.dialects import PySpark from ibis.backends.sql.rewrites import FirstValue, LastValue, p @@ -45,7 +44,6 @@ def offset_to_filter(_): return _.copy(parent=rel, offset=0) -@public class PySparkCompiler(SQLGlotCompiler): __slots__ = () diff --git a/ibis/backends/risingwave/compiler.py b/ibis/backends/sql/compilers/risingwave.py similarity index 93% rename from ibis/backends/risingwave/compiler.py rename to ibis/backends/sql/compilers/risingwave.py index 052b2c8fdea7..9bc7225a1bd9 100644 --- a/ibis/backends/risingwave/compiler.py +++ b/ibis/backends/sql/compilers/risingwave.py @@ -1,20 +1,18 @@ from __future__ import annotations import sqlglot.expressions as sge -from public import public import ibis.common.exceptions as com import ibis.expr.datashape as ds import ibis.expr.datatypes as dt import ibis.expr.operations as ops -from ibis.backends.postgres.compiler import PostgresCompiler -from ibis.backends.sql.compiler import ALL_OPERATIONS +from ibis.backends.sql.compilers import PostgresCompiler +from ibis.backends.sql.compilers.base import ALL_OPERATIONS from ibis.backends.sql.datatypes import RisingWaveType from ibis.backends.sql.dialects import RisingWave -@public -class RisingwaveCompiler(PostgresCompiler): +class RisingWaveCompiler(PostgresCompiler): __slots__ = () dialect = RisingWave diff --git a/ibis/backends/snowflake/compiler.py b/ibis/backends/sql/compilers/snowflake.py similarity index 99% rename from ibis/backends/snowflake/compiler.py rename to ibis/backends/sql/compilers/snowflake.py index 927a5922f032..c68c677682f3 100644 --- a/ibis/backends/snowflake/compiler.py +++ b/ibis/backends/sql/compilers/snowflake.py @@ -5,13 +5,12 @@ import sqlglot as sg import sqlglot.expressions as sge -from public import public import ibis.common.exceptions as com import ibis.expr.datatypes as dt import ibis.expr.operations as ops from ibis import util -from ibis.backends.sql.compiler import NULL, STAR, C, FuncGen, SQLGlotCompiler +from ibis.backends.sql.compilers.base import NULL, STAR, C, FuncGen, SQLGlotCompiler from ibis.backends.sql.datatypes import SnowflakeType from ibis.backends.sql.dialects import Snowflake from ibis.backends.sql.rewrites import ( @@ -27,7 +26,6 @@ class SnowflakeFuncGen(FuncGen): udf = FuncGen(namespace="ibis_udfs.public") -@public class SnowflakeCompiler(SQLGlotCompiler): __slots__ = () diff --git a/ibis/backends/sqlite/compiler.py b/ibis/backends/sql/compilers/sqlite.py similarity index 99% rename from ibis/backends/sqlite/compiler.py rename to ibis/backends/sql/compilers/sqlite.py index 805c7dfb5b47..2c12cd9d97eb 100644 --- a/ibis/backends/sqlite/compiler.py +++ b/ibis/backends/sql/compilers/sqlite.py @@ -4,18 +4,16 @@ import sqlglot as sg import sqlglot.expressions as sge -from public import public import ibis.common.exceptions as com import ibis.expr.datatypes as dt import ibis.expr.operations as ops -from ibis.backends.sql.compiler import NULL, AggGen, SQLGlotCompiler +from ibis.backends.sql.compilers.base import NULL, AggGen, SQLGlotCompiler from ibis.backends.sql.datatypes import SQLiteType from ibis.backends.sql.dialects import SQLite from ibis.common.temporal import DateUnit, IntervalUnit -@public class SQLiteCompiler(SQLGlotCompiler): __slots__ = () diff --git a/ibis/backends/trino/compiler.py b/ibis/backends/sql/compilers/trino.py similarity index 99% rename from ibis/backends/trino/compiler.py rename to ibis/backends/sql/compilers/trino.py index f98aa48b4ab3..f15d57ee7104 100644 --- a/ibis/backends/trino/compiler.py +++ b/ibis/backends/sql/compilers/trino.py @@ -10,7 +10,7 @@ import ibis.common.exceptions as com import ibis.expr.datatypes as dt import ibis.expr.operations as ops -from ibis.backends.sql.compiler import FALSE, NULL, STAR, AggGen, SQLGlotCompiler +from ibis.backends.sql.compilers.base import FALSE, NULL, STAR, AggGen, SQLGlotCompiler from ibis.backends.sql.datatypes import TrinoType from ibis.backends.sql.dialects import Trino from ibis.backends.sql.rewrites import ( diff --git a/ibis/backends/sqlite/__init__.py b/ibis/backends/sqlite/__init__.py index cde03ac18dca..fddcc0ee5543 100644 --- a/ibis/backends/sqlite/__init__.py +++ b/ibis/backends/sqlite/__init__.py @@ -17,8 +17,8 @@ from ibis import util from ibis.backends import UrlFromPath from ibis.backends.sql import SQLBackend -from ibis.backends.sql.compiler import C, F -from ibis.backends.sqlite.compiler import SQLiteCompiler +from ibis.backends.sql.compilers import SQLiteCompiler +from ibis.backends.sql.compilers.base import C, F from ibis.backends.sqlite.converter import SQLitePandasData from ibis.backends.sqlite.udf import ignore_nulls, register_all diff --git a/ibis/backends/tests/test_join.py b/ibis/backends/tests/test_join.py index a02233275b88..0ec26b6e4cae 100644 --- a/ibis/backends/tests/test_join.py +++ b/ibis/backends/tests/test_join.py @@ -175,7 +175,7 @@ def test_mutate_then_join_no_column_overlap(batting, awards_players): @pytest.mark.notimpl(["druid"]) @pytest.mark.notyet(["dask"], reason="dask doesn't support descending order by") @pytest.mark.notyet(["flink"], reason="Flink doesn't support semi joins") -@pytest.mark.skip("risingwave") # TODO(Kexiang): Risingwave's bug, investigating +@pytest.mark.skip("risingwave") # TODO(Kexiang): RisingWave's bug, investigating @pytest.mark.parametrize( "func", [ diff --git a/ibis/backends/trino/__init__.py b/ibis/backends/trino/__init__.py index 1201d2a34775..38d1e8171253 100644 --- a/ibis/backends/trino/__init__.py +++ b/ibis/backends/trino/__init__.py @@ -20,8 +20,8 @@ from ibis import util from ibis.backends import CanCreateDatabase, CanCreateSchema, CanListCatalog from ibis.backends.sql import SQLBackend -from ibis.backends.sql.compiler import C -from ibis.backends.trino.compiler import TrinoCompiler +from ibis.backends.sql.compilers import TrinoCompiler +from ibis.backends.sql.compilers.base import C if TYPE_CHECKING: from collections.abc import Iterator, Mapping diff --git a/ibis/backends/trino/tests/conftest.py b/ibis/backends/trino/tests/conftest.py index 2b4f67ebe437..1bddc3f20895 100644 --- a/ibis/backends/trino/tests/conftest.py +++ b/ibis/backends/trino/tests/conftest.py @@ -11,6 +11,7 @@ import ibis import ibis.expr.schema as sch from ibis.backends.conftest import TEST_TABLES +from ibis.backends.sql.datatypes import TrinoType from ibis.backends.tests.base import ServiceBackendTest if TYPE_CHECKING: @@ -208,7 +209,6 @@ def generate_tpc_tables(suite_name, *, data_dir): ) for path in (data_dir / suite_name).rglob("*.parquet") } - type_mapper = ibis.backends.trino.compiler.TrinoCompiler.type_mapper return ( sge.Create( kind="TABLE", @@ -218,7 +218,7 @@ def generate_tpc_tables(suite_name, *, data_dir): expressions=[ sge.ColumnDef( this=sg.to_identifier(col, quoted=True), - kind=type_mapper.from_ibis(dtype), + kind=TrinoType.from_ibis(dtype), ) for col, dtype in schema.items() ], diff --git a/pyproject.toml b/pyproject.toml index 505b8bca7cf3..cfaefcc2e040 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -336,7 +336,7 @@ markers = [ "pandas: Pandas tests", "polars: Polars tests", "postgres: PostgreSQL tests", - "risingwave: Risingwave tests", + "risingwave: RisingWave tests", "pyspark: PySpark tests", "snowflake: Snowflake tests", "sqlite: SQLite tests",