make polars commands propagate metadata

This commit is contained in:
Julian Amarilla 2025-04-25 01:38:20 -03:00
parent 98fb525416
commit bc946f012a
30 changed files with 420 additions and 0 deletions

View File

@ -182,6 +182,20 @@ impl PluginCommand for AsDate {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl AsDate {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -247,6 +247,20 @@ impl PluginCommand for AsDateTime {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl AsDateTime {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -136,6 +136,20 @@ impl PluginCommand for ConvertTimeZone {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl ConvertTimeZone {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;

View File

@ -130,6 +130,20 @@ impl PluginCommand for ExprDatePart {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl ExprDatePart {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let part: Spanned<String> = call.req(0)?;

View File

@ -83,6 +83,20 @@ impl PluginCommand for GetDay {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl GetDay {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -99,6 +99,20 @@ impl PluginCommand for GetHour {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl GetHour {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -83,6 +83,20 @@ impl PluginCommand for GetMinute {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl GetMinute {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -83,6 +83,20 @@ impl PluginCommand for GetMonth {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl GetMonth {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -83,6 +83,20 @@ impl PluginCommand for GetNanosecond {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl GetNanosecond {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -83,6 +83,20 @@ impl PluginCommand for GetOrdinal {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl GetOrdinal {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -83,6 +83,20 @@ impl PluginCommand for GetSecond {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl GetSecond {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -83,6 +83,20 @@ impl PluginCommand for GetWeek {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl GetWeek {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -83,6 +83,20 @@ impl PluginCommand for GetWeekDay {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl GetWeekDay {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -83,6 +83,20 @@ impl PluginCommand for GetYear {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl GetYear {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -215,6 +215,20 @@ impl PluginCommand for ReplaceTimeZone {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl ReplaceTimeZone {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;

View File

@ -93,6 +93,20 @@ impl PluginCommand for StrFTime {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl StrFTime {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;
match PolarsPluginObject::try_from_value(plugin, &value)? {

View File

@ -149,6 +149,20 @@ impl PluginCommand for Truncate {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl Truncate {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
command(plugin, engine, call, input).map_err(LabeledError::from)
}

View File

@ -71,6 +71,20 @@ impl PluginCommand for ToDecimal {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl ToDecimal {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;
match PolarsPluginObject::try_from_value(plugin, &value)? {

View File

@ -65,6 +65,20 @@ impl PluginCommand for ToInteger {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl ToInteger {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;
match PolarsPluginObject::try_from_value(plugin, &value)? {

View File

@ -115,6 +115,20 @@ impl PluginCommand for ListContains {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl ListContains {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;
match PolarsPluginObject::try_from_value(plugin, &value)? {

View File

@ -84,6 +84,20 @@ impl PluginCommand for ExprConcatStr {
plugin: &Self::Plugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl ExprConcatStr {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
_input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let separator: String = call.req(0)?;

View File

@ -99,6 +99,20 @@ impl PluginCommand for Contains {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl Contains {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;
match PolarsPluginObject::try_from_value(plugin, &value)? {

View File

@ -106,6 +106,20 @@ impl PluginCommand for Replace {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl Replace {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;
match PolarsPluginObject::try_from_value(plugin, &value)? {

View File

@ -107,6 +107,20 @@ impl PluginCommand for ReplaceAll {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl ReplaceAll {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;
match PolarsPluginObject::try_from_value(plugin, &value)? {

View File

@ -92,6 +92,20 @@ impl PluginCommand for StrJoin {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl StrJoin {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;
match PolarsPluginObject::try_from_value(plugin, &value)? {

View File

@ -88,6 +88,20 @@ impl PluginCommand for StrLengths {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl StrLengths {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;
match PolarsPluginObject::try_from_value(plugin, &value)? {

View File

@ -58,6 +58,20 @@ impl PluginCommand for StrSplit {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl StrSplit {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let separator = call.req::<Spanned<Value>>(0).and_then(|sep| {
let sep_expr = NuExpression::try_from_value(plugin, &sep.item)?;

View File

@ -132,6 +132,20 @@ impl PluginCommand for StrStripChars {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl StrStripChars {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;
match PolarsPluginObject::try_from_value(plugin, &value)? {

View File

@ -89,6 +89,20 @@ impl PluginCommand for ToLowerCase {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl ToLowerCase {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;
match PolarsPluginObject::try_from_value(plugin, &value)? {

View File

@ -93,6 +93,20 @@ impl PluginCommand for ToUpperCase {
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let metadata = input.metadata();
self.run_inner(plugin, engine, call, input)
.map(|pd| pd.set_metadata(metadata))
}
}
impl ToUpperCase {
fn run_inner(
&self,
plugin: &PolarsPlugin,
engine: &EngineInterface,
call: &EvaluatedCall,
input: PipelineData,
) -> Result<PipelineData, LabeledError> {
let value = input.into_value(call.head)?;
match PolarsPluginObject::try_from_value(plugin, &value)? {