From 351b931c372ddcd47745f9c5e5ae298d99340a97 Mon Sep 17 00:00:00 2001 From: m1stadev Date: Sun, 21 Apr 2024 20:59:53 -0500 Subject: [PATCH] parser: add FORCE_LZFSE flag for anyone who'd prefer to use the `lzfse` library over `apple-compress` (which is not recommended) --- pyimg4/parser.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/pyimg4/parser.py b/pyimg4/parser.py index 39a782b..2edb0a0 100644 --- a/pyimg4/parser.py +++ b/pyimg4/parser.py @@ -1,3 +1,4 @@ +from os import getenv from sys import platform from typing import Any, List, Optional, Tuple, Union from zlib import adler32 @@ -9,7 +10,18 @@ from .errors import CompressionError, UnexpectedDataError, UnexpectedTagError from .types import Compression, KeybagType, Payload -if platform == 'darwin': +FORCE_LZFSE = getenv('PYIMG4_FORCE_LZFSE', None) is not None + +if platform != 'darwin' or FORCE_LZFSE is True: + import lzfse + + def _lzfse_compress(data: bytes) -> bytes: + return lzfse.compress(data) + + def _lzfse_decompress(data: bytes, _: Optional[int] = None) -> bytes: + return lzfse.decompress(data) + +else: import apple_compress def _lzfse_compress(data: bytes) -> bytes: @@ -24,15 +36,6 @@ def _lzfse_decompress(data: bytes, decmp_size: Optional[int] = None) -> bytes: decmp_size=decmp_size, ) -else: - import lzfse - - def _lzfse_compress(data: bytes) -> bytes: - return lzfse.compress(data) - - def _lzfse_decompress(data: bytes, _: Optional[int] = None) -> bytes: - return lzfse.decompress(data) - class _PyIMG4: def __init__(self, data: Optional[bytes] = None) -> None: