From 0a94708c7c26466cb04e379a5fc2bfdc6e7b4a20 Mon Sep 17 00:00:00 2001 From: Tedy <53588129+TedyonGit@users.noreply.github.com> Date: Fri, 22 May 2026 15:44:45 +0300 Subject: [PATCH 1/2] Checking for python version for the open_binary and files calls --- UnityPy/helpers/Tpk.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/UnityPy/helpers/Tpk.py b/UnityPy/helpers/Tpk.py index 2f2f8965..c614ca02 100644 --- a/UnityPy/helpers/Tpk.py +++ b/UnityPy/helpers/Tpk.py @@ -1,7 +1,6 @@ from __future__ import annotations from enum import IntEnum, IntFlag -from importlib.resources import open_binary from io import BytesIO from struct import Struct from typing import Any, Dict, List, Optional, Tuple, TypeVar @@ -18,8 +17,19 @@ def init(): - with open_binary("UnityPy.resources", "lzma.tpk") as f: - data = f.read() + try: + from importlib.resources import files + + def open_resource(package, resource): + return files(package).joinpath(resource).open("rb").read() + + except ImportError: + from importlib.resources import open_binary + + def open_resource(package, resource): + return open_binary(package, resource).read() + + data = open_resource("UnityPy.resources", "lzma.tpk") global TPKTYPETREE with BytesIO(data) as stream: From a5e5b6288df5aa4b5288ac992a50c88bec5a6cbb Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 9 Jul 2026 09:57:59 +0200 Subject: [PATCH 2/2] chore(tpk.py): use if/else instead of try/except, unwrap function --- UnityPy/helpers/Tpk.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/UnityPy/helpers/Tpk.py b/UnityPy/helpers/Tpk.py index c614ca02..5f9ae770 100644 --- a/UnityPy/helpers/Tpk.py +++ b/UnityPy/helpers/Tpk.py @@ -1,5 +1,6 @@ from __future__ import annotations +import sys from enum import IntEnum, IntFlag from io import BytesIO from struct import Struct @@ -17,22 +18,22 @@ def init(): - try: + package = "UnityPy.resources" + resource = "lzma.tpk" + + tpk_data: bytes + if sys.version_info >= (3, 9): from importlib.resources import files - def open_resource(package, resource): - return files(package).joinpath(resource).open("rb").read() - - except ImportError: + tpk_data = files(package).joinpath(resource).read_bytes() + + else: from importlib.resources import open_binary - def open_resource(package, resource): - return open_binary(package, resource).read() - - data = open_resource("UnityPy.resources", "lzma.tpk") + tpk_data = open_binary(package, resource).read() global TPKTYPETREE - with BytesIO(data) as stream: + with BytesIO(tpk_data) as stream: blob = TpkFile(stream).GetDataBlob() assert isinstance(blob, TpkTypeTreeBlob) TPKTYPETREE = blob