dissect.cstruct 5.0.dev10__tar.gz → 5.0.dev12__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.
Files changed (85) hide show
  1. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/CHANGELOG.md +11 -3
  2. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/PKG-INFO +1 -1
  3. dissect_cstruct-5.0.dev12/dissect/cstruct/compiler.py +886 -0
  4. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/cstruct.py +19 -4
  5. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/expression.py +139 -40
  6. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/parser.py +2 -2
  7. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/types/base.py +88 -30
  8. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/types/char.py +4 -1
  9. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/types/enum.py +20 -7
  10. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/types/flag.py +40 -7
  11. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/types/int.py +21 -2
  12. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/types/packed.py +32 -3
  13. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/types/structure.py +53 -34
  14. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/types/wchar.py +5 -2
  15. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect.cstruct.egg-info/PKG-INFO +1 -1
  16. dissect_cstruct-5.0.dev12/dissect.cstruct.egg-info/scm_version.json +8 -0
  17. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_align.py +41 -0
  18. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_benchmark.py +38 -38
  19. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_bitfield.py +64 -4
  20. dissect_cstruct-5.0.dev12/tests/test_compiler.py +684 -0
  21. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_expression.py +115 -1
  22. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_base.py +132 -0
  23. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_char.py +16 -0
  24. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_enum.py +22 -0
  25. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_flag.py +46 -1
  26. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_int.py +7 -3
  27. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_packed.py +38 -0
  28. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_structure.py +64 -0
  29. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_union.py +234 -27
  30. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_wchar.py +34 -0
  31. dissect_cstruct-5.0.dev12/tests/utils.py +52 -0
  32. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tox.ini +1 -3
  33. dissect_cstruct-5.0.dev10/dissect/cstruct/compiler.py +0 -424
  34. dissect_cstruct-5.0.dev10/dissect.cstruct.egg-info/scm_version.json +0 -8
  35. dissect_cstruct-5.0.dev10/tests/test_compiler.py +0 -381
  36. dissect_cstruct-5.0.dev10/tests/utils.py +0 -15
  37. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/.git-blame-ignore-revs +0 -0
  38. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/.gitattributes +0 -0
  39. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/COPYRIGHT +0 -0
  40. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/LICENSE +0 -0
  41. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/MANIFEST.in +0 -0
  42. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/README.md +0 -0
  43. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/__init__.py +0 -0
  44. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/bitbuffer.py +0 -0
  45. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/exception.py +0 -0
  46. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/lexer.py +0 -0
  47. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/tools/__init__.py +0 -0
  48. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/tools/stubgen.py +0 -0
  49. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/types/__init__.py +0 -0
  50. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/types/leb128.py +0 -0
  51. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/types/pointer.py +0 -0
  52. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/types/void.py +0 -0
  53. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect/cstruct/util.py +0 -0
  54. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect.cstruct.egg-info/SOURCES.txt +0 -0
  55. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect.cstruct.egg-info/dependency_links.txt +0 -0
  56. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect.cstruct.egg-info/entry_points.txt +0 -0
  57. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect.cstruct.egg-info/requires.txt +0 -0
  58. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect.cstruct.egg-info/scm_file_list.json +0 -0
  59. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/dissect.cstruct.egg-info/top_level.txt +0 -0
  60. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/examples/disk.py +0 -0
  61. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/examples/mirai.py +0 -0
  62. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/examples/pe.py +0 -0
  63. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/examples/protobuf.py +0 -0
  64. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/examples/secdesc.py +0 -0
  65. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/pyproject.toml +0 -0
  66. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/setup.cfg +0 -0
  67. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/__init__.py +0 -0
  68. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/_data/testdef.txt +0 -0
  69. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/_docs/Makefile +0 -0
  70. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/_docs/__init__.py +0 -0
  71. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/_docs/conf.py +0 -0
  72. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/_docs/index.rst +0 -0
  73. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/conftest.py +0 -0
  74. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_annotations.py +0 -0
  75. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_basic.py +0 -0
  76. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_bitbuffer.py +0 -0
  77. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_ctypes.py +0 -0
  78. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_lexer.py +0 -0
  79. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_parser.py +0 -0
  80. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_tools_stubgen.py +0 -0
  81. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_custom.py +0 -0
  82. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_leb128.py +0 -0
  83. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_pointer.py +0 -0
  84. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/tests/test_types_void.py +0 -0
  85. {dissect_cstruct-5.0.dev10 → dissect_cstruct-5.0.dev12}/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.dev10
3
+ Version: 5.0.dev12
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