4.0.0
4.0.0 (2023-01-09)
⚠ BREAKING CHANGES
- functions, methods and classes marked as deprecated are removed now
- ir: replace
HLLCardinality
withApproxCountDistinct
andCMSMedian
withApproxMedian
operations. - backends: the datatype of returned execution results now more closely matches that of the ibis expression's type. Downstream code may need to be adjusted.
- ir: the
JSONB
type is replaced by theJSON
type. - dev-deps: expression types have been removed from
ibis.expr.api
. Useimport ibis.expr.types as ir
to access these types. - common: removed
@immutable_property
decorator, use@attribute.default
instead - timestamps: the
timezone
argument toto_timestamp
is gone. This was only supported in the BigQuery backend. Append%Z
to the format string and the desired time zone to the input column if necessary. - deps: ibis now supports at minimum duckdb 0.3.3. Please upgrade your duckdb install as needed.
- api: previously
ibis.connect
would return aTable
object when callingconnect
on a parquet/csv file. This now returns a backend containing a single table created from that file. When possible users may useibis.read
instead to read files into ibis tables. - api:
histogram()
'sclosed
argument no longer exists because it never had any effect. Remove it from yourhistogram
method calls. - pandas/dask: the Pandas and Dask backends now interpret casting ints to/from timestamps as seconds since the unix epoch, matching other backends.
- datafusion:
register_csv
andregister_parquet
are removed. Pass filename toregister
method instead. - ir:
ops.NodeList
andir.List
are removed. Use tuples to represent sequence of expressions instead. - api:
re_extract
now followsre.match
behavior. In particular, the0
th group is now the entire string if there's a match, otherwise the groups are 1-based. - datatypes: enums are now strings. Likely no action needed since no functionality existed.
- ir: Replace
t[t.x.topk(...)]
witht.semi_join(t.x.topk(...), "x")
. - ir:
ir.Analytic.type()
andir.TopK.type()
methods are removed. - api: the default limit for table/column expressions is now
None
(meaning no limit). - ir: join changes: previously all column names that collided between
left
andright
tables were renamed with an appended suffix. Now for the case of inner joins with only equality predicates, colliding columns that are known to be equal due to the join predicates aren't renamed. - impala: kerberos support is no longer installed by default for the
impala
backend. To add support you'll need to install thekerberos
package separately. - ir:
ops.DeferredSortKey
is removed. Useops.SortKey
directly instead. - ir:
ibis.common.grounds.Annotable
is mutable by default now - ir:
node.has_resolved_name()
is removed, useisinstance(node, ops.Named)
instead;node.resolve_name()
is removed usenode.name
instead - ir: removed
ops.Node.flat_args()
, directly usenode.args
property instead - ir: removed
ops.Node.inputs
property, use the multipledispatchedget_node_arguments()
function in the pandas backend - ir:
Node.blocks()
method has been removed. - ir:
HasSchema
mixin class is no longer available, directly subclassops.TableNode
and implement schema property instead - ir: Removed
Node.output_type
property in favor of abstractmethodNode.to_expr()
which now must be explicitly implemented - ir:
Expr(Op(Expr(Op(Expr(Op)))))
is now represented asExpr(Op(Op(Op)))
, so code using ibis internals must be migrated - pandas: Use timezone conversion functions to compute the original machine localized value
- common: use
ibis.common.validators.{Patameter, Signature}
instead - ir:
ibis.expr.lineage.lineage()
is now removed - ir: removed
ir.DestructValue
,ir.DestructScalar
andir.DestructColumn
, usetable.unpack()
instead - ir: removed
Node.root_tables()
method, useibis.expr.analysis.find_immediate_parent_tables()
instead - impala: use other methods for pinging the database
Features
- add experimental decorator (791335f)
- add to_pyarrow and to_pyarrow_batches (a059cf9)
- add unbind method to expressions (4b91b0b), closes #4536
- add way to specify sqlglot dialect on backend (f1c0608)
- alchemy: implement json getitem for sqlalchemy backends (7384087)
- api: add
agg
alias foraggregate
(907583f) - api: add
agg
alias togroup_by
(6b6367c) - api: add
ibis.read
top level API function (e67132c) - api: add JSON
__getitem__
operation (3e2efb4) - api: implement
__array__
(1402347) - api: make
drop
variadic (1d69702) - api: return object from
to_sql
to support notebook syntax highlighting (87c9833) - api: use
rich
for interactive__repr__
(04758b8) - backend: make
ArrayCollect
filterable (1e1a5cf) - backends/mssql: add backend support for Microsoft Sql Server (fc39323)
- bigquery: add ops.DateFromYMD, ops.TimeFromHMS, ops.TimestampFromYMDHMS (a4a7936)
- bigquery: add ops.ExtractDayOfYear (30c547a)
- bigquery: add support for correlation (4df9f8b)
- bigquery: implement
argmin
andargmax
(40c5f0d) - bigquery: implement
pi
ande
(b91370a) - bigquery: implement array repeat (09d1e2f)
- bigquery: implement JSON getitem functionality (9c0e775)
- bigquery: implement ops.ArraySlice (49414ef)
- bigquery: implement ops.Capitalize (5757bb0)
- bigquery: implement ops.Clip (5495d6d)
- bigquery: implement ops.Degrees, ops.Radians (5119b93)
- bigquery: implement ops.ExtractWeekOfYear (477d287)
- bigquery: implement ops.RandomScalar (5dc8482)
- bigquery: implement ops.StructColumn, ops.ArrayColumn (2bbf73c)
- bigquery: implement ops.Translate (77a4b3e)
- bigquery: implementt ops.NthValue (b43ba28)
- bigquery: move bigquery backend back into the main repo (cd5e881)
- clickhouse: handle more options in
parse_url
implementation (874c5c0) - clickhouse: implement
INTERSECT ALL
/EXCEPT ALL
(f65fbc3) - clickhouse: implement quantile/multiquantile (96d7d1b)
- common: support function annotations with both typehints and rules (7e23f3e)
- dask: implement
mode
aggregation (017f07a) - dask: implement json getitem (381d805)
- datafusion: convert column expressions to pyarrow (0a888de)
- datafusion: enable
topk
(d44903f) - datafusion: implement
Limit
(1ddc876) - datafusion: implement
ops.StringConcat
(6bb5b4f) - decompile: support rendering ibis expression as python code (7eebc67)
- deps: support shapely 2.0 (68dff10)
- display qualified named in deprecation warnings (a6e2a49)
- docs: first draft of Ibis for pandas users (7f7c9b5)
- duckdb: enable registration of parquet files from s3 (fced465)
- duckdb: implement
mode
aggregation (36fd152) - duckdb: implement
to_timestamp
(26ca1e4) - duckdb: implement quantile/multiquantile (fac9705)
- duckdb: overwrite views when calling
register
(ae07438) - duckdb: pass through kwargs to file loaders (14fa2aa)
- duckdb: support out of core execution for in-memory connections (a4d4ba2)
- duckdb: support registering external postgres tables with duckdb (8633e6b)
- expr: split ParseURL operation into multiple URL extract operations (1f0fcea)
- impala: implement
strftime
(d3ede8d) - impala: support date literals (cd334c4)
- insert: add support for list+dict to sqlalchemy backends (15d399e)
- ir/pandas/dask/clickhouse: revamp Map type support (62b6f2d)
- ir: add
is_*
methods toDataType
s (79f5c2b) - ir: prototype for parsing SQL into an ibis expression (1301183)
- ir: support python 3.10 pattern matching on Annotable nodes (eca93eb)
- mssql: add window function support (ef1be45)
- mssql: detect schema from SQL (ff79928)
- mssql: extract quarter (7d04266)
- mssql: implement ops.DayOfWeekIndex (4125593)
- mssql: implement ops.ExtractDayOfYear (ae026d5)
- mssql: implement ops.ExtractEpochSeconds (4f49b5b)
- mssql: implement ops.ExtractWeekOfYear (f1394bc)
- mssql: implement ops.Ln, ops.Log, ops.Log2, ops.Log10 (f8ee1d8)
- mssql: implement ops.RandomScalar (4149450)
- mssql: implement ops.TimestampTruncate, ops.DateTruncate (738e496)
- mssql: implementt ops.DateFromYMD, ops.TimestampFromYMDHMS, ops.TimeFromHMS (e84f2ce)
- open
*.db
files with sqlite inibis.connect
(37baf05) - pandas: implement
mode
aggregation (fc023b5) - pandas: implement
RegexReplace
forstr
(23713cc) - pandas: implement json getitem (8fa1190)
- pandas: implement quantile/multiquantile (cd4dcaa)
- pandas: support
histogram
API (5bfc0fe) - polars: enable
topk
(8bfb16a) - polars: implement
mode
aggregation (7982ba2) - polars: initial support for polars backend (afecb0a)
- postgres: implement
mode
aggregation (b2f1c2d) - postgres: implement quantile and multiquantile (82ed4f5)
- postgres: prettify array literals (cdc60d5)
- pyspark: add support for struct operations (ce05987)
- pyspark: enable
topk
(0f748e0) - pyspark: implement
pi
ande
(fea81c6) - pyspark: implement json getitem (9bfb748)
- pyspark: implement quantile and multiquantile (743f411)
- pyspark: support
histogram
API (8f4808c) - snowflake: enable day-of-week column expression (6fd9c33)
- snowflake: handle date and timestamp literals (ec2392d)
- snowflake: implement
mode
aggregation (f35915e) - snowflake: implement
parse_url
(a9746e3) - snowflake: implement
rowid
scalar (7e1425a) - snowflake: implement
time
literal (068fc50) - snowflake: implement scalar (cc07d91)
- snowflake: initial commit for snowflake backend (a8687dd)
- snowflake: support reductions in window functions via automatic ordering (0234e5c)
- sql: add ops.StringSQLILike (7dc4924)
- sqlalchemy: implement
ops.Where
usingIF
/IFF
functions (4cc9c15) - sqlalchemy: in-memory tables have name in generated SQL (01b4c60)
- sql: improve error message in fixed_arity helper (891a1ad)
- sqlite: add
type_map
arg to override type inference (1961bad) - sqlite: fix impl for missing
pi
ande
functions (24b6d2f) - sqlite: support
con.sql
with explicit schema specified (7ca82f3) - sqlite: support wider range of datetime formats (f65093a)
- support both
postgresql://
andpostgres://
inibis.connect
(2f7a7b4) - support deferred predicates in join (b51a64b)
- support more operations with unsigned integers (9992953)
- support passing callable to relabel (0bceefd)
- support tab completion for getitem access of table columns (732dba4)
- support Table.fillna for SQL backends (26d4cac)
- trino: add
bit_xor
aggregation (830acf4) - trino: add
EXTRACT
-based functionality (6549657) - trino: add milisecond scale to *_trunc function (3065248)
- trino: add some basic aggregation ops (7ecf7ab)
- trino: extract milliseconds (09517a5)
- trino: implement
approx_median
(1cba8bd) - trino: implement
parse_url
(2bc87fc) - trino: implement
round
,cot
,pi
, ande
(c0e8736) - trino: implement arbitrary first support (0c7d3b3)
- trino: implement array collect support (dfeb600)
- trino: implement array column support (dadf9a8)
- trino: implement array concat (240c55d)
- trino: implement array index (c5f3a96)
- trino: implement array length support (2d7cc65)
- trino: implement array literal support (2182177)
- trino: implement array repeat (2ee3d10)
- trino: implement array slicing (643792e)
- trino: implement basic struct operations (cc3c937)
- trino: implement bitwise agg support (5288b35)
- trino: implement bitwise scalar/column ops (ac4876c)
- trino: implement default precision and scale (37f8a47)
- trino: implement group concat support (5c41439)
- trino: implement json getitem support (7c41566)
- trino: implement map operations (4efc5ce)
- trino: implement more generic and numeric ops (63b45c8)
- trino: implement ops.Capitalize (dff14fc)
- trino: implement ops.DateFromYMD (edd2994)
- trino: implement ops.DateTruncate, ops.TimestampTruncate (32f4862)
- trino: implement ops.DayOfWeekIndex, ops.DayOfWeekName (a316d6d)
- trino: implement ops.ExtractDayOfYear (b0a3465)
- trino: implement ops.ExtractEpochSeconds (10b82f1)
- trino: implement ops.ExtractWeekOfYear (cf719b8)
- trino: implement ops.Repeat (e9f6851)
- trino: implement ops.Strftime (a436823)
- trino: implement ops.StringAscii (93fd32d)
- trino: implement ops.StringContains (d5cb2ec)
- trino: implement ops.StringSplit (62d79a6)
- trino: implement ops.StringToTimestamp (b766f62)
- trino: implement ops.StrRight (691b39c)
- trino: implement ops.TimeFromHMS (e5cacc2)
- trino: implement ops.TimestampFromUNIX (ce5d726)
- trino: implement ops.TimestampFromYMDHMS (9fa7304)
- trino: implement ops.TimestampNow (c832e4c)
- trino: implement ops.Translate (410ae1e)
- trino: implement quantile/multiquantile (bc7fdab)
- trino: implement regex functions (9e493c5)
- trino: implement window function support (5b6cc45)
- trino: initial trino backend (c367865)
- trino: support string date scalar parameter (9092530)
- trino: use proper
approx_distinct
function (3766fff)
Bug Fixes
ibis.connect
always returns a backend (2d5b155)- allow inserting memtable with alchemy backends (c02fcc3)
- always display at least one column in the table repr (5ea9e5a)
- analysis: only lower sort keys that are in an agg's output (6bb4f66)
- api: allow arbitrary sort keys (a980b34)
- api: allow boolean scalars in predicate APIs (2a2636b)
- api: allow deferred instances as input to
ibis.desc
andibis.asc
(6861347) - api: ensure that window functions are propagated (4fb1106)
- api: make
re_extract
conform to semantics of Python'sre.match
(5981227) - auto-register csv and parquet with duckdb using
ibis.connect
(67c4f87) - avoid renaming known equal columns for inner joins with equality predicates (5d4b0ed)
- backends: fix casting and execution result types in many backends (46c21dc)
- bigquery: don't try to parse database when name is already fully qualified (ae3c113)
- bigquery: fix integer to timestamp casting (f5bacad)
- bigquery: normalize W frequency in *_trunc (893cd49)
- catch
TypeError
instead of more specific error (6db19d8) - change default limit to None (8d1526a)
- clarify and normalize behavior of
Table.rowid
(92b03d6) - clickhouse: ensure that correlated subqueries' columns can be referenced (708d682)
- clickhouse: fix list_tables to use database name (edc3511)
- clickhouse: make
any
/all
filterable and reduce code size (99b10e2) - clickhouse: use clickhouse's dbapi (bd0da12)
- common: support copying variadic annotable instances (ee0d9ad)
- dask: make filterable reductions work (0f759fc)
- dask: raise TypeError with informative message in ibis.dask.connect (4e67f7a)
- define
to_pandas
/to_pyarrow
on DataType/Schema classes directly (22f3b4d) - deps: bound shapely to a version that doesn't segfault (be5a779)
- deps: update dependency datafusion to >=0.6,<0.8 (4c73870)
- deps: update dependency geopandas to >=0.6,<0.13 (58a32dc)
- deps: update dependency packaging to v22 (e0b6177)
- deps: update dependency rich to v13 (4f313dd)
- deps: update dependency sqlglot to v10 (db19d43)
- deps: update dependency sqlglot to v9 (cf330ac)
- docs: make sure data can be downloaded when building notebooks (fa7da17)
- don't fuse filters & selections that contain window functions (d757069)
- drop snowflake support for RowID (dd378f1)
- duckdb: drop incorrect
translate
implementation (8690151) - duckdb: fix bug in json getitem for duckdb (49ce739)
- duckdb: keep
ibis.now()
type semantics (eca4a2c) - duckdb: make array repeat actually work (021f4de)
- duckdb: replace all in
re_replace
(c138f0f) - duckdb: rereflect sqla table on re-registration (613b311), closes #4729
- duckdb: s3 priority (a2d03d1)
- duckdb: silence duckdb-engine warnings (359adc3)
- ensure numpy ops dont accidentally cast ibis types (a7ca6c8)
- exclude geospatial ops from pandas/dask/polars
has_operation
(6f1d265) - fix
table.mutate
with deferred named expressions (5877d0b) - fix bug when disabling
show_types
in interactive repr (2402506) - fix expression repr for table -> value operations (dbf92f5)
- handle dimensionality of empty outputs (3a88170)
- improve rich repr support (522db9c)
- ir: normalize
date
types (39056b5) - ir: normalize timestamps to
datetime.datetime
values (157efde) - make
col.day_of_week
not an expr (96e1580) - mssql: fix integer to timestamp casting (9122eef)
- mssql: fix ops.TimeFromHMS (d2188e1)
- mssql: fix ops.TimestampFromUNIX (ec28add)
- mssql: fix round without argument (52a60ce)
- mssql: use double-dollar sign to prevent from interpolating a value (b82da5d)
- mysql: fix mysql
startswith
/endswith
to be case sensitive (d7469cc) - mysql: handle out of bounds timestamps and fix milliseconds calculation (1f7649a)
- mysql: upcast bool agg args (8c5f9a5)
- pandas/dask now cast int<->timestamp as seconds since epoch (bbfe998)
- pandas: drop
RowID
implementation (05f5016) - pandas: make quantile/multiquantile with filter work (6b5abd6)
- pandas: support
substr
with nolength
(b2c2922) - pandas: use localized UTC time for
now
operation (f6d7327) - pandas: use the correct context when aggregating over a window (e7fa5c0)
- polars: fix polars
startswith
to call the right method (9e6f397) - polars: workaround passing
pl.Null
to the null type (fd9633b) - postgres/duckdb: fix negative slicing by copying the trino impl (39e3962)
- postgres: fix array repeat to work with literals (3c46eb1)
- postgres: fix array_index operation (63ef892)
- postgres: make any/all translation rules use
reduction
helper (78bfd1d) - pyspark: handle
datetime.datetime
literals (4f94abe) - remove kerberos extra for impala dialect (6ed3e5f)
- repr: don't repeat value in repr for literals (974eeb6)
- repr: fix off by one in repr (322c8dc)
- s3: fix quoting and autonaming for s3 (ce09266)
- select: raise error on attempt to select no columns in projection (94ac10e)
- snowflake: fix extracting query parameter by (75af240)
- snowflake: fix failing snowflake url extraction functions (2eee50b)
- snowflake: fix snowflake list_databases (680cd24)
- snowflake: handle schema when getting table (f6fff5b)
- snowflake: snowflake now likes Tuesdays (1bf9d7c)
- sqlalchemy: allow passing pd.DataFrame to create (1a083f6)
- sqlalchemy: ensure that arbitrary expressions are valid sort keys (cb1a013)
- sql: avoid generating cartesian products yet again (fdc52a2)
- sqlite: fix sqlite
startswith
/endswith
to be case sensitive (fd4a88d) - standardize list_tables signature everywhere (abafe1b), closes #2877
- support
arbitrary
with no arguments (45156f5) - support dtype in
__array__
methods (1294b76) - test: ensure that file-based url tests don't expect data to exist (c2b635a)
- trino: fix integer to timestamp casting (49321a6)
- trino: make filterable any/all reductions work (992bd18)
- truncate columns in repr for wide tables (aadcba1)
- typo: in StringValue helpstr (b2e2093)
- ux: improve error messages for rlz.comparable failures (5ca41d2)
- ux: prevent infinite looping when formatting a floating column of all nans (b6afe98)
- visualize(label_edges=True) works for NodeList ops (a91ceae)
- visualize: dedup nodes and edges and add
verbose
argument for debugging (521e188) - visualize: handle join predicates in visualize (d63cb57)
- window: allow window range tuples in preceding or following (77172b3)
Deprecations
- deprecate
Table.groupby
alias in favor ofTable.group_by
(39cea3b) - deprecate
Table.sort_by
in favor ofTable.order_by
(7ac7103)
Performance
-
add benchmark for known-slow table expression (e9617f0)
-
expr: traverse nodes only once during compilation (69019ed)
-
fix join performance by avoiding Projection construction (ed532bf)
-
node: give
Node
s the default Python repr (eb26b11) -
ux: remove pandas import overhead from
import ibis
(ea452fc) -
deps: bump duckdb lower bound (4539683)
-
dev-deps: replace flake8 et al with
ruff
and fix lints (9c1b282)
Refactors
- add
lazy_singledispatch
utility (180ecff) - add
rlz.lazy_instance_of
(4e30480) - add
Temporal
base class for temporal data types (694eec4) - api: add deprecated Node.op() #4519 (2b0826b)
- avoid roundtripping to expression for
IFF
(3068ae2) - clean up
cot
implementations to have one less function call (0f304e5) - clean up timezone support in ops.TimestampFromYMDHMS (2e183a9)
- cleanup str method docstrings (36bd36c)
- clickhouse: implement sqlglot-based compiler (5cc5d4b)
- clickhouse: simplify Quantile and MultiQuantile implementation (9e16e9e)
- common: allow traversal and substitution of tuple and dictionary arguments (60f4806)
- common: enforce slots definitions for Base subclasses (6c3df91)
- common: move Parameter and Signature to validators.py (da20537)
- common: reduce implementation complexity of annotations (27cee71)
- datafusion: align register API across backends (08046aa)
- datafusion: get name from expr (fea3e5b)
- datatypes: remove Enum (145e706)
- dev-deps: remove unnecessary
poetry2nix
overrides (5ed95bc) - don't sort new columns in mutate (72ec96a)
- duckdb: use lambda to define backend operations (5d14de6)
- impala: move impala SQL tests to snapshots (927bf65)
- impala: replace custom pooling with sqlalchemy QueuePool (626cdca)
- ir:
ops.List
->ops.NodeList
(6765bd2) - ir: better encapsulate graph traversal logic, schema and datatype objects are not traversable anymore (1a07725)
- ir: generalize handling and traversal of node sequences (e8bcd0f)
- ir: make all value operations 'Named' for more consistent naming semantics (f1eb4d2)
- ir: move random() to api.py (e136f1b)
- ir: remove
ops.DeferredSortKey
(e629633) - ir: remove
ops.TopKNode
andir.TopK
(d4dc544) - ir: remove Analytic expression's unused type() method (1864bc1)
- ir: remove DecimalValue.precision(), DecimalValue.scale() method (be975bc)
- ir: remove DestructValue expressions (762d384)
- ir: remove duplicated literal creation code (7dfb56f)
- ir: remove intermediate expressions (c6fb0c0)
- ir: remove lin.lineage() since it's not used anywhere (120b1d7)
- ir: remove node.blocks() in favor of more explicit type handling (37d8ce4)
- ir: remove Node.inputs since it is an implementation detail of the pandas backend (6d2c49c)
- ir: remove node.root_tables() and unify parent table handling (fbb07c1)
- ir: remove ops.AggregateSelection in favor of an.simplify_aggregation (ecf6ed3)
- ir: remove ops.NodeList and ir.List in favor of builtin tuples (a90ce35)
- ir: remove pydantic dependency and make grounds more composable (9da0f41)
- ir: remove sch.HasSchema and introduce ops.Projection base class for ops.Selection (c3b0139)
- ir: remove unnecessary complexity introduced by variadic annotation (698314b)
- ir: resolve circular imports so operations can be globally imported for types (d2a3919)
- ir: simplify analysis.substitute_unbound() (a6c7406)
- ir: simplify SortKey construction using rules (4d63280)
- ir: simplify switch-case builders (9acf717)
- ir: split datatypes package into multiple submodules (cce6535)
- ir: split out table count into
CountStar
operation (e812e6e) - ir: support replacing nodes in the tree (6a0df5a)
- ir: support variadic annotable arguments and add generic graph traversal routines (5d6a289)
- ir: unify aggregation construction to use AggregateSelection (c7d6a6f)
- make
quantile
,any
, andall
reductions filterable (1bafc9e) - make sure
value_counts
always has a projection (a70a302) - mssql: use lambda to define backend operations (1437cfb)
- mysql: dedup extract code (d551944)
- mysql: use lambda to define backend operations (d10bff8)
- polars: match duckdb registration api (ac59dac)
- postgres: use lambda to define backend operations (4c85d7b)
- remove dead
compat.py
module (eda0fdb) - remove deprecated approximate aggregation classes (53fc6cb)
- remove deprecated functions and classes (be1cdda)
- remove duplicate
_random_identifier
calls (26e7942) - remove setup.py and related infrastructure (adfcce1)
- remove the
JSONB
type (c4fc0ec) - rename some infer methods for consistency (a8f5579)
- replace isinstance dtype checking with
is_*
methods (386adc2) - rework registration / file loading (c60e30d)
- rules: generalize field referencing using rlz.ref() (0afb8b9)
- simplify
ops.ArrayColumn
in postgres backend (f9677cc) - simplify histogram implementation by using window functions (41cbc29)
- simplify ops.ArrayColumn in alchemy backend (28ff4a8)
- snowflake: use lambda to define backend operations (cb33fce)
- split up custom nix code; remove unused derivations (57dff10)
- sqlite: use lambda to define backend operations (b937391)
- test: make clickhouse tests use
pytest-snapshot
(413dbd2) - tests: move sql output to golden dir (6a6a453)
- test: sort regex test cases by name instead of posix-ness (0dfb0e7)
- tests: replace
sqlgolden
withpytest-snapshot
(5700eb0) - timestamps: remove
timezone
argument toto_timestamp
API (eb4762e) - trino: use lambda to define backend operations (dbd61a5)
- uncouple
MultiQuantile
class fromQuantile
(9c48f8c) - use
rlz.lazy_instance_of
to delay shapely import (d14badc) - use lazy dispatch for
dt.infer
(2e56540)
Documentation
- add
backend_sensitive
decorator (836f237) - add
pip install poetry
dev env setup step (69940b1) - add bigquery ci data analysis notebook (2b1d4e5)
- add how to sessionize guide (18989dd)
- add issue templates (4480c18)
- add missing argument descriptions (ea757fa)
- add mssql backend page (63c0f19)
- added 4.0 release blog post (bcc0eca)
- added memtable howto guide (5dde9bd)
- backends: add duckdb and mssql to the backend index page (7b13218)
- bring back git revision localized date plugin (e4fc2c9)
- created how to guide for deferred expressions (2a9f6ab)
- dev: python-duckdb now available for windows with conda (7f76b09)
- document how to create a table from a pandas dataframe using ibis.memtable (c6521ec)
- fix backends label in feature request issue form (cf852d3)
- fix broken docstrings; reduce docstring noise; workaround griffe (bd1c637)
- fix docs for building docs (23af567)
- fix feature-request issue template (6fb62f5)
- fix installation section for conda (7af6ac1)
- fix landing page links (1879362)
- fix links to make docs work locally and remotely (13c7810)
- fix pyarrow batches docstring (dba9594)
- fix single line docstring summaries (8028201)
- fix snowflake doc link in readme.md (9aff68e)
- fix the inline example for ibis.dask.do_connect (6a533f0)
- fix tutorial link on install page (b34811a)
- fix typo in first example of the homepage (9a8a25a)
- formatting and syntax highlighting fixes (50864da)
- front page rework (24b795a)
- how-to: use parquet data source for sessionization, fix typos, more deferred usage (974be37)
- improve the docstring of the generic connect method (ee87802)
- issue template cleanups (fed37da)
- list (e331247)
- polars: add backend docs page (e303b68)
- remove hrs (4c30de4)
- renamed how to guides to be more consistent (1bdc5bd)
- sentence structure in the Notes section (ac20232)
- show interactive prompt for python (5d7d913)
- split out geospatial operations in the support matrix docs (0075c28)
- trino: add backend docs (2f262cd)
- typo (6bac645)
- typos headers and formatting (9566cbb)
- udf: examples in pandas have the incorrect import path (49028b8)
- update filename (658a296)
- update line (4edfce0)
- update readme (19a3f3c)
- use buf/feat prefix only (2561a29)
- use components instead of pieces (179ca1e)
- use heading instead of bulleted bold (99b044e)
- use library instead of project (fd2d915)
- use present tense for use cases and "why" section (6cc7416)
- www: fix frontpage example (7db39e8)