From 5631ad962c3ec830de1664ffc2e6877dce04e4d5 Mon Sep 17 00:00:00 2001 From: midichef <67946319+midichef@users.noreply.github.com> Date: Tue, 26 Mar 2024 23:00:50 -0700 Subject: [PATCH 1/2] [sas-] make XptSheet rows be list instead of tuple --- visidata/loaders/sas.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/visidata/loaders/sas.py b/visidata/loaders/sas.py index a5b7cb249..e90e88a9a 100644 --- a/visidata/loaders/sas.py +++ b/visidata/loaders/sas.py @@ -25,7 +25,9 @@ def iterload(self): for i, var in enumerate(self.rdr._variables): self.addColumn(ColumnItem(var.name, i, type=float if var.numeric else str)) - yield from self.rdr + # a visidata row must not be a tuple, so convert each tuple to a list + for t in self.rdr: + yield list(t) class SasSheet(Sheet): From fdb05090ba5a31c9f2ea4024eaae47111833286a Mon Sep 17 00:00:00 2001 From: anjakefala Date: Thu, 23 May 2024 22:43:08 -0700 Subject: [PATCH 2/2] [tests] add load-xpt --- requirements.txt | 2 +- sample_data/brakes.xpt | Bin 0 -> 3120 bytes tests/golden/load-xpt.tsv | 129 ++++++++++++++++++++++++++++++++++++++ tests/load-xpt.vdj | 2 + 4 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 sample_data/brakes.xpt create mode 100644 tests/golden/load-xpt.tsv create mode 100644 tests/load-xpt.vdj diff --git a/requirements.txt b/requirements.txt index 7dee401eb..18e6cb348 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,7 +18,7 @@ mapbox-vector-tile # mbtiles pypng # png fonttools # ttf/otf sas7bdat # sas7bdat (SAS) -xport # xpt (SAS) +xport==2.0.2 # xpt (SAS) PyYAML>=5.1 # yaml/yml dpkt # pcap dnslib # pcap diff --git a/sample_data/brakes.xpt b/sample_data/brakes.xpt new file mode 100644 index 0000000000000000000000000000000000000000..5c80ac1a73ba84a5b9e63f2d0683e55bc320daf9 GIT binary patch literal 3120 zcmd7Uc}!GC7y$4E3b=}Z;S?8USUId%y1TH;QPTG9@)Rly%Yp$~Jh-f+LM;eI6D){e z6pBa1SShAeS`=-Gy*P@{;u@$$37CKiF$N4G!Zv^+<+989eGsg~zxw^LZ+&!2^jLxM+Uod*NA&@10ZAbiHy`F4dgD;_4MjW==rpDwsECI-hrt zOsNP~E-v3pw#n<9bDJzmbB^9jF!R4YKYvEf2ED9a(VRl3K`BRz!{IF9XvrCwkFP&V zmHo_L<3(QRc@B_Hy@PYc7Ww`%##6hMnNlq;*RyuW zCO3B5iIGFizup}OCU<#DT^hl3U1`-F12E|gAtg`2)N*xCYYCVXIPuf3BM;fgWPc&6 zea4%HkgG;3lj@NxFYl-?08=BbZbv?tJRhu9A=Bj&zHBTR+e9uD0gQ zn{}!@Ad`>mTzMi-iJbhV{mnY$)ukEj z7k~4~&tU4S-FM9w`MrbZ?JJN2D^u28Ko*Xwg1<+07d3VIA)Dmq?X_V9oXL=xlG-OG z5wXb4d#W!cf~npU; zb!4gSaCsiGUXRei4Vhn2Rx}PKw{>ezmC2hk19l{)cPp zf8>Fwf#vBjD`fMM6K8Uemj(WrS^y@s4eQI!gQ>pxR_QxnGWc+;FcG<}}pW7LLuU{WjG7Ih4{b&0Va1Zf|~Aj6B2}+j|;JZ3DfAGm#a#(oKF~@}SMI^dy+Nd#jr_BL}6lW?CU@k$b;3 zA@i~B3Kh@Jo z%60&ga+A-P1mrPBlD!v9^}Dn0A4HDihu`r>HZUvrL4j<)T`vper)D|o_FNbz!yAvN z4uh$6cZbRc*+k+n=#Ffe`>gc>GFc^QD+ZIlFTNFCgWR8<7LtM7J1pP-h}kt;zwKtH zFZUzM?tl284cTeLB}f-c`ne&uuYjp&*_K9pf9S|Rc|0^ueSc~(1(V*->sI7ov)1qT zfT{D@Prj)~US1^nARkOrTg0|}Fy(jZn~IS=Ytt_`BI`+86*b6?R=27SFljUOla~5R z@wvziui1w_LhepAEk6RLUcDENI)h2OQhX)^x!>};n{i;uJ)m+d1(QMJs