Skip to content

4.0.0

Compare
Choose a tag to compare
@ibis-project-bot ibis-project-bot released this 09 Jan 21:11

4.0.0 (2023-01-09)

⚠ BREAKING CHANGES

  • functions, methods and classes marked as deprecated are removed now
  • ir: replace HLLCardinality with ApproxCountDistinct and CMSMedian with ApproxMedian 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 the JSON type.
  • dev-deps: expression types have been removed from ibis.expr.api. Use import ibis.expr.types as ir to access these types.
  • common: removed @immutable_property decorator, use @attribute.default instead
  • timestamps: the timezone argument to to_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 a Table object when calling connect on a parquet/csv file. This now returns a backend containing a single table created from that file. When possible users may use ibis.read instead to read files into ibis tables.
  • api: histogram()'s closed argument no longer exists because it never had any effect. Remove it from your histogram 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 and register_parquet are removed. Pass filename to register method instead.
  • ir: ops.NodeList and ir.List are removed. Use tuples to represent sequence of expressions instead.
  • api: re_extract now follows re.match behavior. In particular, the 0th 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(...)] with t.semi_join(t.x.topk(...), "x").
  • ir: ir.Analytic.type() and ir.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 and right 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 the kerberos package separately.
  • ir: ops.DeferredSortKey is removed. Use ops.SortKey directly instead.
  • ir: ibis.common.grounds.Annotable is mutable by default now
  • ir: node.has_resolved_name() is removed, use isinstance(node, ops.Named) instead; node.resolve_name() is removed use node.name instead
  • ir: removed ops.Node.flat_args(), directly use node.args property instead
  • ir: removed ops.Node.inputs property, use the multipledispatched get_node_arguments() function in the pandas backend
  • ir: Node.blocks() method has been removed.
  • ir: HasSchema mixin class is no longer available, directly subclass ops.TableNode and implement schema property instead
  • ir: Removed Node.output_type property in favor of abstractmethod Node.to_expr() which now must be explicitly implemented
  • ir: Expr(Op(Expr(Op(Expr(Op))))) is now represented as Expr(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 and ir.DestructColumn, use table.unpack() instead
  • ir: removed Node.root_tables() method, use ibis.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 for aggregate (907583f)
  • api: add agg alias to group_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 and argmax (40c5f0d)
  • bigquery: implement pi and e (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 to DataTypes (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 in ibis.connect (37baf05)
  • pandas: implement mode aggregation (fc023b5)
  • pandas: implement RegexReplace for str (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 and e (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 using IF/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 and e functions (24b6d2f)
  • sqlite: support con.sql with explicit schema specified (7ca82f3)
  • sqlite: support wider range of datetime formats (f65093a)
  • support both postgresql:// and postgres:// in ibis.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, and e (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 and ibis.asc (6861347)
  • api: ensure that window functions are propagated (4fb1106)
  • api: make re_extract conform to semantics of Python's re.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 no length (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 of Table.group_by (39cea3b)
  • deprecate Table.sort_by in favor of Table.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 Nodes 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 and ir.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, and all 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 with pytest-snapshot (5700eb0)
  • timestamps: remove timezone argument to to_timestamp API (eb4762e)
  • trino: use lambda to define backend operations (dbd61a5)
  • uncouple MultiQuantile class from Quantile (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)