singledispatch as the mechanism for translating sql column methods
the concept of codata (alternative methods for the same data) for sql dialects, by passing objects like PostgresqlColumn() as the first argument.
E.g. mean(PostgresqlColumn(), sqlalchemy.sql.column("x"))
E.g. mean(PostgresqlColumnAgg(), sqlalchemy.sql.column("x"))
As a necessary step, refactor the pulling of test specifications (E.g. siuba.ops.support.base), to:
make it easier to ask a generic function what data it supports (e.g. PostgresqlColumn)
make it easier to ask a generic function what limits come with dispatching on a piece of data (e.g. dispatching mean(PostgresqlColumn(), column('x')) might return a float, when pandas returns an integer, or vv).
Refactor of siu internals to support
PostgresqlColumn()
as the first argument.mean(PostgresqlColumn(), sqlalchemy.sql.column("x"))
mean(PostgresqlColumnAgg(), sqlalchemy.sql.column("x"))
As a necessary step, refactor the pulling of test specifications (E.g.
siuba.ops.support.base
), to:mean(PostgresqlColumn(), column('x'))
might return a float, when pandas returns an integer, or vv).