Improve type hovers (#9515)

# Description

This PR does a few things to help improve type hovers and, in the
process, fixes a few outstanding issues in the type system. Here's a
list of the changes:

* `for` now will try to infer the type of the iteration variable based
on the expression it's given. This fixes things like `for x in [1, 2, 3]
{ }` where `x` now properly gets the int type.
* Removed old input/output type fields from the signature, focuses on
the vec of signatures. Updated a bunch of dataframe commands that hadn't
moved over. This helps tie things together a bit better
* Fixed inference of types from subexpressions to use the last
expression in the block
* Fixed handling of explicit types in `let` and `mut` calls, so we now
respect that as the authoritative type

I also tried to add `def` input/output type inference, but unfortunately
we only know the predecl types universally, which means we won't have
enough information to properly know what the types of the custom
commands are.

# User-Facing Changes

Script typechecking will get tighter in some cases
Hovers should be more accurate in some cases that previously resorted to
any.

# Tests + Formatting
<!--
Don't forget to add tests that cover your changes.

Make sure you've run and fixed any issues with these commands:

- `cargo fmt --all -- --check` to check standard code formatting (`cargo
fmt --all` applies these changes)
- `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
clippy::needless_collect -A clippy::result_large_err` to check that
you're using the standard code style
- `cargo test --workspace` to check that all tests pass
- `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the
standard library

> **Note**
> from `nushell` you can also use the `toolkit` as follows
> ```bash
> use toolkit.nu # or use an `env_change` hook to activate it
automatically
> toolkit check pr
> ```
-->

# After Submitting
<!-- If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io) after the
PR is merged, if necessary. This will help us keep the docs up to date.
-->

---------

Co-authored-by: Darren Schroeder <343840+fdncred@users.noreply.github.com>
This commit is contained in:
JT 2023-06-29 05:19:48 +12:00 committed by GitHub
parent 9d247387ea
commit 9068093081
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
112 changed files with 681 additions and 334 deletions

View file

@ -23,8 +23,10 @@ impl Command for AppendDF {
Signature::build(self.name()) Signature::build(self.name())
.required("other", SyntaxShape::Any, "dataframe to be appended") .required("other", SyntaxShape::Any, "dataframe to be appended")
.switch("col", "appends in col orientation", Some('c')) .switch("col", "appends in col orientation", Some('c'))
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -19,8 +19,7 @@ impl Command for ColumnsDF {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(Type::Custom("dataframe".into()), Type::Any)
.output_type(Type::Any)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -23,8 +23,10 @@ impl Command for DropDF {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.rest("rest", SyntaxShape::Any, "column names to be dropped") .rest("rest", SyntaxShape::Any, "column names to be dropped")
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -34,8 +34,10 @@ impl Command for DropDuplicates {
"keeps last duplicate value (by default keeps first)", "keeps last duplicate value (by default keeps first)",
Some('l'), Some('l'),
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -27,8 +27,10 @@ impl Command for DropNulls {
SyntaxShape::Table, SyntaxShape::Table,
"subset of columns to drop nulls", "subset of columns to drop nulls",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -19,8 +19,10 @@ impl Command for DataTypes {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -20,8 +20,10 @@ impl Command for Dummies {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -29,8 +29,10 @@ impl Command for FilterWith {
SyntaxShape::Any, SyntaxShape::Any,
"boolean mask used to filter data", "boolean mask used to filter data",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe or lazyframe".into())) .category(Category::Custom("dataframe or lazyframe".into()))
} }

View file

@ -25,8 +25,10 @@ impl Command for FirstDF {
SyntaxShape::Int, SyntaxShape::Int,
"starting from the front, the number of rows to return", "starting from the front, the number of rows to return",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -24,8 +24,10 @@ impl Command for GetDF {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.rest("rest", SyntaxShape::Any, "column names to sort dataframe") .rest("rest", SyntaxShape::Any, "column names to sort dataframe")
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for LastDF {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.optional("rows", SyntaxShape::Int, "Number of rows for tail") .optional("rows", SyntaxShape::Int, "Number of rows for tail")
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -48,8 +48,10 @@ impl Command for MeltDF {
"optional name for value column", "optional name for value column",
Some('l'), Some('l'),
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -68,8 +68,7 @@ impl Command for OpenDataFrame {
"Columns to be selected from csv file. CSV and Parquet file", "Columns to be selected from csv file. CSV and Parquet file",
None, None,
) )
.input_type(Type::Any) .input_output_type(Type::Any, Type::Custom("dataframe".into()))
.output_type(Type::Custom("dataframe".into()))
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -28,8 +28,10 @@ impl Command for QueryDf {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.required("sql", SyntaxShape::String, "sql query") .required("sql", SyntaxShape::String, "sql query")
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -33,8 +33,10 @@ impl Command for RenameDF {
SyntaxShape::Any, SyntaxShape::Any,
"New names for the selected column(s). A string or list of strings", "New names for the selected column(s). A string or list of strings",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe or lazyframe".into())) .category(Category::Custom("dataframe or lazyframe".into()))
} }

View file

@ -41,8 +41,10 @@ impl Command for SampleDF {
) )
.switch("replace", "sample with replace", Some('e')) .switch("replace", "sample with replace", Some('e'))
.switch("shuffle", "shuffle sample", Some('u')) .switch("shuffle", "shuffle sample", Some('u'))
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -22,8 +22,10 @@ impl Command for ShapeDF {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -25,8 +25,10 @@ impl Command for SliceDF {
Signature::build(self.name()) Signature::build(self.name())
.required("offset", SyntaxShape::Int, "start of slice") .required("offset", SyntaxShape::Int, "start of slice")
.required("size", SyntaxShape::Int, "size of slice") .required("size", SyntaxShape::Int, "size of slice")
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -29,8 +29,10 @@ impl Command for Summary {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.named( .named(
"quantiles", "quantiles",
SyntaxShape::Table, SyntaxShape::Table,

View file

@ -29,8 +29,10 @@ impl Command for TakeDF {
SyntaxShape::Any, SyntaxShape::Any,
"list of indices used to take data", "list of indices used to take data",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -25,8 +25,7 @@ impl Command for ToArrow {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.required("file", SyntaxShape::Filepath, "file path to save dataframe") .required("file", SyntaxShape::Filepath, "file path to save dataframe")
.input_type(Type::Custom("dataframe".into())) .input_output_type(Type::Custom("dataframe".into()), Type::Any)
.output_type(Type::Any)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -32,8 +32,7 @@ impl Command for ToCSV {
Some('d'), Some('d'),
) )
.switch("no-header", "Indicates if file doesn't have header", None) .switch("no-header", "Indicates if file doesn't have header", None)
.input_type(Type::Custom("dataframe".into())) .input_output_type(Type::Custom("dataframe".into()), Type::Any)
.output_type(Type::Any)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -20,8 +20,7 @@ impl Command for ToDataFrame {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Any) .input_output_type(Type::Any, Type::Custom("dataframe".into()))
.output_type(Type::Custom("dataframe".into()))
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -25,8 +25,7 @@ impl Command for ToJsonLines {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.required("file", SyntaxShape::Filepath, "file path to save dataframe") .required("file", SyntaxShape::Filepath, "file path to save dataframe")
.input_type(Type::Custom("dataframe".into())) .input_output_type(Type::Custom("dataframe".into()), Type::Any)
.output_type(Type::Any)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -28,8 +28,7 @@ impl Command for ToNu {
Some('n'), Some('n'),
) )
.switch("tail", "shows tail rows", Some('t')) .switch("tail", "shows tail rows", Some('t'))
.input_type(Type::Custom("dataframe".into())) .input_output_type(Type::Custom("dataframe".into()), Type::Any)
.output_type(Type::Any)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -25,8 +25,7 @@ impl Command for ToParquet {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.required("file", SyntaxShape::Filepath, "file path to save dataframe") .required("file", SyntaxShape::Filepath, "file path to save dataframe")
.input_type(Type::Custom("dataframe".into())) .input_output_type(Type::Custom("dataframe".into()), Type::Any)
.output_type(Type::Any)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -27,8 +27,10 @@ impl Command for WithColumn {
SyntaxShape::Any, SyntaxShape::Any,
"series to be added or expressions used to define the new columns", "series to be added or expressions used to define the new columns",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe or lazyframe".into())) .category(Category::Custom("dataframe or lazyframe".into()))
} }

View file

@ -26,8 +26,10 @@ impl Command for ExprAlias {
SyntaxShape::String, SyntaxShape::String,
"Alias name for the expression", "Alias name for the expression",
) )
.input_type(Type::Custom("expression".into())) .input_output_type(
.output_type(Type::Custom("expression".into())) Type::Custom("expression".into()),
Type::Custom("expression".into()),
)
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }

View file

@ -22,8 +22,7 @@ impl Command for ExprArgWhere {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.required("column name", SyntaxShape::Any, "Expression to evaluate") .required("column name", SyntaxShape::Any, "Expression to evaluate")
.input_type(Type::Any) .input_output_type(Type::Any, Type::Custom("expression".into()))
.output_type(Type::Custom("expression".into()))
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }

View file

@ -20,8 +20,7 @@ impl Command for ExprAsNu {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("expression".into())) .input_output_type(Type::Custom("expression".into()), Type::Any)
.output_type(Type::Any)
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }

View file

@ -26,8 +26,7 @@ impl Command for ExprCol {
SyntaxShape::String, SyntaxShape::String,
"Name of column to be used", "Name of column to be used",
) )
.input_type(Type::Any) .input_output_type(Type::Any, Type::Custom("expression".into()))
.output_type(Type::Custom("expression".into()))
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }

View file

@ -31,8 +31,7 @@ impl Command for ExprConcatStr {
SyntaxShape::List(Box::new(SyntaxShape::Any)), SyntaxShape::List(Box::new(SyntaxShape::Any)),
"Expression(s) that define the string concatenation", "Expression(s) that define the string concatenation",
) )
.input_type(Type::Any) .input_output_type(Type::Any, Type::Custom("expression".into()))
.output_type(Type::Custom("expression".into()))
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }

View file

@ -29,8 +29,10 @@ impl Command for ExprDatePart {
SyntaxShape::String, SyntaxShape::String,
"Part of the date to capture. Possible values are year, quarter, month, week, weekday, day, hour, minute, second, millisecond, microsecond, nanosecond", "Part of the date to capture. Possible values are year, quarter, month, week, weekday, day, hour, minute, second, millisecond, microsecond, nanosecond",
) )
.input_type(Type::Custom("expression".into())) .input_output_type(
.output_type(Type::Custom("expression".into())) Type::Custom("expression".into()),
Type::Custom("expression".into()),
)
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }

View file

@ -26,8 +26,10 @@ macro_rules! expr_command {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("expression".into())) .input_output_type(
.output_type(Type::Custom("expression".into())) Type::Custom("expression".into()),
Type::Custom("expression".into()),
)
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }
@ -85,8 +87,10 @@ macro_rules! expr_command {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("expression".into())) .input_output_type(
.output_type(Type::Custom("expression".into())) Type::Custom("expression".into()),
Type::Custom("expression".into()),
)
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }

View file

@ -26,8 +26,10 @@ impl Command for ExprIsIn {
SyntaxShape::List(Box::new(SyntaxShape::Any)), SyntaxShape::List(Box::new(SyntaxShape::Any)),
"List to check if values are in", "List to check if values are in",
) )
.input_type(Type::Custom("expression".into())) .input_output_type(
.output_type(Type::Custom("expression".into())) Type::Custom("expression".into()),
Type::Custom("expression".into()),
)
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }

View file

@ -25,8 +25,7 @@ impl Command for ExprLit {
SyntaxShape::Any, SyntaxShape::Any,
"literal to construct the expression", "literal to construct the expression",
) )
.input_type(Type::Any) .input_output_type(Type::Any, Type::Custom("expression".into()))
.output_type(Type::Custom("expression".into()))
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }

View file

@ -25,8 +25,7 @@ impl Command for ExprOtherwise {
SyntaxShape::Any, SyntaxShape::Any,
"expression to apply when no when predicate matches", "expression to apply when no when predicate matches",
) )
.input_type(Type::Any) .input_output_type(Type::Any, Type::Custom("expression".into()))
.output_type(Type::Custom("expression".into()))
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }

View file

@ -26,8 +26,10 @@ impl Command for ExprQuantile {
SyntaxShape::Number, SyntaxShape::Number,
"quantile value for quantile operation", "quantile value for quantile operation",
) )
.input_type(Type::Custom("expression".into())) .input_output_type(
.output_type(Type::Custom("expression".into())) Type::Custom("expression".into()),
Type::Custom("expression".into()),
)
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }

View file

@ -31,8 +31,10 @@ impl Command for ExprWhen {
SyntaxShape::Any, SyntaxShape::Any,
"expression that will be applied when predicate is true", "expression that will be applied when predicate is true",
) )
.input_type(Type::Custom("expression".into())) .input_output_type(
.output_type(Type::Custom("expression".into())) Type::Custom("expression".into()),
Type::Custom("expression".into()),
)
.category(Category::Custom("expression".into())) .category(Category::Custom("expression".into()))
} }

View file

@ -27,8 +27,10 @@ impl Command for LazyAggregate {
SyntaxShape::Any, SyntaxShape::Any,
"Expression(s) that define the aggregations to be applied", "Expression(s) that define the aggregations to be applied",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }
@ -121,7 +123,7 @@ impl Command for LazyAggregate {
let group_by = NuLazyGroupBy::try_from_pipeline(input, call.head)?; let group_by = NuLazyGroupBy::try_from_pipeline(input, call.head)?;
if let Some(schema) = &group_by.schema { if let Some(schema) = &group_by.schema {
for expr in &expressions { for expr in expressions.iter() {
if let Some(name) = get_col_name(expr) { if let Some(name) = get_col_name(expr) {
let dtype = schema.get(name.as_str()); let dtype = schema.get(name.as_str());

View file

@ -21,8 +21,10 @@ impl Command for LazyCollect {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }

View file

@ -26,8 +26,10 @@ impl Command for LazyFetch {
SyntaxShape::Int, SyntaxShape::Int,
"number of rows to be fetched from lazyframe", "number of rows to be fetched from lazyframe",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }

View file

@ -25,8 +25,10 @@ impl Command for LazyFillNA {
SyntaxShape::Any, SyntaxShape::Any,
"Expression to use to fill the NAN values", "Expression to use to fill the NAN values",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }

View file

@ -25,8 +25,10 @@ impl Command for LazyFillNull {
SyntaxShape::Any, SyntaxShape::Any,
"Expression to use to fill the null values", "Expression to use to fill the null values",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }

View file

@ -26,8 +26,10 @@ impl Command for LazyFilter {
SyntaxShape::Any, SyntaxShape::Any,
"Expression that define the column selection", "Expression that define the column selection",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }

View file

@ -26,8 +26,10 @@ impl Command for ToLazyGroupBy {
SyntaxShape::Any, SyntaxShape::Any,
"Expression(s) that define the lazy group-by", "Expression(s) that define the lazy group-by",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }

View file

@ -38,8 +38,10 @@ impl Command for LazyJoin {
"Suffix to use on columns with same name", "Suffix to use on columns with same name",
Some('s'), Some('s'),
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }

View file

@ -24,8 +24,10 @@ macro_rules! lazy_command {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }
@ -74,8 +76,10 @@ macro_rules! lazy_command {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }

View file

@ -26,8 +26,10 @@ impl Command for LazyQuantile {
SyntaxShape::Number, SyntaxShape::Number,
"quantile value for quantile operation", "quantile value for quantile operation",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }

View file

@ -25,8 +25,10 @@ impl Command for LazySelect {
SyntaxShape::Any, SyntaxShape::Any,
"Expression(s) that define the column selection", "Expression(s) that define the column selection",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }

View file

@ -37,8 +37,10 @@ impl Command for LazySortBy {
"nulls are shown last in the dataframe", "nulls are shown last in the dataframe",
Some('n'), Some('n'),
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }

View file

@ -20,8 +20,7 @@ impl Command for ToLazyFrame {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Any) .input_output_type(Type::Any, Type::Custom("dataframe".into()))
.output_type(Type::Custom("dataframe".into()))
.category(Category::Custom("lazyframe".into())) .category(Category::Custom("lazyframe".into()))
} }

View file

@ -20,8 +20,10 @@ impl Command for AllFalse {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -20,8 +20,10 @@ impl Command for AllTrue {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -25,8 +25,10 @@ impl Command for ArgMax {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -25,8 +25,10 @@ impl Command for ArgMin {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -56,8 +56,10 @@ impl Command for Cumulative {
Signature::build(self.name()) Signature::build(self.name())
.required("type", SyntaxShape::String, "rolling operation") .required("type", SyntaxShape::String, "rolling operation")
.switch("reverse", "Reverse cumulative calculation", Some('r')) .switch("reverse", "Reverse cumulative calculation", Some('r'))
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -31,9 +31,11 @@ impl Command for AsDate {
Signature::build(self.name()) Signature::build(self.name())
.required("format", SyntaxShape::String, "formatting date string") .required("format", SyntaxShape::String, "formatting date string")
.switch("not-exact", "the format string may be contained in the date (e.g. foo-2021-01-01-bar could match 2021-01-01)", Some('n')) .switch("not-exact", "the format string may be contained in the date (e.g. foo-2021-01-01-bar could match 2021-01-01)", Some('n'))
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
.category(Category::Custom("dataframe".into())) Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into()))
} }
fn examples(&self) -> Vec<Example> { fn examples(&self) -> Vec<Example> {

View file

@ -40,9 +40,11 @@ impl Command for AsDateTime {
Signature::build(self.name()) Signature::build(self.name())
.required("format", SyntaxShape::String, "formatting date time string") .required("format", SyntaxShape::String, "formatting date time string")
.switch("not-exact", "the format string may be contained in the date (e.g. foo-2021-01-01-bar could match 2021-01-01)", Some('n')) .switch("not-exact", "the format string may be contained in the date (e.g. foo-2021-01-01-bar could match 2021-01-01)", Some('n'))
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
.category(Category::Custom("dataframe".into())) Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into()))
} }
fn examples(&self) -> Vec<Example> { fn examples(&self) -> Vec<Example> {

View file

@ -21,8 +21,10 @@ impl Command for GetDay {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for GetHour {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for GetMinute {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for GetMonth {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for GetNanosecond {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for GetOrdinal {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for GetSecond {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for GetWeek {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for GetWeekDay {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for GetYear {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -27,8 +27,10 @@ impl Command for ArgSort {
Signature::build(self.name()) Signature::build(self.name())
.switch("reverse", "reverse order", Some('r')) .switch("reverse", "reverse order", Some('r'))
.switch("nulls-last", "nulls ordered last", Some('n')) .switch("nulls-last", "nulls ordered last", Some('n'))
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -25,8 +25,10 @@ impl Command for ArgTrue {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -25,8 +25,10 @@ impl Command for ArgUnique {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -29,8 +29,10 @@ impl Command for SetWithIndex {
"list of indices indicating where to set the value", "list of indices indicating where to set the value",
Some('i'), Some('i'),
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for IsDuplicated {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -23,8 +23,10 @@ impl Command for IsIn {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.required("other", SyntaxShape::Any, "right series") .required("other", SyntaxShape::Any, "right series")
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -20,8 +20,10 @@ impl Command for IsNotNull {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -20,8 +20,10 @@ impl Command for IsNull {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for IsUnique {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -22,8 +22,10 @@ impl Command for NotSeries {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -29,8 +29,10 @@ impl Command for SetSeries {
"mask indicating insertions", "mask indicating insertions",
Some('m'), Some('m'),
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -20,8 +20,10 @@ impl Command for NNull {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -19,8 +19,10 @@ impl Command for NUnique {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -59,8 +59,10 @@ impl Command for Rolling {
Signature::build(self.name()) Signature::build(self.name())
.required("type", SyntaxShape::String, "rolling operation") .required("type", SyntaxShape::String, "rolling operation")
.required("window", SyntaxShape::Int, "Window size for rolling") .required("window", SyntaxShape::Int, "Window size for rolling")
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -30,8 +30,10 @@ impl Command for Shift {
"Expression used to fill the null values (lazy df)", "Expression used to fill the null values (lazy df)",
Some('f'), Some('f'),
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe or lazyframe".into())) .category(Category::Custom("dataframe or lazyframe".into()))
} }

View file

@ -27,8 +27,10 @@ impl Command for Concatenate {
SyntaxShape::Any, SyntaxShape::Any,
"Other array with string to be concatenated", "Other array with string to be concatenated",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -27,8 +27,10 @@ impl Command for Contains {
SyntaxShape::String, SyntaxShape::String,
"Regex pattern to be searched", "Regex pattern to be searched",
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -34,8 +34,10 @@ impl Command for Replace {
"replacing string", "replacing string",
Some('r'), Some('r'),
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -34,8 +34,10 @@ impl Command for ReplaceAll {
"replacing string", "replacing string",
Some('r'), Some('r'),
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for StrLengths {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -24,8 +24,10 @@ impl Command for StrSlice {
Signature::build(self.name()) Signature::build(self.name())
.required("start", SyntaxShape::Int, "start of slice") .required("start", SyntaxShape::Int, "start of slice")
.named("length", SyntaxShape::Int, "optional length", Some('l')) .named("length", SyntaxShape::Int, "optional length", Some('l'))
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -23,8 +23,10 @@ impl Command for StrFTime {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.required("fmt", SyntaxShape::String, "Format rule") .required("fmt", SyntaxShape::String, "Format rule")
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -21,8 +21,10 @@ impl Command for ToLowerCase {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -25,8 +25,10 @@ impl Command for ToUpperCase {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -40,8 +40,10 @@ impl Command for Unique {
"Keep the same order as the original DataFrame (lazy df)", "Keep the same order as the original DataFrame (lazy df)",
Some('k'), Some('k'),
) )
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe or lazyframe".into())) .category(Category::Custom("dataframe or lazyframe".into()))
} }

View file

@ -22,8 +22,10 @@ impl Command for ValueCount {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_type(Type::Custom("dataframe".into())) .input_output_type(
.output_type(Type::Custom("dataframe".into())) Type::Custom("dataframe".into()),
Type::Custom("dataframe".into()),
)
.category(Category::Custom("dataframe".into())) .category(Category::Custom("dataframe".into()))
} }

View file

@ -24,8 +24,6 @@ impl Command for QueryDb {
SyntaxShape::String, SyntaxShape::String,
"SQL to execute against the database", "SQL to execute against the database",
) )
.input_type(Type::Any)
.output_type(Type::Any)
.category(Category::Custom("database".into())) .category(Category::Custom("database".into()))
} }

View file

@ -17,8 +17,6 @@ impl Command for SchemaDb {
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build(self.name()) Signature::build(self.name())
.input_output_types(vec![(Type::Any, Type::Any)]) .input_output_types(vec![(Type::Any, Type::Any)])
.input_type(Type::Any)
.output_type(Type::Any)
.category(Category::Custom("database".into())) .category(Category::Custom("database".into()))
} }

View file

@ -23,7 +23,7 @@ impl Command for Lines {
fn signature(&self) -> nu_protocol::Signature { fn signature(&self) -> nu_protocol::Signature {
Signature::build("lines") Signature::build("lines")
.input_output_types(vec![(Type::String, Type::List(Box::new(Type::String)))]) .input_output_types(vec![(Type::Any, Type::List(Box::new(Type::String)))])
.switch("skip-empty", "skip empty lines", Some('s')) .switch("skip-empty", "skip empty lines", Some('s'))
.category(Category::Filters) .category(Category::Filters)
} }

View file

@ -31,7 +31,6 @@ impl Command for EncodeBase64 {
SyntaxShape::CellPath, SyntaxShape::CellPath,
"For a data structure input, encode data at the given cell paths", "For a data structure input, encode data at the given cell paths",
) )
.output_type(Type::String)
.category(Category::Hash) .category(Category::Hash)
} }

View file

@ -22,7 +22,6 @@ impl Command for EncodeHex {
SyntaxShape::CellPath, SyntaxShape::CellPath,
"For a data structure input, encode data at the given cell paths", "For a data structure input, encode data at the given cell paths",
) )
.output_type(Type::String)
.category(Category::Formats) .category(Category::Formats)
} }

Some files were not shown because too many files have changed in this diff Show more