Skip to content

Commit e07dded

Browse files
committed
Merge remote-tracking branch 'origin/develop' into ji/all-around-cdtx
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
2 parents 3fc06ec + f747201 commit e07dded

20 files changed

Lines changed: 133 additions & 158 deletions

File tree

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Release Binaries
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
permissions:
8+
contents: write
9+
10+
jobs:
11+
build:
12+
name: Build ${{ matrix.target }}
13+
runs-on: ${{ matrix.runs-on }}
14+
timeout-minutes: 120
15+
strategy:
16+
fail-fast: false
17+
matrix:
18+
include:
19+
- target: aarch64-apple-darwin
20+
runs-on: macos-latest
21+
archive: tgz
22+
- target: x86_64-apple-darwin
23+
runs-on: macos-15-intel
24+
archive: tgz
25+
- target: aarch64-unknown-linux-gnu
26+
runs-on: ubuntu-24.04-arm
27+
archive: tgz
28+
- target: x86_64-unknown-linux-gnu
29+
runs-on: ubuntu-24.04
30+
archive: tgz
31+
steps:
32+
- uses: actions/checkout@v6
33+
with:
34+
fetch-depth: 0
35+
36+
- uses: ./.github/actions/setup-rust
37+
with:
38+
repo-token: ${{ secrets.GITHUB_TOKEN }}
39+
targets: ${{ matrix.target }}
40+
enable-sccache: "false"
41+
42+
- name: Build release binary
43+
run: cargo build --release --package vortex-tui --bin vx --target ${{ matrix.target }}
44+
45+
- name: Create archive (tgz)
46+
if: matrix.archive == 'tgz'
47+
run: |
48+
cd target/${{ matrix.target }}/release
49+
tar -czvf ../../../vx-${{ matrix.target }}.tar.gz vx
50+
51+
- name: Create archive (zip)
52+
if: matrix.archive == 'zip'
53+
run: |
54+
cd target/${{ matrix.target }}/release
55+
zip ../../../vx-${{ matrix.target }}.zip vx.exe
56+
57+
- name: Upload release asset
58+
run: gh release upload "${{ github.event.release.tag_name }}" vx-${{ matrix.target }}.${{ matrix.archive == 'tgz' && 'tar.gz' || 'zip' }}
59+
env:
60+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,14 @@ uv add vortex-data
8686
For browsing the structure of Vortex files, you can use the `vx` command-line tool.
8787

8888
```bash
89-
# Install latest release
90-
cargo install vortex-tui --locked
89+
# Install pre-built binary (fast, recommended)
90+
cargo binstall vortex-tui
9191

9292
# Or build from source
93-
cargo install --path vortex-tui --locked
93+
cargo install vortex-tui --locked
94+
95+
# Or run via Python without installing
96+
uvx --from vortex-data vx --help
9497

9598
# Usage
9699
vx browse <file>

docs/getting-started/install.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,32 @@ the terminal.
77

88
::::{tab-set}
99

10+
:::{tab-item} Binstall (recommended)
11+
```bash
12+
cargo binstall vortex-tui
13+
```
14+
Downloads a pre-built binary. Requires [cargo-binstall](https://github.com/cargo-bins/cargo-binstall).
15+
:::
16+
1017
:::{tab-item} pip
1118
```bash
1219
pip install vortex-data
1320
```
1421
This also installs the Python library. See the [Python quickstart](python.rst) for library usage.
1522
:::
1623

24+
:::{tab-item} uvx
25+
```bash
26+
uvx --from vortex-data vx --help
27+
```
28+
Runs the CLI without installing. Requires [uv](https://docs.astral.sh/uv/).
29+
:::
30+
1731
:::{tab-item} Cargo
1832
```bash
1933
cargo install vortex-tui
2034
```
35+
Builds from source. This can be slow due to the large dependency tree.
2136
:::
2237

2338
::::

encodings/alp/src/alp/plugin.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ mod tests {
134134

135135
let array = alp_encoded.as_array();
136136

137-
let metadata = array.metadata(&SESSION)?.unwrap_or_default();
137+
let metadata = SESSION.array_serialize(array)?.unwrap();
138138
let children = array.children();
139139
let buffers = array
140140
.buffers()
@@ -183,7 +183,7 @@ mod tests {
183183

184184
let array = alp_encoded.as_array();
185185

186-
let metadata = array.metadata(&SESSION)?.unwrap_or_default();
186+
let metadata = SESSION.array_serialize(array)?.unwrap();
187187
let children = array.children();
188188
let buffers = array
189189
.buffers()
@@ -214,7 +214,7 @@ mod tests {
214214
fn primitive_array_returns_error() {
215215
let array = PrimitiveArray::from_iter([1.0f64, 2.0, 3.0]).into_array();
216216

217-
let metadata = array.metadata(&SESSION).unwrap().unwrap_or_default();
217+
let metadata = SESSION.array_serialize(&array).unwrap().unwrap();
218218
let children = array.children();
219219
let buffers = array
220220
.buffers()

encodings/bytebool/src/array.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,6 @@ impl From<Vec<Option<bool>>> for ByteBoolData {
347347
mod tests {
348348
use vortex_array::ArrayContext;
349349
use vortex_array::IntoArray;
350-
use vortex_array::LEGACY_SESSION;
351350
use vortex_array::assert_arrays_eq;
352351
use vortex_array::serde::SerializeOptions;
353352
use vortex_array::serde::SerializedArray;
@@ -402,7 +401,7 @@ mod tests {
402401
let serialized = array
403402
.clone()
404403
.into_array()
405-
.serialize(&ctx, &LEGACY_SESSION, &SerializeOptions::default())
404+
.serialize(&ctx, &session, &SerializeOptions::default())
406405
.unwrap();
407406

408407
let mut concat = ByteBufferMut::empty();

encodings/fastlanes/src/bitpacking/plugin.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ mod tests {
133133

134134
let array = bitpacked.as_array();
135135

136-
let metadata = array.metadata(&SESSION)?.unwrap_or_default();
136+
let metadata = SESSION.array_serialize(array)?.unwrap();
137137
let children = array.children();
138138
let buffers = array
139139
.buffers()
@@ -182,7 +182,7 @@ mod tests {
182182

183183
let array = bitpacked.as_array();
184184

185-
let metadata = array.metadata(&SESSION)?.unwrap_or_default();
185+
let metadata = SESSION.array_serialize(array)?.unwrap();
186186
let children = array.children();
187187
let buffers = array
188188
.buffers()
@@ -212,7 +212,7 @@ mod tests {
212212
fn primitive_array_returns_error() -> VortexResult<()> {
213213
let array = PrimitiveArray::from_iter([1i32, 2, 3]).into_array();
214214

215-
let metadata = array.metadata(&SESSION)?.unwrap_or_default();
215+
let metadata = SESSION.array_serialize(&array)?.unwrap();
216216
let children = array.children();
217217
let buffers = array
218218
.buffers()

encodings/parquet-variant/src/vtable.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,13 +244,13 @@ mod tests {
244244
use vortex_array::IntoArray;
245245
use vortex_array::Precision;
246246
use vortex_array::arrays::VarBinViewArray;
247-
use vortex_array::arrays::Variant;
248247
use vortex_array::arrays::VariantArray;
249248
use vortex_array::dtype::DType;
250249
use vortex_array::dtype::Nullability;
251250
use vortex_array::dtype::PType;
252251
use vortex_array::serde::SerializeOptions;
253252
use vortex_array::serde::SerializedArray;
253+
use vortex_array::session::ArraySession;
254254
use vortex_array::session::ArraySessionExt;
255255
use vortex_array::validity::Validity;
256256
use vortex_buffer::BitBuffer;
@@ -261,11 +261,14 @@ mod tests {
261261

262262
use crate::ParquetVariant;
263263
use crate::array::ParquetVariantArrayExt;
264+
264265
fn roundtrip(array: ArrayRef) -> ArrayRef {
265266
let dtype = array.dtype().clone();
266267
let len = array.len();
267268

268-
let session = VortexSession::empty().with::<vortex_array::session::ArraySession>();
269+
let session = VortexSession::empty().with::<ArraySession>();
270+
session.arrays().register(ParquetVariant);
271+
269272
let ctx = ArrayContext::empty();
270273
let serialized = array
271274
.serialize(&ctx, &session, &SerializeOptions::default())
@@ -276,8 +279,6 @@ mod tests {
276279
concat.extend_from_slice(buf.as_ref());
277280
}
278281
let concat = concat.freeze();
279-
session.arrays().register(ParquetVariant);
280-
session.arrays().register(Variant);
281282

282283
let parts = SerializedArray::try_from(concat).unwrap();
283284
parts

encodings/pco/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ mod array;
55
mod compute;
66
mod rules;
77
mod slice;
8-
#[cfg(test)]
9-
mod test;
108

119
pub use array::*;
1210

@@ -35,3 +33,6 @@ pub struct PcoMetadata {
3533
#[prost(message, repeated, tag = "2")]
3634
pub chunks: Vec<PcoChunkInfo>,
3735
}
36+
37+
#[cfg(test)]
38+
mod tests;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ fn test_serde() -> VortexResult<()> {
193193
let bytes = pco
194194
.serialize(
195195
&context,
196-
&LEGACY_SESSION,
196+
&SESSION,
197197
&SerializeOptions {
198198
offset: 0,
199199
include_padding: true,

encodings/runend/src/arrow.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ mod tests {
9090
use vortex_array::search_sorted::SearchSorted;
9191
use vortex_array::search_sorted::SearchSortedSide;
9292
use vortex_array::session::ArraySession;
93+
use vortex_array::session::ArraySessionExt;
9394
use vortex_array::validity::Validity;
9495
use vortex_buffer::Buffer;
9596
use vortex_buffer::buffer;
@@ -99,8 +100,11 @@ mod tests {
99100
use crate::RunEnd;
100101
use crate::ops::find_slice_end_index;
101102

102-
static SESSION: LazyLock<VortexSession> =
103-
LazyLock::new(|| VortexSession::empty().with::<ArraySession>());
103+
static SESSION: LazyLock<VortexSession> = LazyLock::new(|| {
104+
let session = VortexSession::empty().with::<ArraySession>();
105+
session.arrays().register(RunEnd);
106+
session
107+
});
104108

105109
fn decode_run_array<R: RunEndIndexType>(
106110
array: &RunArray<R>,

0 commit comments

Comments
 (0)