dissect.cstruct 5.0.dev10__tar.gz → 5.0.dev11__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/CHANGELOG.md +11 -3
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/PKG-INFO +1 -1
- dissect_cstruct-5.0.dev11/dissect/cstruct/compiler.py +886 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/cstruct.py +19 -4
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/expression.py +139 -40
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/parser.py +2 -2
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/types/base.py +88 -30
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/types/char.py +4 -1
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/types/enum.py +20 -7
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/types/flag.py +40 -7
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/types/int.py +21 -2
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/types/packed.py +32 -3
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/types/structure.py +53 -34
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/types/wchar.py +5 -2
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect.cstruct.egg-info/PKG-INFO +1 -1
- dissect_cstruct-5.0.dev11/dissect.cstruct.egg-info/scm_version.json +8 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_align.py +41 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_bitfield.py +64 -4
- dissect_cstruct-5.0.dev11/tests/test_compiler.py +684 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_expression.py +115 -1
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_base.py +132 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_char.py +16 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_enum.py +22 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_flag.py +46 -1
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_int.py +7 -3
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_packed.py +38 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_structure.py +64 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_union.py +234 -27
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_wchar.py +34 -0
- dissect_cstruct-5.0.dev11/tests/utils.py +52 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tox.ini +1 -3
- dissect_cstruct-5.0.dev10/dissect/cstruct/compiler.py +0 -424
- dissect_cstruct-5.0.dev10/dissect.cstruct.egg-info/scm_version.json +0 -8
- dissect_cstruct-5.0.dev10/tests/test_compiler.py +0 -381
- dissect_cstruct-5.0.dev10/tests/utils.py +0 -15
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/.git-blame-ignore-revs +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/.gitattributes +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/COPYRIGHT +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/LICENSE +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/MANIFEST.in +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/README.md +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/__init__.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/bitbuffer.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/exception.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/lexer.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/tools/__init__.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/tools/stubgen.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/types/__init__.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/types/leb128.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/types/pointer.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/types/void.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect/cstruct/util.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect.cstruct.egg-info/SOURCES.txt +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect.cstruct.egg-info/dependency_links.txt +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect.cstruct.egg-info/entry_points.txt +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect.cstruct.egg-info/requires.txt +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect.cstruct.egg-info/scm_file_list.json +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/dissect.cstruct.egg-info/top_level.txt +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/examples/disk.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/examples/mirai.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/examples/pe.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/examples/protobuf.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/examples/secdesc.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/pyproject.toml +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/setup.cfg +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/__init__.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/_data/testdef.txt +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/_docs/Makefile +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/_docs/__init__.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/_docs/conf.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/_docs/index.rst +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/conftest.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_annotations.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_basic.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_benchmark.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_bitbuffer.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_ctypes.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_lexer.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_parser.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_tools_stubgen.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_custom.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_leb128.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_pointer.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_types_void.py +0 -0
- {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev11}/tests/test_utils.py +0 -0
|
@@ -12,10 +12,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
12
12
|
- Rename `_sizes` property of `Structure` to `__sizes__`.
|
|
13
13
|
- Rename `_values` property of `Structure` to `__values__`.
|
|
14
14
|
- Added `load` argument to `cstruct` class, allowing direct initialization with a definition (i.e. `cstruct(cdef)` instead of `cstruct().load(cdef)`. Other arguments to `cstruct` are now keyword only.
|
|
15
|
+
- Replace `compiler.compile` and the `Compiler` class with `compiler.compile_structure`.
|
|
16
|
+
- Improve parsing performance:
|
|
17
|
+
- Compiled structures construct objects directly and inline static nested structures, unions and bit fields.
|
|
18
|
+
- Static unions are compiled too.
|
|
19
|
+
- Structures are compiled on first use, which makes loading definitions faster.
|
|
20
|
+
- Array types are cached, so `cs.uint32[count]` no longer creates a new class on every call.
|
|
21
|
+
- Compiled structures calculate the sizes of dynamic arrays directly, instead of evaluating the expression.
|
|
22
|
+
- Faster paths for parsing primitive types from bytes-like objects, enum and flag lookups and flag operators.
|
|
23
|
+
- Null-terminated strings are read in chunks from seekable streams.
|
|
15
24
|
|
|
16
25
|
## [4.5] - 20-05-2025
|
|
17
26
|
|
|
18
|
-
### Added
|
|
27
|
+
### Added
|
|
19
28
|
|
|
20
29
|
- Introduce experimental tool `cstruct-stubgen` to generate type stubs for cstruct definitions.
|
|
21
30
|
|
|
@@ -44,11 +53,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
44
53
|
|
|
45
54
|
### Fixed
|
|
46
55
|
|
|
47
|
-
- The string representation of enums now outputs the name of the constants.
|
|
56
|
+
- The string representation of enums now outputs the name of the constants.
|
|
48
57
|
|
|
49
58
|
## [4.1] - 10-09-2024
|
|
50
59
|
|
|
51
60
|
### Fixed
|
|
52
61
|
|
|
53
62
|
- Declaring an array of a nested struct type now works as intended.
|
|
54
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dissect.cstruct
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.dev11
|
|
4
4
|
Summary: A Dissect module implementing a parser for C-like structures: structure parsing in Python made easy
|
|
5
5
|
Author-email: Dissect Team <dissect@fox-it.com>
|
|
6
6
|
License-Expression: Apache-2.0
|