Skip to content

Commit

Permalink
refactor(docs): inline code and remove gen_matrix.py
Browse files Browse the repository at this point in the history
  • Loading branch information
cpcloud committed Feb 8, 2024
1 parent 83728bd commit b8d2b55
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 57 deletions.
1 change: 0 additions & 1 deletion docs/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ diamonds.json
*.ndjson
reference/
objects.json
*support_matrix.csv

# generated notebooks and files
*.ipynb
Expand Down
54 changes: 43 additions & 11 deletions docs/support_matrix.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,49 @@ hide:

```{python}
#| echo: false
!python ../gen_matrix.py
```
from pathlib import Path
```{python}
#| echo: false
import pandas as pd
support_matrix = pd.read_csv("./backends/raw_support_matrix.csv")
support_matrix = support_matrix.assign(
Category=support_matrix.Operation.map(lambda op: op.rsplit(".", 1)[0].rsplit(".", 1)[-1]),
Operation=support_matrix.Operation.map(lambda op: op.rsplit(".", 1)[-1]),
).set_index(["Category", "Operation"])
import ibis
import ibis.expr.operations as ops
def get_backends(exclude=()):
entry_points = sorted(ep.name for ep in ibis.util.backend_entry_points())
return [
(backend, getattr(ibis, backend))
for backend in entry_points
if backend not in exclude
]
def get_leaf_classes(op):
for child_class in op.__subclasses__():
if not child_class.__subclasses__():
yield child_class
else:
yield from get_leaf_classes(child_class)
public_ops = frozenset(get_leaf_classes(ops.Value))
support = {"Operation": [f"{op.__module__}.{op.__name__}" for op in public_ops]}
support.update(
(name, list(map(backend.has_operation, public_ops)))
for name, backend in get_backends()
)
support_matrix = (
pd.DataFrame(support)
.assign(splits=lambda df: df.Operation.str.findall("[a-zA-Z_][a-zA-Z_0-9]*"))
.assign(
Category=lambda df: df.splits.str[-2],
Operation=lambda df: df.splits.str[-1],
)
.drop(["splits"], axis=1)
.set_index(["Category", "Operation"])
.sort_index()
)
all_visible_ops_count = len(support_matrix)
coverage = pd.Index(
support_matrix.sum()
Expand Down Expand Up @@ -70,15 +101,16 @@ dict(
#| content: valuebox
#| title: "Number of SQL backends"
import importlib
from ibis.backends.base.sql import BaseSQLBackend
from ibis.backends.base.sqlglot import SQLGlotBackend
sql_backends = sum(
issubclass(
importlib.import_module(f"ibis.backends.{entry_point.name}").Backend,
BaseSQLBackend
SQLGlotBackend
)
for entry_point in ibis.util.backend_entry_points()
)
assert sql_backends > 0
dict(value=sql_backends, color="green", icon="database")
```

Expand Down
45 changes: 0 additions & 45 deletions gen_matrix.py

This file was deleted.

5 changes: 5 additions & 0 deletions ibis/backends/flink/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ class Backend(BaseBackend, CanCreateDatabase, NoUrl):
supports_temporary_tables = True
supports_python_udfs = True

@property
def dialect(self):
# TODO: remove when ported to sqlglot
return self.compiler.dialect

def do_connect(self, table_env: TableEnvironment) -> None:
"""Create a Flink `Backend` for use with Ibis.
Expand Down
3 changes: 3 additions & 0 deletions ibis/backends/flink/compiler/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
TableSetFormatter,
)
from ibis.backends.base.sql.registry import quote_identifier
from ibis.backends.base.sqlglot.dialects import Flink
from ibis.backends.flink.translator import FlinkExprTranslator


Expand Down Expand Up @@ -96,6 +97,8 @@ class FlinkCompiler(Compiler):

cheap_in_memory_tables = True

dialect = Flink

@classmethod
def to_sql(cls, node, context=None, params=None):
if isinstance(node, ir.Expr):
Expand Down

0 comments on commit b8d2b55

Please sign in to comment.