NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2114 most downloaded on PyPI
The portable Python dataframe library
Last release 7 months ago
07 Feb 2026
Ships on a steady schedule
a new release about every 2 weeks
Most releases are documented
notes for 40 of 58 stable releases
2 versions withdrawn
withdrawn after publishing
11 years old
166 releases · first in 2015
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
api: deprecate bool_val.negate()/-bool_val in favor of ~bool_val
name argument to topk (1652076)name argument to value_counts (24be184)to_sqlglot method to Schema objects (#10063) (9488115)_TABLE_SUFFIX everywhere (5ade49e)auto_detect to False by fixing translation of columns argument (#10065) (883d2d3)temp=False in create_table (e29712c)Enum type (#10017) (869829f)memtable (#10055) (019cae5)fsspec a test-only dependency (37e4439)data_mapper and schema in both pandas and pyarrow formats (cbeb967)replace if their children haven't changed (ac79604)blog: mention dask in the pandeprecation post
approx_quantiles for computing approximate quantiles (dcdb7a7)DateValue.epoch api for computing days since epoch (#9856) (8b0fb66)null function deferrable (0613ef1)SchemaLike in Backend.create_table() (#9885) (949fbea)literal (#9904) (0a07906)to_pyarrow and to_pandas (2dd2c3f)approx_nunique, std, var (d9c3daa)approx_nunique, std, var (63c20c0)cov/corr (24f41b2)median and approx_median (3cfc344)quantile (ecbef94)Table.nunique (a24200c)Table.nunique (7ead7c7)ArrayValue.collect (eb857e6)tbl_properties to create_table (#9839) (e3d02bd)mode aggregation (#9914) (9ee910d)quantile (26d8516)distinct with other select nodes when possible (c31412b)auth strings with BasicAuthentication (#9960) (e0f54c9)EXCEPT and INTERSECT generation in sqlglot; add tpcds query 87 (#9959) (910b8f5)NULLs in array flatten (ecc199f).sql (b63e0fd).cache() for caching tables (1de2f45)close in _fetch_from_cursor (#9913) (a402095)Parameter instances pickleable (#9798) (d772c80), closes #9793id_cols (#9912) (4a4bc64)drop_table when cleaning the cache and remove duplicated _remove_table method (#9922) (ce51941)flatten API for ArrayFlatten implementation to avoid large string upcast (#9997) (7a6af8d), closes #9995startswith docstring (#9994) (f98aec5), closes #1000 #2000 #3000_make_interval base compiler implementation (fe29210)quantile (3c49c6a)Predicate class and unify Selectors under a single interface (#9917) (c15a229)StructValue.destructure API (#9824) (98c5c76)to_* methods in favor of as_* methods (fb22e20), closes #9788 /github.com/ibis-project/ibis/pull/9843#discussion_r1717545190has_name method (#9901) (e0436aa)duckdb: deprecate read_in_memory
ignore_null in collect (71271dd)ignore_null in first/last (8d4f97f)order_by in order-sensitive aggregates (collect/group_concat/first/last) (#9729) (a18cb5d)pivot_longer (2330b0c)read_csv (#9776) (c1dcf67)userinfo URL parsing (524a2fa)QUALIFY where possible (#9787) (0370bcb)DropColumns equality (#9677) (ae1e112)NULLs (f0c3be4)register directly instead of calling read_in_memory (597817f)std/var to properly handle sample/population (f83d84f)where filter support in group_concat; fix array_agg ordering (#9758) (6e7e4de)current_database (#9748) (c7f5717)drop method docstring (#9727) (4cf0014)drop method (#9682) (5ac84c5)c selector by caching the column existence check (fdaeb5c)api: accept more input types in ibis.range
ibis.range (#9659) (310ad30)nulls_first=False argument to order_by (#9385) (ce9011e)TableUnnest operation to support cross-join unnest semantics as well as offset (#9423) (3352a84)cov/corr methods (#9657) (4d135b3)order_by and group_by (#9649) (0ad47de)dt.unknown for unknown types (#9567) (6e0b5f5)dt.unknown for unknown types (#9576) (56a10d2)delta_scan instead of reading pyarrow datasets (#9566) (0ff595e)__arrow_c_schema__ on ibis.Schema objects (#9665) (00a776e)argmin/argmax key argument (#9652) (3f05cbc)Date32 database type (#9509) (efa6fb7)pyodbc in host string (#9656) (2e3fd9a).commit() unless a DDL operation is being performed (#9658) (69c5bf0), closes #9654cache (#9434) (196d8a1)port is captured in MySQL _from_url implementation (#9421) (5bb4971), closes #9417port is captured in _from_url implementation (#9507) (bd3009a)drop_table handling of force keyword (#9503) (95048a4)citext (f46979b)to_delta (#8848) (fe0466a)USE instead of pyspark api (#9620) (6991f04)auth keyword (#9410) (560ddf6)deferred, range, e, and pi to API reference (#9592) (43b116b)arbitrary method docstring (#9596) (09cfd85)tuple support in SortKey (#9416) (4dff6e2)select from set operations (#9438) (88a2785)_register_in_memory_tables (5235a4b)list_tables when registering memtables (#9425) (fbc79d2)query_and_wait for better performance on queries of small data with smaller result sets (#9418) (ad1e915)_fast_bind to speed up drop even more (#9646) (4f39d69)rename (#9641) (e56489e)api: accept more input types in ibis.range ( #9659 ) ( 310ad30 )
api: add nulls_first=False argument to order_by ( #9385 ) ( ce9011e )
api: add TableUnnest operation to support cross-join unnest semantics as well as offset ( #9423 ) ( 3352a84 )
api: add positional joins ( #9533 ) ( 85ea9da )
api: allow grouping by scalar values ( #9451 ) ( 14f1821 )
api: support deferred or string column names in cov / corr methods ( #9657 ) ( 4d135b3 )
api: support selectors in window function order_by and group_by ( #9649 ) ( 0ad47de )
backends: support creation from a DB-API con ( #9603 ) ( fc4d1e3 )
bigquery: implement CountDistinctStar ( #9470 ) ( 273e4bc )
caching: tie lifetime of cached tables to python refs ( #9477 ) ( f51546e )
datafusion: datafusion enhancements ( #9544 ) ( f11ca43 )
dtypes: fall back to dt.unknown for unknown types ( #9567 ) ( 6e0b5f5 )
dtypes: fall back to dt.unknown for unknown types ( #9576 ) ( 56a10d2 )
duckdb: use delta_scan instead of reading pyarrow datasets ( #9566 ) ( 0ff595e )
flink: create views from more mem data types ( #9622 ) ( b83fc2b )
geospatial: use geoarrow extension types when returning geometry columns as pyarrow ( #9549 ) ( cba7367 )
polars: add more accurate type mapping for timestamps ( #8954 ) ( 3eafac4 )
polars: support version 1.0 and later ( #9516 ) ( 62a1864 )
postgres: support basic jsonb type and existing operations ( #9630 ) ( 7179cc6 )
pyarrow: support arrow_c_schema on ibis.Schema objects ( #9665 ) ( 00a776e )
pyspark: implement new experimental read/write directory methods ( #9272 ) ( adade5e )
api: add support for using deferreds in the argmin / argmax key argument ( #9652 ) ( 3f05cbc )
bigquery: escape table names with spaces for bigquery backend ( #9589 ) ( ca21dbb )
bigquery: support microseconds in time literals ( #9610 ) ( c876abc ), closes #9609
clickhouse: generate redundant aliases to workaround clickhouse naming behavior ( #9525 ) ( b44dac2 ), closes #9508
clickhouse: support Date32 database type ( #9509 ) ( efa6fb7 )
datatypes: proper handling of srid in geospatial datatypes ( #9519 ) ( a3ceb59 )
deps: update dependency datafusion to v39 ( #9506 ) ( 21ef0a6 )
deps: update dependency fsspec to <2024.6.2 ( #9463 ) ( 8e225ec )
deps: update dependency geopandas to v1 ( #9437 ) ( fa1037b )
deps: update dependency numpy to v2 ( #9395 ) ( 3cb39a5 )
deps: update dependency pyarrow to v17 ( #9614 ) ( 16998df )
deps: update dependency sqlglot to >=23.4,<25.3 ( #9401 ) ( bdc1b3f )
deps: update dependency sqlglot to >=23.4,<25.4 ( #9427 ) ( 8e015b6 )
deps: update dependency sqlglot to >=23.4,<25.5 ( #9472 ) ( f6f80da )
deps: update dependency sqlglot to >=23.4,<25.6 ( #9523 ) ( 6a748c4 )
deps: update dependency sqlglot to >=23.4,<25.7 ( #9628 ) ( f5207ff )
druid: handle typed nulls where possible ( #9452 ) ( 33ec754 )
fix and improve shape inference in many ops ( 7a0b21e )
ir: avoid deduplicating filters based solely on their name ( #9476 ) ( b35582e ), closes #9474
ir: repr iterables when constructing name of operations ( #9480 ) ( f5a541c )
join: skip substitution of non-field references in join chains ( #9595 ) ( 61ef0ed )
mssql: always pass port to pyodbc in host string ( #9656 ) ( 2e3fd9a )
mssql: avoid calling .commit() unless a DDL operation is being performed ( #9658 ) ( 69c5bf0 ), closes #9654
mssql: fix temporary table creation and implement cache ( #9434 ) ( 196d8a1 )
mysql: ensure that port is captured in MySQL _from_url implementation ( #9421 ) ( 5bb4971 ), closes #9417
oracle, clickhouse: ensure port is captured in _from_url implementation ( #9507 ) ( bd3009a )
oracle: support connection using oracle connection string ( #9435 ) ( f3cd8b2 )
pandas, dask: fix drop_table handling of force keyword ( #9503 ) ( 95048a4 )
polars: add workaround to compile Array correctly ( #9484 ) ( 5a9d026 )
postgres: add dtype mapping for citext ( f46979b )
pyspark: run pre-execute hooks for to_delta ( #8848 ) ( fe0466a )
pyspark: set catalog and database with USE instead of pyspark api ( #9620 ) ( 6991f04 )
pyspark: set lower bound of pyspark to 3.3.3 to avoid maintenance burden of pytest collection hook ( #9606 ) ( 97af53c ), closes #9564
sec: remove most instances of possible sql injection ( #9404 ) ( a555774 )
trino: allow passing the auth keyword ( #9410 ) ( 560ddf6 )
uri-parsing: handle password with bracket in connection url ( #9466 ) ( c73bcf0 )
urls: standardize pass-through of parsed query parameters ( #9482 ) ( 87cba01 ), closes #9456
add deferred , range , e , and pi to API reference ( #9592 ) ( 43b116b )
add ibis-bench blog ( #9391 ) ( 2c9198d )
add Shiny (for Python) to “works well with” section ( #9558 ) ( 8862979 ), closes #1000 #2000 #3000
algolia: add methods from backend pages to algolia index ( #9608 ) ( c098c70 ), closes #9600
arbitrary: add example for arbitrary method docstring ( #9596 ) ( 09cfd85 )
blog-axis-labels: set correct y axis in plot in Ibis benchmark blog post ( #9445 ) ( fce5bd3 )
blog: add 1tb challenge on a laptop post ( #9487 ) ( e33a4cc )
blog: run Ibis on Snowflake ( #9406 ) ( 1839c13 )
clickhouse: put the clickhouse tutorial into sidebar ( #9624 ) ( 0fbec3f )
fix spelling issues ( #9563 ) ( 92eda02 )
how-to: add a guide on streaming operations ( #9642 ) ( f3ed10c )
update link to the flink example repo ( #9553 ) ( 87af588 )
api: refactor the implementation of windowing ( #9200 ) ( eaa1301 )
api: remove tuple support in SortKey ( #9416 ) ( 4dff6e2 )
api: remove unnecessary select from set operations ( #9438 ) ( 88a2785 )
backends: remove redundant implementations of _register_in_memory_tables ( 5235a4b )
caching: remove parameters that are always the same ( #9532 ) ( afa2848 )
compilers: move compilers out of the backend dependency path ( #9590 ) ( 122330a )
deps: make pyarrow optional for non-backend installs ( #9552 ) ( 9047b26 )
polars: delete some dead code in the polars backend ( #9389 ) ( 77fa811 )
polars: remove numpy usage entirely ( #9607 ) ( 946f761 )
pyarrow: remove comparison of column names for renaming ( #9616 ) ( 3b2a7ec )
streamlit: update to use BaseConnection interface ( #9550 ) ( f5dd8fb )
tests: add tpc ds setup and rearrange tpc setup ( #9453 ) ( b150635 )
tpc: add tpc-ds tests ( #9467 ) ( d2dff68 )
viz: avoid repeatedly rendering redundant schemas in graphviz output ( #9518 ) ( d53602b )
bigquery: avoid running list_tables when registering memtables ( #9425 ) ( fbc79d2 )
bigquery: use query_and_wait for better performance on queries of small data with smaller result sets ( #9418 ) ( ad1e915 )
drop: speed up performance of drop ( #9440 ) ( 1c6eb5c ), closes #9111
drop: use _fast_bind to speed up drop even more ( #9646 ) ( 4f39d69 )
duckdb: speed up memtable registration ( #9419 ) ( 7878d8c )
duckdb: speedup timestamp conversion by avoiding conversion to object ( #9556 ) ( 5923e1e )
relocate: avoid redundant selector position computation ( #9644 ) ( cd58214 )
rename: avoid unnecessary rewrites and dereferencing in rename ( #9641 ) ( e56489e )
deprecate fillna/dropna methods in favor of fill_null/drop_null
Table.value_counts for easy group by count on multiple fields (aba913d)type arg to ibis.null() (8db686e)where arg to column reductions (582165f)where arg to table reductions (7aba385)_TABLE_SUFFIX when using a wildcard table name (#9375) (62a25c4), closes #9371create_view/drop_view/drop_table (#9263) (c4324f5)hash ops (#9348) (57e2348)ibis.Table objects (1a262b9)s.of_type (#9356) (c0ebdc8)asof_join API (#9180) (49c6ce3)col == None or col == ibis.NA as col.isnull() (#9114) (711bf9f)pos to int16 for table.info() (#9139) (9eb1ed1)table.describe() (#9314) (c7fcddf).collect() aggregation (b6e0c31)create_table (#9107) (4e7a00c)first and last aggregations (22fffc7).sql() (#9363) (d2d5251), closes #9354_get_schema_using_query (#9290) (0348b9a)limit and params in export functions (1f36552)across (#9376) (f41c554)connect() callout (#9327) (10112bd)fillna/dropna methods in favor of fill_null/drop_null (df0e656)analysis.py (#9087) (8508e3d)LOWERED_OPS mapping for cleaner handling of operations implemented by "lowering" to simpler operations (7a9b4b6)UNSUPPORTED_OPERATIONS to UNSUPPORTED_OPS for consistency (9e11957)CanCreateSchema is deprecated and create_schema, drop_schema, list_schemas, and current_schema are deprecated and redirect to the corresponding method…
schema parameter for UDF definition has been removed. A new catalog parameter has been added. Ibis uses the word database to refer to a collection of tables, and the word catalog to refer to a collection of databases. You can use a combination of catalog and database to specify a hierarchical location for the UDF.create_database, drop_database, and get_schema are now keyword-only except for the name args. Calls to these functions that have relied on positional argument ordering need to be updated.cov/corr with how="pop".get or contains method on NULL map
values now returns NULL. Use coalesce(map.get(...), default) or
coalesce(map.contains(), False) to get the previous behavior.select and mutate are now always interpreted as literals. Columns can still be accessed by their integer index using square-bracket syntax.ibis.literal(string) to
pass the string as a literalSchema.apply_to() is removed, use ibis.formats.pandas.PandasConverter.convert_frame() insteadschema in its hierarchical
sense. We use database to mean a collection of tables. The behavior of
all *_database methods now applies only to collections of tables and
never to collections of database (formerly schema)CanListDatabases abstract methods now all refer to
collections of tables.CanCreateDatabases abstract methods now all refer to
collections of tables.list_databases now takes a kwarg catalog.create_database now takes a kwarg catalog.drop_database now takes a kwarg catalog.current_database now refers to the current collection of tables.CanCreateSchema is deprecated and create_schema, drop_schema,
list_schemas, and current_schema are deprecated and redirect to the
corresponding method/property ending in database.CanListCatalog and CanCreateCatalog that can list and
create collections of database, respectively.
The new methods are list_catalogs, create_catalog, drop_catalog,current_catalog property.by argument from asof_join is removed. Calls to asof_join that previously used by should pass those arguments to predicates instead.op, output_dtype, and output_shape are removed. op is no longer needed, and use .dtype and .shape respectively for the other two.ibis.rows_with_max_lookback() function and ibis.window(max_lookback) argument are removedFunction.register. If you were passing database to Function.register, pass that to scalar_function or aggregate_function as appropriate.timecontext feature is not supported anymoreon paremater of table.asof_join() is now only
accept a single predicate, use predicates to supply additional
join predicates..as_scalar() method for turning expressions into scalar subqueries (#8350) (8130169)catalog and database kwargs to ibis.table (#8801) (7d593c4)describe method to compute summary stats of table expressions (#8739) (c8d98a1)ibis.today() for retrieving the current date (#8664) (5e10d17)to_polars() method for returning query results as polars objects (53454c1)uuid function for returning a new uuid (#8438) (965b6d9)ibis namespace (#9008) (3f3ed27), closes #8717ibis.memtable (464bebc)Table.order_by(*keys) (6ade4e9)Table.group_by() (#8546) (665bc4f)Dispatched base class for convenient visitor pattern implementation (f80c5b3)Node.find_below() methods to exclude the root node from filtering (#8861) (80d12a2)Node.map() implementation (e3f2217)FrozenOrderedDict (#9081) (f926995), closes #9063arbitrary (43a8f50)asof joins including tolerance parameter (104cb9b)ibis.visualize (#8510) (ee821b1)StringSlice (#8832) (e4e3531)repr() (#8630) (220085e)hierarchyid (#8397) (2fd2c30)arbitrary (973c3d3)pgvector column types (#9037) (8846514)ibis.pyspark.connect() (#8515) (0f663e6)SELECT * for complete reprojections (#9075) (a9aa8a7)asc/desc in selections (62992c3)map or filter (#8602) (0236370)ir.Table.to_array() (#8227) (22de674)Array.zip (#8652) (fac85f0)filter (2aa31f4)Node.map_clear should have return type annotation Any (#8564) (8d7baae)Object pattern with more positional arguments defined than __match_args__ has (2e63bba)compute when executing argmin/argmax (1204c56)compute when executing cov/corr (a876c47)SelfReference is decompiled with a call to .view() (4a44c57)flip_coordinates translation to sqlglot duckdb backend (f7df510)ops.RegexReplace translation rule (e46260d)asof join tolerance parameter should post-filter and post-join instead of adding a predicate (e380e79)InSubquery.shape property from needle input (#8364) (13d675e), closes #8361sge.TRUE and sge.FALSE literals (7e0b735)NUMBER to int64 and consolidate data type mapping code for shared inference (#8626) (b5f9bbe)date type to datetime64[s] (#8667) (6bd965e)t.select(col=scalar) results in len(t) rows (#8665) (6c00579)ops.SelfReference rule (a371274)drop API in asof join implementation (c65d9f8)drop API to avoid deprecation warning (43424ea)to_pyarrow output (#8439) (b338517), closes #8318sge.NULL, sge.TRUE and sge.FALSE literals (dffb44a)to_delta works and is tested (64af56a)node.replace() calls (196e716)TableColumn -> Field in rewrites (#8448) (3730eb6)reconnect method (#8969) (e31eded)_from_snowpark variable in constructor to ensure it is defined (#8970) (5722a10)WITHIN GROUP (#8846) (261a544)_setup_session call (#8979) (3b1a6ef)_safe_raw_sql for insert implementation (2ceb5a6)Select merge (#8825) (ba931da)ops.JoinLink (3da1abf)sge.NULL literal (e8ed08a)ibis.uuid() generates a unique uuid per row (#8535) (c097a2d), closes #8532StringValue.capitalize() consistent across backends (#8270) (c4055d6), closes #8271RowNumber example (#8523) (ba21ec0)Table.sql API docs (#8417) (753a268), closes #8345ibis-examples repo content (40db711)order_by docstring (#8456) (ae3db0e)all extra installation from contributing docs (#9004) (03825b6)topk (#8583) (4115860)mutate() identical to select() (#8878) (38e7e14)by of asof_join() in favor of predicates (#8700) (1a8eec8), closes #7869max_lookback window attribute (99dda5b)timecontext feature (#8721) (0a00a05)asof join predicates (9fb3627)database() API and implementation (#8406) (ff5d078), closes #8405_metadata method in favor of _get_schema_using_query (#8627) (4ec7daf)FrozenSlotted (#8702) (d244b75)FrozenDict a subclass of dict (#8693) (32b7514), closes #8687 #8687schema keyword in truncate_table (edde6a3)*_schema methods (c43c0f1)multipledispatch as a dependency (#8332) (d587166)_to_geodataframe method (a8add4b).sql instead of .execute in performance-senitive locations (#8669) (aa6aa0c)schema kwarg, add catalog, kw-only (6273e7e)ops.ExistsSubquery (#8264) (68287db)JoinTable operation unique to JoinChain instead of using the globally unique SelfReference (2a7ae3f)ops.WindowFrame node into ops.WindowFunction (#8779) (3cd5a1a)find_first_base_table() analysis function (#8451) (5cbd472)Schema.apply_to() method (06962b2)__window_op__ property (8d27d14)ops.Named mixin (#8244) (3cff9f6)JoinChain.first in ops.SelfReference similar to the rest of the join tables (15bd926)schema keyword (ed69960)base submodule (#8405) (6946f98)catalog and database kwargs for Namespace op (21f57d4)_minimize_spec dueNote truncated.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
deprecate Value.least() and Value.greatest()
date types are now returned as object dtype containing datetime.date objects when executing with the pandas backend.ibis.show_sql(expr) calls with print(ibis.to_sql(expr)) or if using Jupyter or IPython ibis.to_sql(expr)nullifzero is removed; use nullif(0) insteadzeroifnull is removed; use fillna(0) insteadlist_databases is removed; use list_schemas insteadcurrent_database method returns the data_project instead of the dataset_id. Use current_schema to retrieve dataset_id. To explicitly list tables in a given project and dataset, you can use f"{con.current_database}.{con.current_schema}"RegexSplit operation and re_split API (07beaed)RegexSplit (e3c507e)ops.RegexSplit using pyarrow UDF (37b6b7f)RegexSplit (229a1f4)zones geojson example (#8040) (2d562b7), closes #7958ops.RegexSplit using pyarrow UDF (a3bed10)RegexSplit (c955b6a)RegexSplit (cfe0329)RegexSplit (2c1a726)RegexSplit (9d1295f)order_by position in window function when subsequent expressions are duplicated (#7943) (89056b9), closes #7940to_numpy() (6fd4550)filelock from required dependencies (76dded5)UNION ALL to work around sqlglot bug (399a5ef)mutateandselect APIs (#8014) (8ed19ea), closes #8013Table.sample (6a652ec)_name, _dtype (#7911) (e58be2e)ibis.connect using a URL (d6049f8)ibis.connect (33c855a)show_sql in favor of print(to_sql) (36da8c1)list_databases (22e5ada)nullifzero (8447b9a)zeroifnull (8be3c25)pins an optional dependency through an examples extra (#7878) (3d6c3f1), closes #7844raw_sql over _exec_sql (0b66b94)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
replace deprecated relabels with renames
ArrayValue.flatten method and operation (e6e995c)ibis.range function for generating sequences (f5a0a5a)to_pandas method to BaseBackend (3d1cf66)node.replace() now supports mappings for quick lookup-like substitutions (bbc93c7)node.find_topmost() method to locate matching nodes without descending further to their children (15acf7d)node.__children__ property to access the flattened list of children of a node (2e91476)ParquetWriter and CSVWriter (40558fd)streaming kwarg to to_pandas (703507f).substitute (291a290)array_sort (9624341)table.info() nullable column (3b3bd7b)None literals with dt.Null type to the requested type during value coercion (d51ec4e)Concrete.copy() receives unexpected arguments (442199a).sql metadata results are in column-definition order (26a3c1f)InValues list (b26aa55)ValueError and hiding legitimate failures (b7f650c)str when checking for a prefix (c5f884c)None keys (4b28ff1)ir.Table docstring (e3b9611)ibis.param API (2f9ec90)Value.name API (dd66af2)relabels with renames (6bc9e15)raw_sql cursor only when using SELECT statements (74379a8)BigQueryType to use sqlglot for type parsing and generation (6e3219f)traverse() function's filter argument since it can be expressed using the visitor (e4e2993)node.find() and node.match() methods to transparently support types and patterns (3c14091)execute and to_pyarrow implementations (c572eab)TableProxy object to formats from the operations (05964b1)node.__recreate__() method (f3da926)add deprecation to .nullifzero docstring
bucket method for timestamps (ca0f7bc)Table.sample method for sampling rows from a table (3ce2617)order_by (359fd5e)signature in udf definitions (764977e)location parameter (d652dbb)read_csv, read_json, read_parquet support (ff83110)bucket (10a5916)Table.fillna (5633660)Self annotations for Annotable (0c60146)Table.sample (09a7626)attach and detach methods for adding and removing databases to the current duckdb session (162b058)ntile support (bf08a2a)Table.sample as a TABLESAMPLE query (3a80f3a)ops.TryCast operation (752e587)to_pyarrow (6b33454)Table.sample (8e78dfc)bucket (1ffac11)ntile (9a14ba3)Table.sample (77215be)bucket (c59518c)bucket (4d34afc)Table.sample (6aa897e)ntile (39eed1a)Table.sample as a random() filter across several SQL backends (e1870ea)Table.sample as a TABLESAMPLE query (f3d044c)ntile (2978d1a)to_pyarrow instead of to_pandas in the interactive repr (72aa573)GroupConcat operation (ed3b017)ops.ApproxCountDistinct (2e3a5a0)ibis.parse_sql() removes where clause (522f3a4)Value[dt.Floating] annotated values as dt.float64 (b8a924a)__index_level_N__ cols before applying schema (b53feac)Object pattern should match on positional arguments first (96c796f)PatternList should keep the original pattern's type (6552639).sql calls works (a5e3062)pyarrow_hotfix where necessary (0fa1e5d)Table.sample (51027d9)BasePandasBackend (20fd120)Literal annotation to display possible units for delta method (ee94cb5)_rewrite_filter() in favor of using replacement patterns (4c0ac2e)is_reduction() (2acc31f)pushdown_aggregation_filters() (cf95ff7)sub_for(), substitute(), find_toplevel_aggs() (492b296)substitute_parents() (cd91a7e)substitute_unbound() since it is used at a single place (6a6ad19)pushdown_selection_filters() (2e47738)read_delta to base io handler (3d5a684)BigQueryTable object (b83e60e)lit usage (1bc6cee)lit with builtin sqlglot functions (221b630)create_table implementation (ea0826d)ibis.common.bases.Base in favor of Abstract (8ed313c)FILTER syntax when counting (815c12f)ibis.expr.streaming (70df318)ibis.common.pattern builders and ibis.expr.deferred (652ceab)*args in udf functions (e22236c)Temporal* classes (d3bcf73)reference: soft-deprecate ibis.where
interpolation argument was only supported in the dask and pandas backends; for interpolated quantiles use dask or pandas directlytable.order_by may no longer work, pass order_by=... into the appropriate cumulative method to achieve the same behavior.string to enable use of the string APIs.ImpalaTable.rename is removed, use Backend.rename_table instead.PySparkTable.rename is removed, use Backend.rename_table instead.ClickhouseTable is removed. This class only provided a single insert method. Use the Clickhouse backend's insert method instead.sqlglot is now 17.2.0, to support much faster and more robust backend type parsing.ibis.common.validators module has been removed
and all validation rules from ibis.expr.rules, either use typehints
or patterns from ibis.common.patterns.delta method for computing difference in units between two temporal values (18617bf)ArrayIntersect operation and corresponding ArrayValue.intersect API (76c95b2)Backend.rename_table (0047143)levenshtein edit distance API (ab211a8)relocate table expression API for moving columns around based on selectors (ee8a86f)Table.rename, with support for renaming via keyword arguments (917d7ec)to_pandas_batches (740778f)ibis.ifelse (685dbc1)ibis.case() (6f9f7c5)ibis.array (b1b83f9)ibis.map (86c8669)ibis.struct (7ef870d)ibis.date (f454a71)ibis.time (be1fd65)ibis.timestamp (0e71505)ibis.coalesce/ibis.greatest/ibis.least (e423480)read_parquet and read_csv (dc2ea25).sql methods (f1d004b).cache() method (621bdac)ops.FloorDivide operation (95474e6)Backend (46d0e33)NULLIFZERO (6ad1e96)ZEROIFNULL (31560eb)Backend.rename_table (309c999)read_json (d487e10)Backend.rename_table (0a8b201)ArrayRemove implementation (4f9d9f9)read_csv, read_parquet and read_json (adb8f4c)ops.ArrayRepeat (a93cbd6)read_csv (3323156)read_json (ec870a2)read_parquet (e02888b)database argument to list_schemas (22ceba7)any_of selectors (5e11529)relocate is preserved (19a59aa)Table.select (258a289)functools.partial objects to array .map/.filter methods (28f45d0)list_tables (758a875)array1.union(array2) null handling matches across backends (8d42794)pattern() factory should construct a CoercedTo(type) pattern from coercible types (09be2cd)VARCHAR (56e6ffc)array1.union(array2) null handling matches across backends (849dea4)ops.RegexSearch translations (a3427a1)ops.Power (42d2236)ops.IfNull op (85de81c)execute (2f6564f)ops.TimestampDiff (580eff7)epochseconds (f18c760)ops.Clip using if statements (b7153ea)ops.Date as a cast operation (2470e81)ops.RandomScalar to rand (c485a92)Pattern (f68079a)header=True (0ffda75)s.c (ae3e76e)array_sort until upstream lands (6f7e13d)temp=True (04461d5)DataTypeParam import (65851fc)ops.StructColumn dshape depend on its input (7086d58)functools.partial and lambda closures to ArrayValue.map and ArrayValue.filter (e245e83)ibis.connect to top_level API docs (0d197e8)unnest examples (e765712).sql instead (1e1a574)ibis when possible (bc05ced)datatypes.core APIs to avoid documenting private types (6ad8069)connect anchor instead of do_connect (d680b40)README.md (15112bb)delta API (e543b1d)poetry version (15e77f7)find_memtables function in favor of node.find() (c4658e7)find_phyisical_tables() function in favor of node.find() (4daf2df)is_analytic function in favor of node.find() (0452810)ClickhouseTable.insert method to clickhouse backend and remove ClickhouseTable class (c9c72ae)ibis.common.bases from ibis.common.grounds (01671d2)ibis.collections.DotDict (fedd4b1)Validator mixin for better clarity (4697e7d)ibis.api.category_label function (24ac5e7)DEGREES, RADIANS (33518e9)TypeParser into a TypeMapper implementation for sqlglot (468bed1)ArrayContains instead of Contains for value.isin(array_value) (e826037)Contains into InValues and InColumn (fe9a289).output_dtype and .output_shape to .dtype and .shape respectively (f9d5403)Cumulative operations by adding where, group_by and order_by kwargs to cumulative APIs (26ffc68)ibis.expr.format using node.map() (94ee679)ops.Where to ops.IfElse (a64b7ad)read_parquet (41df410)test_visualize.py to ibis/expr/tests (46d74ee)ibis.expr.decompile and ibis.expr.sql test files to be under the ibis.expr subpackage (d0d006e)ibis.tests.exprs to ibis.expr.operations.tests (3cbe2f3)Value operations (d87e65a)Concrete construction performance (2cb1a55)to_pyarrow performance (5970cfe)information_schema instead of describe select (ef7f69f)ibis.negate in favor of negate method (47cdbe8)ibis.where in favor of ibis.ifelse (995c1bc)Table.relabel in favor of Table.rename (dcd9772)ibis.geo_* functions in favor of their corresponding methods (71b7106)nullifzero with ifnull and zeroifnull with fillna (ac85d11)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
trino: add source application to trino backend
list_schemas implementation (84d38a1)Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →