From 898f00276606f43b5c95bd8469230e07b03d759b Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 15 Sep 2022 11:01:43 +0000 Subject: [PATCH] chore(release): 3.2.0 --- docs/release_notes.md | 135 ++++++++++++++++++++++++++++++++++++++++++ ibis/__init__.py | 2 +- pyproject.toml | 2 +- setup.py | 2 +- 4 files changed, 138 insertions(+), 3 deletions(-) diff --git a/docs/release_notes.md b/docs/release_notes.md index e0a3dfd58b51..4daf72d1aadb 100644 --- a/docs/release_notes.md +++ b/docs/release_notes.md @@ -1,6 +1,141 @@ Release Notes --- +## [3.2.0](https://github.com/ibis-project/ibis/compare/3.1.0...3.2.0) (2022-09-15) + + +### Features + +* add api to get backend entry points ([0152f5e](https://github.com/ibis-project/ibis/commit/0152f5e4a608c531de146a6aa6df8087d8d4c182)) +* **api:** add `and_` and `or_` helpers ([94bd4df](https://github.com/ibis-project/ibis/commit/94bd4df81d73f8c894eb5b72e747b7a79cdf14f6)) +* **api:** add `argmax` and `argmin` column methods ([b52216a](https://github.com/ibis-project/ibis/commit/b52216ac96167781878a99cf285bbd1afb106fb3)) +* **api:** add `distinct` to `Intersection` and `Difference` operations ([cd9a34c](https://github.com/ibis-project/ibis/commit/cd9a34ce7643fcdaf1e8f8166b968fd8a175308a)) +* **api:** add `ibis.memtable` API for constructing in-memory table expressions ([0cc6948](https://github.com/ibis-project/ibis/commit/0cc694862154d0ae62b92151b8e08f2a0a8e34b9)) +* **api:** add `ibis.sql` to easily get a formatted SQL string ([d971cc3](https://github.com/ibis-project/ibis/commit/d971cc397b10e9e3b2d3388cb4827400a29bc615)) +* **api:** add `Table.unpack()` and `StructValue.lift()` APIs for projecting struct fields ([ced5f53](https://github.com/ibis-project/ibis/commit/ced5f539ef00192dbcdcd495e5546c523aa62846)) +* **api:** allow transmute-style select method ([d5fc364](https://github.com/ibis-project/ibis/commit/d5fc3643e26950ecfeaf46768aca357dfd0223c3)) +* **api:** implement all bitwise operators ([7fc5073](https://github.com/ibis-project/ibis/commit/7fc507348f5edc7bc665560e191522e2979c0c18)) +* **api:** promote `psql` to a `show_sql` public API ([877a05d](https://github.com/ibis-project/ibis/commit/877a05d89347bf61439ef2122d62da7ddaf67312)) +* **clickhouse:** add dataframe external table support for memtables ([bc86aa7](https://github.com/ibis-project/ibis/commit/bc86aa7bd703c85c7bf8cfa1d51efc9e90d1f9ea)) +* **clickhouse:** add enum, ipaddr, json, lowcardinality to type parser ([8f0287f](https://github.com/ibis-project/ibis/commit/8f0287f4462d697b295456c643ecba5092c19332)) +* **clickhouse:** enable support for working window functions ([310a5a8](https://github.com/ibis-project/ibis/commit/310a5a8a430faccb347883fab7dc43019af9bce4)) +* **clickhouse:** implement `argmin` and `argmax` ([ee7c878](https://github.com/ibis-project/ibis/commit/ee7c87830364b00995fce82bd320280476237375)) +* **clickhouse:** implement bitwise operations ([348cd08](https://github.com/ibis-project/ibis/commit/348cd0892b987508505e0180423ff9c0fb29f502)) +* **clickhouse:** implement struct scalars ([1f3efe9](https://github.com/ibis-project/ibis/commit/1f3efe90de976e569152699bb156f948e54e21b6)) +* **dask:** implement `StringReplace` execution ([1389f4b](https://github.com/ibis-project/ibis/commit/1389f4bc31ac3b497ea40d276f3e2d19b32974df)) +* **dask:** implement ungrouped `argmin` and `argmax` ([854aea7](https://github.com/ibis-project/ibis/commit/854aea78cd474801e543f98942a110a8571e56b8)) +* **deps:** support duckdb 0.5.0 ([47165b2](https://github.com/ibis-project/ibis/commit/47165b233b1b2764009bf39e30ca7b59b1266b70)) +* **duckdb:** handle query parameters in `ibis.connect` ([fbde95d](https://github.com/ibis-project/ibis/commit/fbde95dcab7b67af9cc9796326df8367d5b3e778)) +* **duckdb:** implement `argmin` and `argmax` ([abf03f1](https://github.com/ibis-project/ibis/commit/abf03f108570d1f3e06373dcaaa50fa29abae209)) +* **duckdb:** implement bitwise xor ([ca3abed](https://github.com/ibis-project/ibis/commit/ca3abedccbcb69ab682b1f27932f06ab465f11cc)) +* **duckdb:** register tables from pandas/pyarrow objects ([36e48cc](https://github.com/ibis-project/ibis/commit/36e48cc7c4107123d0bca9f0f663e17bc02d91b8)) +* **duckdb:** support unsigned integer types ([2e67918](https://github.com/ibis-project/ibis/commit/2e6791898ecfec88c3874e9c431d8d0b01395dd2)) +* **impala:** implement bitwise operations ([c5302ab](https://github.com/ibis-project/ibis/commit/c5302ab8eef5a29c541dbb08c780f8c09f41102f)) +* implement dropna for SQL backends ([8a747fb](https://github.com/ibis-project/ibis/commit/8a747fb79b71fba44f6f524c3d32f06ca1d66152)) +* **log:** make BaseSQLBackend._log print by default ([12de5bb](https://github.com/ibis-project/ibis/commit/12de5bbee7d823e0a0f47a3bdc153eb2ed3d0b45)) +* **mysql:** register BLOB types ([1e4fb92](https://github.com/ibis-project/ibis/commit/1e4fb92b09471e221fc7387af16526008afd855a)) +* **pandas:** implement `argmin` and `argmax` ([bf9b948](https://github.com/ibis-project/ibis/commit/bf9b94846ee3a0b5de386f164b22ce9712944985)) +* **pandas:** implement `NotContains` on grouped data ([976dce7](https://github.com/ibis-project/ibis/commit/976dce73a02b7bc8dc0222ffef52532aaafb8744)) +* **pandas:** implement `StringReplace` execution ([578795f](https://github.com/ibis-project/ibis/commit/578795ff3871a47c46d52876091b58c844485d58)) +* **pandas:** implement Contains with a group by ([c534848](https://github.com/ibis-project/ibis/commit/c53484894ff631e5929b065498c84222b785db4d)) +* **postgres:** implement bitwise xor ([9b1ebf5](https://github.com/ibis-project/ibis/commit/9b1ebf50ba329223460839c8bc1daf08a5a02452)) +* **pyspark:** add option to treat nan as null in aggregations ([bf47250](https://github.com/ibis-project/ibis/commit/bf472502ce08328124520d7e386f8d60bd8b04c9)) +* **pyspark:** implement `ibis.connect` for pyspark ([a191744](https://github.com/ibis-project/ibis/commit/a191744047bcde4e4479ede3f63995d5925ba6ed)) +* **pyspark:** implement `Intersection` and `Difference` ([9845a3c](https://github.com/ibis-project/ibis/commit/9845a3c115138aafeb324dfa72efaf8ea88c1535)) +* **pyspark:** implement bitwise operators ([33cadb1](https://github.com/ibis-project/ibis/commit/33cadb1275bc3561de1bcb54bc7a628b341b4978)) +* **sqlalchemy:** implement bitwise operator translation ([bd9f64c](https://github.com/ibis-project/ibis/commit/bd9f64cc34f5b8e27c17b6b992bf8acc2486e09c)) +* **sqlalchemy:** make `ibis.connect` with sqlalchemy backends ([b6cefb9](https://github.com/ibis-project/ibis/commit/b6cefb9a2a47c6865d7ed1b3e98442f3b1be7f94)) +* **sqlalchemy:** properly implement `Intersection` and `Difference` ([2bc0b69](https://github.com/ibis-project/ibis/commit/2bc0b697e611dfd13fa6c9e8dae891bce72bdeef)) +* **sql:** implement `StringReplace` translation ([29daa32](https://github.com/ibis-project/ibis/commit/29daa32ad8c9709e44fc22e3bce580c41aff9547)) +* **sqlite:** implement bitwise xor and bitwise not ([58c42f9](https://github.com/ibis-project/ibis/commit/58c42f99cc9c99aa3bed88f6d0840fa4be8755b5)) +* support `table.sort_by(ibis.random())` ([693005d](https://github.com/ibis-project/ibis/commit/693005d5046eaace37b8c6d6d7d09104de99fe9b)) +* **type-system:** infer pandas' string dtype ([5f0eb5d](https://github.com/ibis-project/ibis/commit/5f0eb5d09e6debfe04bb30b2ffea75f8cbd42e7a)) +* **ux:** add duckdb as the default backend ([8ccb81d](https://github.com/ibis-project/ibis/commit/8ccb81d49e252b57310bdb3a97eeb77ef1d28bac)) +* **ux:** use `rich` to format `Table.info()` output ([67234c3](https://github.com/ibis-project/ibis/commit/67234c3a25927e4e457191e81010c2a8f8a3c7e5)) +* **ux:** use `sqlglot` for pretty printing SQL ([a3c81c5](https://github.com/ibis-project/ibis/commit/a3c81c5bc95c5c87c168551ef4eb3efe084c8cf3)) +* variadic union, intersect, & difference functions ([05aca5a](https://github.com/ibis-project/ibis/commit/05aca5a699c725fa167ff0fa020752ecd4b7547b)) + + +### Bug Fixes + +* **api:** make sure column names that are already inferred are not overwritten ([6f1cb16](https://github.com/ibis-project/ibis/commit/6f1cb1602a237e8cdd3c98572aa59bb10e872b39)) +* **api:** support deferred objects in existing API functions ([241ce6a](https://github.com/ibis-project/ibis/commit/241ce6aeab639c73b147e4744800bf19f3e884e3)) +* **backend:** ensure that chained limits respect prior limits ([02a04f5](https://github.com/ibis-project/ibis/commit/02a04f5f36bfad3ea525db727bcaaf4a49b0e243)) +* **backends:** ensure select after filter works ([e58ca73](https://github.com/ibis-project/ibis/commit/e58ca7323a4ee57d9e9cfcc2ebce12c5502ba749)) +* **backends:** only recommend installing ibis-foo when foo is a known backend ([ac6974a](https://github.com/ibis-project/ibis/commit/ac6974a66b9492960981db4a9471b8ffb24786f1)) +* **base-sql:** fix String-generating backend string concat implementation ([3cf78c1](https://github.com/ibis-project/ibis/commit/3cf78c190990c289e61712eb65856990f52ba003)) +* **clickhouse:** add IPv4/IPv6 literal inference ([0a2f315](https://github.com/ibis-project/ibis/commit/0a2f3150723c31e2b8df120ecdbd8fe92db48ab0)) +* **clickhouse:** cast repeat `times` argument to `UInt64` ([b643544](https://github.com/ibis-project/ibis/commit/b6435444832b0d5cc57b4473ba3bbbb99537b5da)) +* **clickhouse:** fix listing tables from databases with no tables ([08900c3](https://github.com/ibis-project/ibis/commit/08900c33df9045dc7c6602626a776f89860342ed)) +* **compilers:** make sure memtable rows have names in the SQL string compilers ([18e7f95](https://github.com/ibis-project/ibis/commit/18e7f9555c3bf8c602ebcaef0188e03d7b0bd7ee)) +* **compiler:** use `repr` for SQL string `VALUES` data ([75af658](https://github.com/ibis-project/ibis/commit/75af658df785529e65bf2fdeca472d3a71d1ff09)) +* **dask:** ensure predicates are computed before projections ([5cd70e1](https://github.com/ibis-project/ibis/commit/5cd70e12f10eb6847a3553c8e31263ae31fd47f8)) +* **dask:** implement timestamp-date binary comparisons ([48d5058](https://github.com/ibis-project/ibis/commit/48d5058cc83d006ed381b9256363fcd62606ea49)) +* **dask:** set dask upper bound due to large scale test breakage ([796c645](https://github.com/ibis-project/ibis/commit/796c645b74a67be9f4b40b32ef0ab9b0dfc27556)), closes [#9221](https://github.com/ibis-project/ibis/issues/9221) +* **decimal:** add decimal type inference ([3fe3fd8](https://github.com/ibis-project/ibis/commit/3fe3fd8927da565d7e85958566e8f87b600fc748)) +* **deps:** update dependency duckdb-engine to >=0.1.8,<0.4.0 ([113dc8f](https://github.com/ibis-project/ibis/commit/113dc8f667ccdf3ac1897ec2a1eef41ebd41463f)) +* **deps:** update dependency duckdb-engine to >=0.1.8,<0.5.0 ([ef97c9d](https://github.com/ibis-project/ibis/commit/ef97c9d948b1c80fb3cd9cb49745bc9d5fef9da2)) +* **deps:** update dependency parsy to v2 ([9a06131](https://github.com/ibis-project/ibis/commit/9a061310873c9aa3773b38d93ef724276daa5705)) +* **deps:** update dependency shapely to >=1.6,<1.8.4 ([0c787d2](https://github.com/ibis-project/ibis/commit/0c787d25e7f1c302fcc83b137ae1875c2578f4f2)) +* **deps:** update dependency shapely to >=1.6,<1.8.5 ([d08c737](https://github.com/ibis-project/ibis/commit/d08c737e90b20fe76b2abc0f46940b8868f29071)) +* **deps:** update dependency sqlglot to v5 ([f210bb8](https://github.com/ibis-project/ibis/commit/f210bb8843214da7d790afb03817382cc88c8c19)) +* **deps:** update dependency sqlglot to v6 ([5ca4533](https://github.com/ibis-project/ibis/commit/5ca4533b5fe63eb76a470d89bdb82af73f83135e)) +* **duckdb:** add missing types ([59bad07](https://github.com/ibis-project/ibis/commit/59bad077d61ac3266b9b6695cc9b3fb559858592)) +* **duckdb:** ensure that in-memory connections remain in their creating thread ([39bc537](https://github.com/ibis-project/ibis/commit/39bc537d6d5684f02e77f246e6a751392663e039)) +* **duckdb:** use `fetch_arrow_table()` to be able to handle big timestamps ([85a76eb](https://github.com/ibis-project/ibis/commit/85a76eb558ad76a83a407c0e0b1bcede0bbffa8b)) +* fix bug in pandas & dask `difference` implementation ([88a78fa](https://github.com/ibis-project/ibis/commit/88a78faffe8db2fc04cd9dd74bf699e0cd1c4aac)) +* fix dask `where` implementation ([49f8845](https://github.com/ibis-project/ibis/commit/49f88452e45e8b0159a49c32d5ddeea5ab78da3c)) +* **impala:** add date column dtype to impala to ibis type dict ([c59e94e](https://github.com/ibis-project/ibis/commit/c59e94e2ae95a9c61830c1208be015f74408e667)), closes [#4449](https://github.com/ibis-project/ibis/issues/4449) +* pandas where supports scalar for `left` ([48f6c1e](https://github.com/ibis-project/ibis/commit/48f6c1eff2d8d1d5440925f7ca5736618c3e4522)) +* **pandas:** fix anti-joins ([10a659d](https://github.com/ibis-project/ibis/commit/10a659d66145403c872ec176b8a739613f0061e7)) +* **pandas:** implement timestamp-date binary comparisons ([4fc666d](https://github.com/ibis-project/ibis/commit/4fc666d18b384d0ebda0120e9a099ed164f3b0bb)) +* **pandas:** properly handle empty groups when aggregating with `GroupConcat` ([6545f4d](https://github.com/ibis-project/ibis/commit/6545f4dbf41ba5f99666b365bcc5dfe445ece8e7)) +* **pyspark:** fix broken `StringReplace` implementation ([22cb297](https://github.com/ibis-project/ibis/commit/22cb297df9d43b2859d8f59783da6c3e84749d58)) +* **pyspark:** make sure `ibis.connect` works with pyspark ([a7ab107](https://github.com/ibis-project/ibis/commit/a7ab107200effd7a1f71fd2ae0af33ae2845232f)) +* **pyspark:** translate predicates before projections ([b3d1c80](https://github.com/ibis-project/ibis/commit/b3d1c80c4ff23ebde21b009a9d744f775d61aba7)) +* **sqlalchemy:** fix float64 type mapping ([8782773](https://github.com/ibis-project/ibis/commit/87827735ca26fd0c843246218a4ff11db8745429)) +* **sqlalchemy:** handle reductions with multiple arguments ([5b2039b](https://github.com/ibis-project/ibis/commit/5b2039b17ee28c36714ae5958cc33261a78debeb)) +* **sqlalchemy:** implement `SQLQueryResult` translation ([786a50f](https://github.com/ibis-project/ibis/commit/786a50f84b4a0ca3f07fb650f42fbb7cfdeb7c51)) +* **sql:** fix sql compilation after making `InMemoryTable` a subclass of `PhysicalTable` ([aac9524](https://github.com/ibis-project/ibis/commit/aac9524b691c74d2681da5c0e72ad9913c13e4a0)) +* squash several bugs in `sort_by` asc/desc handling ([222b2ba](https://github.com/ibis-project/ibis/commit/222b2bad2d1bb4ad87c68844a6d1bb5a2f91293a)) +* support chained set operations in SQL backends ([227aed3](https://github.com/ibis-project/ibis/commit/227aed33188c21148e0ae70dfa3c15e3bb8a6e25)) +* support filters on InMemoryTable exprs ([abfaf1f](https://github.com/ibis-project/ibis/commit/abfaf1fd7b65bcdc1fd4e2bd2abcd3a5a8ec09da)) +* **typo:** in BaseSQLBackend.compile docstring ([0561b13](https://github.com/ibis-project/ibis/commit/0561b130b2851cb6b8fc493e129d1992c9831504)) + + +### Deprecations + +* `right` kwarg in `union`/`intersect`/`difference` ([719a5a1](https://github.com/ibis-project/ibis/commit/719a5a1689ad94b8a0514cc6bb11ed81387e51a9)) +* **duckdb:** deprecate `path` argument in favor of `database` ([fcacc20](https://github.com/ibis-project/ibis/commit/fcacc203e066297ce57d2cb2c7e6f791094c513a)) +* **sqlite:** deprecate `path` argument in favor of `database` ([0f85919](https://github.com/ibis-project/ibis/commit/0f8591966dd0c98018e218e93faeefb16f5f927f)) + + +### Performance + +* **pandas:** remove reexecution of alias children ([64efa53](https://github.com/ibis-project/ibis/commit/64efa5376b9b96e23666242dad618512d886a124)) +* **pyspark:** ensure that pyspark DDL doesn't use `VALUES` ([422c98d](https://github.com/ibis-project/ibis/commit/422c98db7584bffda407fd393037a2c921437ccf)) +* **sqlalchemy:** register DataFrames cheaply where possible ([ee9f1be](https://github.com/ibis-project/ibis/commit/ee9f1be10073bc7789c2519314a5229e7163c88d)) + + +### Documentation + +* add `to_sql` ([e2821a5](https://github.com/ibis-project/ibis/commit/e2821a56c7d867b8b591f1777019843a2ffca797)) +* add back constraints for transitive doc dependencies and fix docs ([350fd43](https://github.com/ibis-project/ibis/commit/350fd43e8777636230901cd928c76793110635be)) +* add coc reporting information ([c2355ba](https://github.com/ibis-project/ibis/commit/c2355ba1c0532ff0a5eddd1267107d3554fa31d3)) +* add community guidelines documentation ([fd0893f](https://github.com/ibis-project/ibis/commit/fd0893f3895345d754b5f324d42e320995ceba83)) +* add HeavyAI to the readme ([4c5ca80](https://github.com/ibis-project/ibis/commit/4c5ca80a91b218bb1f9e61bef58f5cf120ece0aa)) +* add how-to bfill and ffill ([ff84027](https://github.com/ibis-project/ibis/commit/ff840274572bc825caf3905b404c2397a67b3d10)) +* add how-to for ibis+duckdb register ([73a726e](https://github.com/ibis-project/ibis/commit/73a726e0d5380951a1c3a0d5fb6b1119a392c307)) +* add how-to section to docs ([33c4b93](https://github.com/ibis-project/ibis/commit/33c4b9393c432b2603309bb79f43316175a27b63)) +* **duckdb:** add installation note for duckdb >= 0.5.0 ([608b1fb](https://github.com/ibis-project/ibis/commit/608b1fb7e6b63330a46136aca162037e34e9b521)) +* fix `memtable` docstrings ([72bc0f5](https://github.com/ibis-project/ibis/commit/72bc0f5172c0a3d17bde29cfc00db4c60d2fee3a)) +* fix flake8 line length issues ([fb7af75](https://github.com/ibis-project/ibis/commit/fb7af7587492e13d24ab52b9f29581456aaed966)) +* fix markdown ([4ab6b95](https://github.com/ibis-project/ibis/commit/4ab6b950adf703db6db4c7772f70280bc6f626f4)) +* fix relative links in tutorial ([2bd075f](https://github.com/ibis-project/ibis/commit/2bd075fdd20729d6e6e1d117b38a24ec23fa7d0f)), closes [#4064](https://github.com/ibis-project/ibis/issues/4064) [#4201](https://github.com/ibis-project/ibis/issues/4201) +* make attribution style uniform across the blog ([05561e0](https://github.com/ibis-project/ibis/commit/05561e06454f503fcbd7945421f5c1269f7d1815)) +* move the blog out to the top level sidebar for visibility ([417ba64](https://github.com/ibis-project/ibis/commit/417ba64074402436fc479b5a67761d74bb46357d)) +* remove underspecified UDF doc page ([0eb0ac0](https://github.com/ibis-project/ibis/commit/0eb0ac09f0ea9af973a80de4bc46f28a8b04e5db)) + ## [3.1.0](https://github.com/ibis-project/ibis/compare/3.0.2...3.1.0) (2022-07-26) diff --git a/ibis/__init__.py b/ibis/__init__.py index 2026ad4f9455..af9541e8c768 100644 --- a/ibis/__init__.py +++ b/ibis/__init__.py @@ -16,7 +16,7 @@ __all__ = ['api', 'ir', 'util', 'BaseBackend', 'IbisError', 'options'] __all__ += api.__all__ -__version__ = "3.1.0" +__version__ = "3.2.0" _KNOWN_BACKENDS = ['bigquery', 'heavyai'] diff --git a/pyproject.toml b/pyproject.toml index fbff93f0a82f..bebce6264fb9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "ibis-framework" -version = "3.1.0" +version = "3.2.0" packages = [{ include = "ibis" }] homepage = "https://ibis-project.org" repository = "https://github.com/ibis-project/ibis" diff --git a/setup.py b/setup.py index f5d31ae24b05..75a7c0cb0f4b 100644 --- a/setup.py +++ b/setup.py @@ -141,7 +141,7 @@ setup_kwargs = { 'name': 'ibis-framework', - 'version': '3.1.0', + 'version': '3.2.0', 'description': 'Productivity-centric Python Big Data Framework', 'long_description': '# Ibis: Expressive analytics in Python at any scale\n\n| Service | Status |\n| -------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Documentation | [![Documentation Status](https://img.shields.io/badge/docs-docs.ibis--project.org-blue.svg)](http://ibis-project.org) |\n| Conda packages | [![Anaconda-Server Badge](https://anaconda.org/conda-forge/ibis-framework/badges/version.svg)](https://anaconda.org/conda-forge/ibis-framework) |\n| PyPI | [![PyPI](https://img.shields.io/pypi/v/ibis-framework.svg)](https://pypi.org/project/ibis-framework) |\n| Ibis CI | [![Build status](https://github.com/ibis-project/ibis/actions/workflows/ibis-main.yml/badge.svg)](https://github.com/ibis-project/ibis/actions/workflows/ibis-main.yml?query=branch%3Amaster) |\n| Backend CI | [![Build status](https://github.com/ibis-project/ibis/actions/workflows/ibis-backends.yml/badge.svg)](https://github.com/ibis-project/ibis/actions/workflows/ibis-backends.yml?query=branch%3Amaster) |\n| Coverage | [![Codecov branch](https://img.shields.io/codecov/c/github/ibis-project/ibis/master.svg)](https://codecov.io/gh/ibis-project/ibis) |\n\nIbis is a Python library to help you write expressive analytics at any scale,\nsmall to large. Its goal is to simplify analytical workflows and make you more\nproductive.\n\nInstall Ibis from PyPI with:\n\n```sh\npip install ibis-framework\n```\n\nor from conda-forge with\n\n```sh\nconda install ibis-framework -c conda-forge\n```\n\nIbis provides tools for interacting with the following systems:\n\n- [Apache Impala](https://ibis-project.org/docs/latest/backends/Impala/)\n- [Google BigQuery](https://github.com/ibis-project/ibis-bigquery)\n- [ClickHouse](https://ibis-project.org/docs/latest/backends/ClickHouse/)\n- [HeavyAI](https://github.com/heavyai/ibis-heavyai)\n- [Dask](https://ibis-project.org/docs/latest/backends/Dask/)\n- [DuckDB](https://ibis-project.org/docs/latest/backends/DuckDB/)\n- [MySQL](https://ibis-project.org/docs/latest/backends/MySQL/)\n- [Pandas](https://ibis-project.org/docs/latest/backends/Pandas/)\n- [PostgreSQL](https://ibis-project.org/docs/latest/backends/PostgreSQL/)\n- [PySpark](https://ibis-project.org/docs/latest/backends/PySpark/)\n- [SQLite](https://ibis-project.org/docs/latest/backends/SQLite/)\n\nLearn more about using the library at https://ibis-project.org.\n', 'author': 'Ibis Contributors',