This PR mainly implements the functions `tbl()`, `across()`, `pivot_longer()`, `pivot_wider()`. It ensures verbs work with grouped data. As part of implementing `across()`, it refactored tidyselection and SQL support.
What's Changed
* feat(tbl): add `tbl()` function for pandas and sqla (https://github.com/machow/siuba/pull/446)
* feat `pivot_longer()` and `pivot_wider()` (https://github.com/machow/siuba/pull/440)
* feat `across()` by (https://github.com/machow/siuba/pull/452)
* feat: `count()` and `add_count()` support the `name` argument. (452)
* feat: a new symbolic "formula" object, `Fx`, now exposed as a top level import. This is used to represent operations in `across()` and the pivot functions. (452)
* feat: implement grouped distinct for both pandas and sql. (452)
* feat(tidyselect)!: a lambda can no longer be used to create a tidyselection specifier. Instead we match dplyr's behavior (452):
- old: `lambda _: _.startswith("abc")` was equivalent to `_.startswith("abc")`
- Now, when `select()` is given a callable function, it passes each column of data to it, and expects back a boolean.
- new: `select(cars, lambda ser: ser.dtype == "int")`
* feat: forcats functions: `fct_inseq()`, `fct_infreq()` (https://github.com/machow/siuba/pull/435)
* feat: show_query simplify option uses `"*"` when possible (https://github.com/machow/siuba/pull/344)
* feat(siu): new `pipe()` and `call()` functions (https://github.com/machow/siuba/pull/413)
- `pipe()` allows you to manually create a pipe
- `call()` call you to represent a call to an external function (e.g. `call(pd.to_datetime, _.some_col)`)
* feat: Add new datasets (https://github.com/machow/siuba/pull/434)
* feat(sql): add `LazyTbl.last_select` to simplify queries (https://github.com/machow/siuba/pull/449)
.
* **fix(pandas)!**: gather default selection is all columns (https://github.com/machow/siuba/pull/451)
* **fix!**: if_else and case_when now return Series (https://github.com/machow/siuba/pull/432)
* **fix(sql)!**: calling `arrange()` twice now resets the order_by variables set by the first call (matching dbplyr behavior) (452).
* fix: `add_count()` now correctly handles named arguments, is tested for most cases `count()` is tested on (452).
* fix: support negative index, multislice in tidyselect (https://github.com/machow/siuba/pull/430)
* fix(pandas): ensure verbs accept DataFrameGroupBy (https://github.com/machow/siuba/pull/445)
* fix(experimental): fix tab completions (https://github.com/machow/siuba/pull/444)
.
* tests: speed snowflake tests by removing reflection (https://github.com/machow/siuba/pull/428)
* tests(sql): update failing test, due to duckdb change (https://github.com/machow/siuba/pull/441)
.
* docs: using an OR condition in filter (https://github.com/machow/siuba/pull/427)
* docs: complete docstrings for all verbs (https://github.com/machow/siuba/pull/439)
* chore: Fix typos by kianmeng in https://github.com/machow/siuba/pull/433
New Contributors
* kianmeng made their first contribution in https://github.com/machow/siuba/pull/433
**Full Changelog**: https://github.com/machow/siuba/compare/v0.3.0...v0.4.0rc1