Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 33 additions & 9 deletions polyfile/kaitai/compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,21 @@ def __str__(self):
return f"{self.ksy_file}: {super().__str__()}"


def _fix_pkg_resources_import(python_path: Path) -> None:
"""Replace deprecated pkg_resources import with packaging.version.

Kaitai Struct Compiler v0.9 generates code that imports parse_version from
pkg_resources, which is deprecated and unavailable on Python 3.12+.
"""
content = python_path.read_text()
if "from pkg_resources import parse_version" in content:
content = content.replace(
"from pkg_resources import parse_version",
"from packaging.version import parse as parse_version"
)
python_path.write_text(content)


class CompiledKSY:
def __init__(self, class_name: str, python_path: Union[str, Path], dependencies: Iterable["CompiledKSY"] = ()):
self.class_name: str = class_name
Expand Down Expand Up @@ -117,17 +132,26 @@ def compile(ksy_path: Union[str, Path], output_directory: Union[str, Path], auto
if "errors" in first_spec:
for error in first_spec["errors"]:
raise CompilationError(ksy_file=error["file"], message=error["message"])

main_python_path = output_directory / first_spec["files"][0]["fileName"]
dependencies = [
CompiledKSY(
class_name=compiled["topLevelName"],
python_path=output_directory / compiled["files"][0]["fileName"]
)
for spec_name, compiled in result[ksy_path]["output"]["python"].items()
if spec_name != first_spec_name
]

# Fix deprecated pkg_resources import in all generated files
_fix_pkg_resources_import(main_python_path)
for dep in dependencies:
_fix_pkg_resources_import(dep.python_path)

return CompiledKSY(
class_name=first_spec["topLevelName"],
python_path=output_directory / first_spec["files"][0]["fileName"],
dependencies=(
CompiledKSY(
class_name=compiled["topLevelName"],
python_path=output_directory / compiled["files"][0]["fileName"]
)
for spec_name, compiled in result[ksy_path]["output"]["python"].items()
if spec_name != first_spec_name
)
python_path=main_python_path,
dependencies=dependencies
)


Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/aix_utmp.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/allegro_dat.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/andes_firmware.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/android_bootldr_asus.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/android_bootldr_huawei.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/android_bootldr_qcom.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/android_dto.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/android_img.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/android_nanoapp_header.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/android_opengl_shaders_cache.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/android_sparse.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/android_super.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/apm_partition_table.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/apple_single_double.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/asn1_der.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/au.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/avantes_roh60.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/avi.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/bcd.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/bitcoin_transaction.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/blender_blend.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/bmp.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/broadcom_trx.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/bson.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/btrfs_stream.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/bytes_with_io.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/chrome_pak.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/code_6502.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/compressed_resource.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/cpio_old_le.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/cramfs.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/creative_voice_file.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/dbf.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/dcmp_0.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/dcmp_1.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/dcmp_2.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/dcmp_variable_length_integer.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/dex.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/dicom.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/dime_message.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/dns_packet.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
Expand Down
2 changes: 1 addition & 1 deletion polyfile/kaitai/parsers/doom_wad.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

from pkg_resources import parse_version
from packaging.version import parse as parse_version
import kaitaistruct
from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
import collections
Expand Down
Loading