nushell/crates
pyz4 470d130289
polars cast: add decimal option for dtype parameter (#15464)
<!--
if this PR closes one or more issues, you can automatically link the PR
with
them by using one of the [*linking
keywords*](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword),
e.g.
- this PR should close #xxxx
- fixes #xxxx

you can also mention related issues, PRs or discussions!
-->

# Description
This PR expands the `dtype` parameter of the `polars cast` command to
include `decimal<precision, scale>` type. Setting precision to "*" will
compel inferring the value. Note, however, setting scale to a
non-integer value will throw an explicit error (the underlying polars
crate assigns scale = 0 in such a case, but I opted for throwing an
error instead). .

```
$ [[a b]; [1 2] [3 4]] | polars into-df | polars cast decimal<4,2> a | polars schema
╭───┬──────────────╮
│ a │ decimal<4,2> │
│ b │ i64          │
╰───┴──────────────╯

$ [[a b]; [10.5 2] [3.1 4]] | polars into-df | polars cast decimal<*,2> a | polars schema
╭───┬──────────────╮
│ a │ decimal<*,2> │
│ b │ i64          │
╰───┴──────────────╯

$ [[a b]; [10.05 2] [3.1 4]] | polars into-df | polars cast decimal<5,*> a | polars schema
rror:   × Invalid polars data type
   ╭─[entry #25:1:47]
 1 │ [[a b]; [10.05 2] [3.1 4]] | polars into-df | polars cast decimal<5,*> a | polars schema
   ·                                               ─────┬─────
   ·                                                    ╰── `*` is not a permitted value for scale
   ╰────
```

# User-Facing Changes
<!-- List of all changes that impact the user experience here. This
helps us keep track of breaking changes. -->
There are no breaking changes. The user has the additional option to
`polars cast` to a decimal type

# Tests + Formatting
Tests have been added to
`nu_plugin_polars/src/dataframe/values/nu_schema.rs`
2025-04-01 16:22:05 -07:00
..
nu_plugin_custom_values Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_example Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_formats Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_gstat Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_inc Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_nu_example Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_polars polars cast: add decimal option for dtype parameter (#15464) 2025-04-01 16:22:05 -07:00
nu_plugin_python Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_query Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu_plugin_stress_internals Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-cli feat(completion): stdlib virtual path completion & exportable completion (#15270) 2025-04-01 07:13:07 -05:00
nu-cmd-base Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-cmd-extra Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-cmd-lang remove -s, -p in do (#15456) 2025-04-01 07:17:05 -05:00
nu-cmd-plugin Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-color-config Rename user-facing 'date' to 'datetime' (#15264) 2025-03-21 13:36:21 -04:00
nu-command update human-date-parser to 3.0 (#15426) 2025-04-01 07:18:11 -05:00
nu-derive-value Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-engine reset argument/redirection state after eval_call errors (#15400) 2025-03-26 19:41:16 -04:00
nu-explore fix(explore): do not create extra layer for empty entries (#15367) 2025-03-20 06:53:06 -05:00
nu-glob Remove nu-glob's dependency on nu-protocol (#15349) 2025-03-20 17:32:41 +01:00
nu-json Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-lsp feat(completion): stdlib virtual path completion & exportable completion (#15270) 2025-04-01 07:13:07 -05:00
nu-parser fix(parser): skip eval_const if parsing errors detected to avoid panic (#15364) 2025-03-26 15:02:26 +01:00
nu-path Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-plugin Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-plugin-core Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-plugin-engine Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-plugin-protocol Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-plugin-test-support Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-pretty-hex Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-protocol refactor: ensure range is bounded (#15429) 2025-03-27 14:25:55 +01:00
nu-std Fixes clip copy stripping control characters when de-ansifying (#15428) 2025-03-28 19:15:17 -04:00
nu-system add more columns to macos ps -l (#15341) 2025-03-20 09:53:19 -05:00
nu-table Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-term-grid Bump to 0.103.1 dev version (#15347) 2025-03-19 00:12:01 -04:00
nu-test-support Remove nu-glob's dependency on nu-protocol (#15349) 2025-03-20 17:32:41 +01:00
nu-utils Fix typo in doc_config.nu + small description (#15461) 2025-03-31 21:38:50 +02:00
nuon Fix to nuon --serialize of closure (#15357) 2025-03-20 17:50:36 +01:00
README.md Remove old nushell/merge engine-q 2022-02-07 14:54:06 -05:00

Nushell core libraries and plugins

These sub-crates form both the foundation for Nu and a set of plugins which extend Nu with additional functionality.

Foundational libraries are split into two kinds of crates:

  • Core crates - those crates that work together to build the Nushell language engine
  • Support crates - a set of crates that support the engine with additional features like JSON support, ANSI support, and more.

Plugins are likewise also split into two types:

  • Core plugins - plugins that provide part of the default experience of Nu, including access to the system properties, processes, and web-connectivity features.
  • Extra plugins - these plugins run a wide range of different capabilities like working with different file types, charting, viewing binary data, and more.