1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
[]
= "datui-lib"
= "0.4.4"
= "2024"
= "1.95"
= "Data Exploration in the Terminal (library)"
= ["Derek Wisong"]
= "https://derekwisong.github.io/datui"
= "https://github.com/derekwisong/datui"
= "MIT"
= "README.md"
= ["cli", "tui", "data", "utility", "analysis"]
= ["command-line-utilities", "science"]
[]
= "src/lib.rs"
[]
= ["cloud", "http", "sql", "sqlite", "streaming"]
= ["polars/aws", "polars/azure", "polars/gcp", "dep:object_store", "dep:quick-xml", "dep:ureq", "dep:http", "dep:futures"]
= ["dep:ureq"]
= ["polars/sql", "dep:polars-sql", "dep:sqlparser"]
= ["dep:rusqlite"]
= ["polars/streaming"]
[]
= { = "../datui-cli", = "0.4.4" }
= { = "4.5.54", = ["derive"] }
= "0.6.5"
# `event-stream`: the run loop's one terminal reader (app/terminal_input.rs) has to be
# wakeable to stop. `futures-core` names its Stream trait; both already in the tree.
= { = "0.29.0", = ["event-stream"] }
= "0.3"
= "7.0"
= "0.4"
= "0.4"
= { = "0.30.0", = ["all-widgets"] }
# Cutting a cell by grapheme (exact::cell_prefix); already in the tree through ratatui.
= "1.13"
= "0.2"
= "1.10"
= "0.4"
= { = "1.0", = ["derive"] }
= { = "1.0", = ["preserve_order"] }
= "3.0"
= "1.1"
# A documentation link is parsed before the browser sees it (app/link_open.rs).
= "2.5.8"
= "0.6"
# static: liblzma compiled in, so a release binary needs no liblzma.so.5 on the
# host; bzip2, flate2 and zstd already build their C code in.
= { = "0.1", = ["static"] }
= "1.0"
= "0.14"
# Chart export: the chart is drawn once as SVG and read with the bundled font
# (usvg, which sets text with harfrust and skrifa), then written out as SVG,
# rasterized for PNG (resvg), or written as PDF from the same outlines
# (chart/chart_pdf.rs). Pure Rust, so no system font library is needed at run time.
= { = "0.48.1", = false, = ["text", "system-fonts"] }
= { = "0.36", = ["chrono"] }
= "0.9"
= "59"
= "3.14"
= { = "3.4", = true }
= { = "0.13.1", = true, = false, = ["aws", "azure", "gcp"] }
# S3 ListBuckets answers in XML, from an endpoint the user pointed datui at and does
# not necessarily control. 0.41 is the first release past the two denial-of-service
# advisories against the 0.38 line, and it is already in the tree behind calamine.
= { = "0.42", = true }
# The request type object_store's SigV4 authorizer signs. Pulled in directly rather
# than reached through object_store, whose own re-export is of an internal module of
# the same name, not of this crate.
= { = "1", = true }
# Already in the tree through object_store; used for its stream helpers.
= { = "0.3", = true }
= { = "1", = ["rt-multi-thread", "rt", "io-util", "sync", "time"] }
# The system clipboard for the copy dialog. `wayland-data-control` is not
# negotiable: without it arboard writes the XWayland clipboard, which
# Wayland-native pastes never see. Default features off to leave the
# image-data flavor (and the image crate) out.
= { = "3", = false, = ["wayland-data-control"] }
# OSC 52 payloads; already in the tree transitively.
= "0.23"
= { = "0.55", = true }
# The parser polars-sql uses, at its version: reads a GROUP BY statement to drill into.
= { = "0.62", = true, = ["visitor"] }
= "0.4.33"
# Fixed-record binary files and audio samples are read through a memory map, a
# window at a time. Already in the tree through polars-io.
= "0.9"
# Binary format specs: half floats, record checksums, finding sync words, and the
# codecs of compressed blocks. Each is already in the tree through Polars or Arrow.
= "2.7"
= "2.1"
= "2.8"
= "1.28"
= "1.1"
= { = "8.0", = false, = ["std"] }
# SQLite databases, read only. `bundled` compiles SQLite into the binary, so no
# platform needs a system library; `hooks` lets a stopped open interrupt a statement.
# Default features off, which leaves extension loading out.
= { = "0.40", = true, = false, = ["bundled", "hooks"] }
# NumPy archives (.npz) are zip files. Already in the tree through calamine, with
# the same features.
= { = "8.6", = false, = ["deflate"] }
# ELF symbol and section tables, and Rust symbol names demangled. Both already in
# the tree through backtrace, at these versions and with ELF reading on.
= { = "0.37.3", = false, = ["read_core", "elf", "unaligned"] }
= "0.1.24"
# The log facade, for the log file. Already in the tree through Polars and ureq.
= "0.4"
# Where `polars_warn!` goes (`set_warning_function`); Polars' own error crate.
= "0.55"
# The bytes a scan reads in place (`ScanSources::Buffers`): a NUL-padded file up to
# its text. Already in the tree through Polars.
= "0.55"
# The memory available now, which a sample's size is checked against. Already in the
# tree through Polars, with the same features.
= { = "0.39", = false, = ["system"] }
= { = "0.25.15", = false, = ["parse", "display"] }
# Pointing fd 2 at the log while the TUI owns the terminal. Already in the tree.
[]
= "0.2"
# SIGTERM and SIGHUP end a session as a quit does. signal-hook-registry, which this
# turns on, is already in the tree through crossterm.
= { = "1", = ["signal"] }
# The file type of standard input, to tell `NUL` from a pipe, and the standard
# handles, for the tee. Already in the tree.
[]
= { = "0.61", = ["Win32_Foundation", "Win32_Storage_FileSystem", "Win32_System_Console"] }
# Closing the console window, logging off and shutting down end a session as a quit
# does. Tokio's console control handler, on the windows-sys above.
= { = "1", = ["signal"] }
[]
= "0.55"
= false
= [
"avro",
"csv",
"decompress",
# Not optional despite looking it: render/home_view.rs matches on
# `DataType::Decimal` unconditionally. It used to arrive only as a transitive
# dependency of `polars/sql`, so every build without the `sql` feature failed to
# compile.
"dtype-decimal",
# The same for `DataType::Array`, which formats/schema_union.rs matches on; it arrived
# only through `polars/streaming` or `polars/sql`.
"dtype-array",
# Decimal's values are 128-bit, and grouping by them (value counts, a bar
# chart's categories, `by`) hashes them as unsigned 128-bit: without this
# Polars panics.
"dtype-u128",
"dtype-datetime",
"dtype-time",
"dtype-duration",
# One- and two-byte integers: fixed-record binary files carry them, and Parquet,
# Arrow and Avro files too. Without these Polars has no supertype or cast for
# them, so `u8 + 7` or Int64 / UInt8 failed in a query (#625).
"dtype-i8",
"dtype-i16",
"dtype-u8",
"dtype-u16",
"ipc",
# Key-like columns drill in to the rows whose value is not the only one of its
# kind, which is `is_duplicated` and nothing else expresses in one pass.
"is_unique",
"json",
"lazy",
# `Expr::meta()`, which a drill uses to read a key's column; it arrived only
# through `polars/sql`.
"meta",
"parquet",
"polars-io",
"pivot",
"temporal",
"timezones",
"month_start",
"month_end",
"coalesce",
"regex",
"abs",
"round_series",
# log and exp in the q query language.
"log",
"strings",
]
# "sql" enabled via optional feature sql = ["polars/sql", "dep:polars-sql", "dep:sqlparser"]
[]
= "0.55"
= false
# Polars' JSON writer, for list and struct cells written into a CSV or a copy:
# the same text NDJSON export produces, without a lazy round trip per copy.
[]
= "0.55"
= false
# Polars' Avro schema and serializers, already in the tree through polars/avro:
# its `AvroWriter` cannot name fields apart from the columns or keep a doc.
# `io_ipc`, in the tree through polars/ipc: the IPC reader and writer behind the
# files Arrow streams and GPS logs are converted to.
[]
= "0.55"
= false
= ["io_avro", "io_ipc"]
[]
= "3.8"
# The fixture stamp's digest (tests/shared.rs). Polars already builds it.
= "0.11"
= "0.8"
# A terminal screen model: app/draw.rs checks a scroll moved by the terminal leaves
# the screen a full redraw would. Nothing in the tree parses escapes into a screen.
= "0.16"
[[]]
= "numfmt"
= false