Skip to content

Commit 047f5ec

Browse files
committed
xz2->liblzma and remove liblzma-sys
1 parent 5072928 commit 047f5ec

File tree

5 files changed

+590
-185
lines changed

5 files changed

+590
-185
lines changed

Cargo.lock

Lines changed: 22 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Lib/test/test_lzma.py

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ def test_decompressor_after_eof(self):
8080
lzd.decompress(COMPRESSED_XZ)
8181
self.assertRaises(EOFError, lzd.decompress, b"nyan")
8282

83-
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: Unexpected keyword argument memlimit
8483
def test_decompressor_memlimit(self):
8584
lzd = LZMADecompressor(memlimit=1024)
8685
self.assertRaises(LZMAError, lzd.decompress, COMPRESSED_XZ)
@@ -101,45 +100,37 @@ def _test_decompressor(self, lzd, data, check, unused_data=b""):
101100
self.assertTrue(lzd.eof)
102101
self.assertEqual(lzd.unused_data, unused_data)
103102

104-
@unittest.expectedFailure # TODO: RUSTPYTHON; AttributeError: 'LZMADecompressor' object has no attribute 'check'
105103
def test_decompressor_auto(self):
106104
lzd = LZMADecompressor()
107105
self._test_decompressor(lzd, COMPRESSED_XZ, lzma.CHECK_CRC64)
108106

109107
lzd = LZMADecompressor()
110108
self._test_decompressor(lzd, COMPRESSED_ALONE, lzma.CHECK_NONE)
111109

112-
@unittest.expectedFailure # TODO: RUSTPYTHON; AttributeError: 'LZMADecompressor' object has no attribute 'check'
113110
def test_decompressor_xz(self):
114111
lzd = LZMADecompressor(lzma.FORMAT_XZ)
115112
self._test_decompressor(lzd, COMPRESSED_XZ, lzma.CHECK_CRC64)
116113

117-
@unittest.expectedFailure # TODO: RUSTPYTHON; AttributeError: 'LZMADecompressor' object has no attribute 'check'
118114
def test_decompressor_alone(self):
119115
lzd = LZMADecompressor(lzma.FORMAT_ALONE)
120116
self._test_decompressor(lzd, COMPRESSED_ALONE, lzma.CHECK_NONE)
121117

122-
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: Expected type 'int' but 'list' found.
123118
def test_decompressor_raw_1(self):
124119
lzd = LZMADecompressor(lzma.FORMAT_RAW, filters=FILTERS_RAW_1)
125120
self._test_decompressor(lzd, COMPRESSED_RAW_1, lzma.CHECK_NONE)
126121

127-
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: Expected type 'int' but 'list' found.
128122
def test_decompressor_raw_2(self):
129123
lzd = LZMADecompressor(lzma.FORMAT_RAW, filters=FILTERS_RAW_2)
130124
self._test_decompressor(lzd, COMPRESSED_RAW_2, lzma.CHECK_NONE)
131125

132-
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: Expected type 'int' but 'list' found.
133126
def test_decompressor_raw_3(self):
134127
lzd = LZMADecompressor(lzma.FORMAT_RAW, filters=FILTERS_RAW_3)
135128
self._test_decompressor(lzd, COMPRESSED_RAW_3, lzma.CHECK_NONE)
136129

137-
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: Expected type 'int' but 'list' found.
138130
def test_decompressor_raw_4(self):
139131
lzd = LZMADecompressor(lzma.FORMAT_RAW, filters=FILTERS_RAW_4)
140132
self._test_decompressor(lzd, COMPRESSED_RAW_4, lzma.CHECK_NONE)
141133

142-
@unittest.expectedFailure # TODO: RUSTPYTHON; AttributeError: 'LZMADecompressor' object has no attribute 'check'
143134
def test_decompressor_chunks(self):
144135
lzd = LZMADecompressor()
145136
out = []
@@ -260,14 +251,12 @@ def test_decompressor_inputbuf_3(self):
260251
out.append(lzd.decompress(COMPRESSED_XZ[300:]))
261252
self.assertEqual(b''.join(out), INPUT)
262253

263-
@unittest.expectedFailure # TODO: RUSTPYTHON; AttributeError: 'LZMADecompressor' object has no attribute 'check'
264254
def test_decompressor_unused_data(self):
265255
lzd = LZMADecompressor()
266256
extra = b"fooblibar"
267257
self._test_decompressor(lzd, COMPRESSED_XZ + extra, lzma.CHECK_CRC64,
268258
unused_data=extra)
269259

270-
@unittest.expectedFailure # TODO: RUSTPYTHON; OSError: stream/file format not recognized
271260
def test_decompressor_bad_input(self):
272261
lzd = LZMADecompressor()
273262
self.assertRaises(LZMAError, lzd.decompress, COMPRESSED_RAW_1)
@@ -290,28 +279,24 @@ def test_decompressor_bug_28275(self):
290279

291280
# Test that LZMACompressor->LZMADecompressor preserves the input data.
292281

293-
@unittest.expectedFailure # TODO: RUSTPYTHON; AttributeError: 'LZMADecompressor' object has no attribute 'check'
294282
def test_roundtrip_xz(self):
295283
lzc = LZMACompressor()
296284
cdata = lzc.compress(INPUT) + lzc.flush()
297285
lzd = LZMADecompressor()
298286
self._test_decompressor(lzd, cdata, lzma.CHECK_CRC64)
299287

300-
@unittest.expectedFailure # TODO: RUSTPYTHON; AttributeError: 'LZMADecompressor' object has no attribute 'check'
301288
def test_roundtrip_alone(self):
302289
lzc = LZMACompressor(lzma.FORMAT_ALONE)
303290
cdata = lzc.compress(INPUT) + lzc.flush()
304291
lzd = LZMADecompressor()
305292
self._test_decompressor(lzd, cdata, lzma.CHECK_NONE)
306293

307-
@unittest.expectedFailure # TODO: RUSTPYTHON; lzma.LZMAError: Invalid format
308294
def test_roundtrip_raw(self):
309295
lzc = LZMACompressor(lzma.FORMAT_RAW, filters=FILTERS_RAW_4)
310296
cdata = lzc.compress(INPUT) + lzc.flush()
311297
lzd = LZMADecompressor(lzma.FORMAT_RAW, filters=FILTERS_RAW_4)
312298
self._test_decompressor(lzd, cdata, lzma.CHECK_NONE)
313299

314-
@unittest.expectedFailure # TODO: RUSTPYTHON; lzma.LZMAError: Invalid format
315300
def test_roundtrip_raw_empty(self):
316301
lzc = LZMACompressor(lzma.FORMAT_RAW, filters=FILTERS_RAW_4)
317302
cdata = lzc.compress(INPUT)
@@ -322,7 +307,6 @@ def test_roundtrip_raw_empty(self):
322307
lzd = LZMADecompressor(lzma.FORMAT_RAW, filters=FILTERS_RAW_4)
323308
self._test_decompressor(lzd, cdata, lzma.CHECK_NONE)
324309

325-
@unittest.expectedFailure # TODO: RUSTPYTHON; AttributeError: 'LZMADecompressor' object has no attribute 'check'
326310
def test_roundtrip_chunks(self):
327311
lzc = LZMACompressor()
328312
cdata = []
@@ -333,7 +317,6 @@ def test_roundtrip_chunks(self):
333317
lzd = LZMADecompressor()
334318
self._test_decompressor(lzd, cdata, lzma.CHECK_CRC64)
335319

336-
@unittest.expectedFailure # TODO: RUSTPYTHON; AttributeError: 'LZMADecompressor' object has no attribute 'check'
337320
def test_roundtrip_empty_chunks(self):
338321
lzc = LZMACompressor()
339322
cdata = []
@@ -349,7 +332,6 @@ def test_roundtrip_empty_chunks(self):
349332

350333
# LZMADecompressor intentionally does not handle concatenated streams.
351334

352-
@unittest.expectedFailure # TODO: RUSTPYTHON; AttributeError: 'LZMADecompressor' object has no attribute 'check'
353335
def test_decompressor_multistream(self):
354336
lzd = LZMADecompressor()
355337
self._test_decompressor(lzd, COMPRESSED_XZ + COMPRESSED_ALONE,
@@ -452,7 +434,6 @@ def test_decompress_memlimit(self):
452434

453435
# Test LZMADecompressor on known-good input data.
454436

455-
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: Expected type 'int' but 'list' found.
456437
def test_decompress_good_input(self):
457438
ddata = lzma.decompress(COMPRESSED_XZ)
458439
self.assertEqual(ddata, INPUT)
@@ -482,7 +463,6 @@ def test_decompress_good_input(self):
482463
COMPRESSED_RAW_4, lzma.FORMAT_RAW, filters=FILTERS_RAW_4)
483464
self.assertEqual(ddata, INPUT)
484465

485-
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: Expected type 'int' but 'list' found.
486466
def test_decompress_incomplete_input(self):
487467
self.assertRaises(LZMAError, lzma.decompress, COMPRESSED_XZ[:128])
488468
self.assertRaises(LZMAError, lzma.decompress, COMPRESSED_ALONE[:128])
@@ -495,7 +475,6 @@ def test_decompress_incomplete_input(self):
495475
self.assertRaises(LZMAError, lzma.decompress, COMPRESSED_RAW_4[:128],
496476
format=lzma.FORMAT_RAW, filters=FILTERS_RAW_4)
497477

498-
@unittest.expectedFailure # TODO: RUSTPYTHON; OSError: stream/file format not recognized
499478
def test_decompress_bad_input(self):
500479
with self.assertRaises(LZMAError):
501480
lzma.decompress(COMPRESSED_BOGUS)
@@ -511,7 +490,6 @@ def test_decompress_bad_input(self):
511490

512491
# Test that compress()->decompress() preserves the input data.
513492

514-
@unittest.expectedFailure # TODO: RUSTPYTHON; lzma.LZMAError: Invalid format
515493
def test_roundtrip(self):
516494
cdata = lzma.compress(INPUT)
517495
ddata = lzma.decompress(cdata)
@@ -836,7 +814,6 @@ def test_writable(self):
836814
f.close()
837815
self.assertRaises(ValueError, f.writable)
838816

839-
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: Expected type 'int' but 'list' found.
840817
def test_read(self):
841818
with LZMAFile(BytesIO(COMPRESSED_XZ)) as f:
842819
self.assertEqual(f.read(), INPUT)
@@ -884,7 +861,6 @@ def test_read_10(self):
884861
chunks.append(result)
885862
self.assertEqual(b"".join(chunks), INPUT)
886863

887-
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: Expected type 'int' but 'list' found.
888864
def test_read_multistream(self):
889865
with LZMAFile(BytesIO(COMPRESSED_XZ * 5)) as f:
890866
self.assertEqual(f.read(), INPUT * 5)
@@ -1071,7 +1047,6 @@ def test_peek_bad_args(self):
10711047
with LZMAFile(BytesIO(), "w") as f:
10721048
self.assertRaises(ValueError, f.peek)
10731049

1074-
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: Expected type 'int' but 'list' found.
10751050
def test_iterator(self):
10761051
with BytesIO(INPUT) as f:
10771052
lines = f.readlines()
@@ -1111,7 +1086,6 @@ def test_decompress_limited(self):
11111086
self.assertLessEqual(decomp._buffer.raw.tell(), max_decomp,
11121087
"Excessive amount of data was decompressed")
11131088

1114-
@unittest.expectedFailure # TODO: RUSTPYTHON; lzma.LZMAError: Invalid format
11151089
def test_write(self):
11161090
with BytesIO() as dst:
11171091
with LZMAFile(dst, "w") as f:
@@ -1491,7 +1465,6 @@ def test_bad_params(self):
14911465
with self.assertRaises(ValueError):
14921466
lzma.open(TESTFN, "rb", newline="\n")
14931467

1494-
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: Expected type 'int' but 'list' found.
14951468
def test_format_and_filters(self):
14961469
# Test non-default format and filter chain.
14971470
options = {"format": lzma.FORMAT_RAW, "filters": FILTERS_RAW_1}
@@ -1604,7 +1577,6 @@ def test__decode_filter_properties(self):
16041577
filterspec = lzma._decode_filter_properties(f, b"")
16051578
self.assertEqual(filterspec, {"id": f})
16061579

1607-
@unittest.expectedFailure # TODO: RUSTPYTHON; TypeError: expected at most 0 arguments, got 1
16081580
def test_filter_properties_roundtrip(self):
16091581
spec1 = lzma._decode_filter_properties(
16101582
lzma.FILTER_LZMA1, b"]\x00\x00\x80\x00")

crates/stdlib/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ pkcs8 = { version = "0.10", features = ["encryption", "pkcs5", "pem"], optional
139139

140140
[target.'cfg(not(any(target_os = "android", target_arch = "wasm32")))'.dependencies]
141141
libsqlite3-sys = { version = "0.36", features = ["bundled"], optional = true }
142-
lzma-sys = "0.1"
143-
xz2 = "0.1"
142+
liblzma = "0.4"
143+
liblzma-sys = "0.4"
144144

145145
[target.'cfg(windows)'.dependencies]
146146
paste = { workspace = true }

crates/stdlib/src/compression.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,10 @@ impl<D: Decompressor> DecompressState<D> {
296296
self.eof
297297
}
298298

299+
pub fn decompressor(&self) -> &D {
300+
&self.decompress
301+
}
302+
299303
pub fn unused_data(&self) -> PyBytesRef {
300304
self.unused_data.clone()
301305
}

0 commit comments

Comments
 (0)