dissect.volume 3.10.dev5__tar.gz → 3.11.dev1__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 (116) hide show
  1. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/PKG-INFO +6 -3
  2. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/ddf/c_ddf.py +3 -4
  3. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/ddf/ddf.py +7 -2
  4. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/disk/partition.py +2 -2
  5. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/disk/schemes/apm.py +2 -4
  6. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/disk/schemes/bsd.py +2 -3
  7. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/disk/schemes/gpt.py +2 -3
  8. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/disk/schemes/mbr.py +3 -4
  9. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/dm/c_dm.py +1 -2
  10. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/ldm.py +2 -3
  11. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/lvm/c_lvm2.py +1 -2
  12. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/lvm/physical.py +5 -2
  13. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/md/c_md.py +1 -2
  14. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/vss.py +2 -3
  15. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect.volume.egg-info/PKG-INFO +6 -3
  16. dissect_volume-3.11.dev1/dissect.volume.egg-info/requires.txt +6 -0
  17. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/pyproject.toml +8 -2
  18. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tox.ini +1 -0
  19. dissect.volume-3.10.dev5/dissect.volume.egg-info/requires.txt +0 -2
  20. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/.gitattributes +0 -0
  21. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/COPYRIGHT +0 -0
  22. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/LICENSE +0 -0
  23. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/MANIFEST.in +0 -0
  24. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/README.md +0 -0
  25. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/__init__.py +0 -0
  26. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/ddf/__init__.py +0 -0
  27. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/disk/__init__.py +0 -0
  28. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/disk/disk.py +0 -0
  29. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/disk/schemes/__init__.py +0 -0
  30. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/dm/__init__.py +0 -0
  31. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/dm/btree.py +0 -0
  32. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/dm/thin.py +0 -0
  33. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/exceptions.py +0 -0
  34. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/lvm/__init__.py +0 -0
  35. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/lvm/lvm2.py +0 -0
  36. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/lvm/metadata.py +0 -0
  37. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/md/__init__.py +0 -0
  38. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/md/md.py +0 -0
  39. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/raid/__init__.py +0 -0
  40. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/raid/raid.py +0 -0
  41. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect/volume/raid/stream.py +0 -0
  42. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect.volume.egg-info/SOURCES.txt +0 -0
  43. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect.volume.egg-info/dependency_links.txt +0 -0
  44. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/dissect.volume.egg-info/top_level.txt +0 -0
  45. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/setup.cfg +0 -0
  46. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/__init__.py +0 -0
  47. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/conftest.py +0 -0
  48. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/apm.bin +0 -0
  49. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/bsd.bin +0 -0
  50. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/bsd64.bin.gz +0 -0
  51. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid0-1.bin.gz +0 -0
  52. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid0-2.bin.gz +0 -0
  53. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid0-3.bin.gz +0 -0
  54. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid0-raid1-1.bin.gz +0 -0
  55. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid0-raid1-2.bin.gz +0 -0
  56. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid1-1.bin.gz +0 -0
  57. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid1-2.bin.gz +0 -0
  58. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid10-1.bin.gz +0 -0
  59. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid10-2.bin.gz +0 -0
  60. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid10-3.bin.gz +0 -0
  61. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid10-4.bin.gz +0 -0
  62. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid4-1.bin.gz +0 -0
  63. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid4-2.bin.gz +0 -0
  64. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid5-1.bin.gz +0 -0
  65. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid5-2.bin.gz +0 -0
  66. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid5-3.bin.gz +0 -0
  67. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid6-1.bin.gz +0 -0
  68. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid6-2.bin.gz +0 -0
  69. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid6-3.bin.gz +0 -0
  70. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/ddf/ddf-raid6-4.bin.gz +0 -0
  71. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/dm/dm-thin-data.bin.gz +0 -0
  72. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/dm/dm-thin-metadata.bin.gz +0 -0
  73. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/gpt.bin +0 -0
  74. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/gpt_4k.bin +0 -0
  75. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/gpt_esxi.bin +0 -0
  76. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/gpt_hybrid.bin +0 -0
  77. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/gpt_no_name_xff.bin +0 -0
  78. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/lvm-mirror-1.bin.gz +0 -0
  79. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/lvm-mirror-2.bin.gz +0 -0
  80. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/lvm-thin.bin.gz +0 -0
  81. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/lvm.bin.gz +0 -0
  82. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/mbr.bin +0 -0
  83. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-90-1.bin.gz +0 -0
  84. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-90-2.bin.gz +0 -0
  85. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-90-raid1-1.bin.gz +0 -0
  86. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-90-raid1-2.bin.gz +0 -0
  87. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-linear-1.bin.gz +0 -0
  88. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-linear-2.bin.gz +0 -0
  89. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid0-1.bin.gz +0 -0
  90. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid0-2.bin.gz +0 -0
  91. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid0-3.bin.gz +0 -0
  92. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid1-1.bin.gz +0 -0
  93. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid1-2.bin.gz +0 -0
  94. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid10-1.bin.gz +0 -0
  95. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid10-2.bin.gz +0 -0
  96. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid4-1.bin.gz +0 -0
  97. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid4-2.bin.gz +0 -0
  98. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid4-3.bin.gz +0 -0
  99. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid5-1.bin.gz +0 -0
  100. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid5-2.bin.gz +0 -0
  101. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid5-3.bin.gz +0 -0
  102. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid6-1.bin.gz +0 -0
  103. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid6-2.bin.gz +0 -0
  104. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid6-3.bin.gz +0 -0
  105. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/data/md/md-raid6-4.bin.gz +0 -0
  106. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/docs/Makefile +0 -0
  107. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/docs/conf.py +0 -0
  108. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/docs/index.rst +0 -0
  109. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/test_apm.py +0 -0
  110. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/test_bsd.py +0 -0
  111. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/test_ddf.py +0 -0
  112. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/test_dm.py +0 -0
  113. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/test_gpt.py +0 -0
  114. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/test_lvm.py +0 -0
  115. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/test_mbr.py +0 -0
  116. {dissect.volume-3.10.dev5 → dissect_volume-3.11.dev1}/tests/test_md.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dissect.volume
3
- Version: 3.10.dev5
3
+ Version: 3.11.dev1
4
4
  Summary: A Dissect module implementing a parser for different disk volume and partition systems, for example LVM2, GPT and MBR
5
5
  Author-email: Dissect Team <dissect@fox-it.com>
6
6
  License: Affero General Public License v3
@@ -22,8 +22,11 @@ Requires-Python: ~=3.9
22
22
  Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
24
  License-File: COPYRIGHT
25
- Requires-Dist: dissect.cstruct<4.0.dev,>=3.0.dev
26
- Requires-Dist: dissect.util<4.0.dev,>=3.0.dev
25
+ Requires-Dist: dissect.cstruct<5,>=4.dev
26
+ Requires-Dist: dissect.util<4,>3
27
+ Provides-Extra: dev
28
+ Requires-Dist: dissect.cstruct<5.0.dev,>=4.0.dev; extra == "dev"
29
+ Requires-Dist: dissect.util<4.0.dev,>=3.0.dev; extra == "dev"
27
30
 
28
31
  # dissect.volume
29
32
 
@@ -141,12 +141,12 @@ struct Physical_Disk_Records {
141
141
  struct Virtual_Disk_Entry {
142
142
  char VD_GUID[24];
143
143
  uint16 VD_Number;
144
- char Reserved[2];
144
+ char Reserved1[2];
145
145
  uint32 VD_Type;
146
146
  uint8 VD_State;
147
147
  uint8 Init_State;
148
148
  uint8 Partially_Optimal_Drive_Failures_Remaining; /* DDF 2.0 */
149
- char Reserved[13];
149
+ char Reserved2[13];
150
150
  char VD_Name[16];
151
151
  };
152
152
 
@@ -322,7 +322,6 @@ struct Vendor_Specific_Log {
322
322
  char Reserved[16];
323
323
  };
324
324
  """
325
- c_ddf = cstruct(endian=">")
326
- c_ddf.load(ddf_def)
325
+ c_ddf = cstruct(endian=">").load(ddf_def)
327
326
 
328
327
  DEFAULT_SECTOR_SIZE = 512
@@ -3,7 +3,6 @@ from __future__ import annotations
3
3
  import io
4
4
  from typing import BinaryIO, Union
5
5
 
6
- from dissect.cstruct.types import Instance, Structure
7
6
  from dissect.util import ts
8
7
 
9
8
  from dissect.volume.ddf.c_ddf import DEFAULT_SECTOR_SIZE, c_ddf
@@ -251,7 +250,13 @@ class VirtualDiskConfigurationRecord:
251
250
  return f"<VirtualDiskConfigurationRecord guid={self.guid}>"
252
251
 
253
252
 
254
- def _read_section_header(fh: BinaryIO, structure: Structure, signature: int) -> Instance:
253
+ def _read_section_header(
254
+ fh: BinaryIO,
255
+ structure: type[
256
+ c_ddf.Physical_Disk_Records | c_ddf.Virtual_Disk_Records | c_ddf.Controller_Data | c_ddf.Physical_Disk_Data
257
+ ],
258
+ signature: int,
259
+ ) -> c_ddf.Physical_Disk_Records | c_ddf.Virtual_Disk_Records | c_ddf.Controller_Data | c_ddf.Physical_Disk_Data:
255
260
  obj = structure(fh)
256
261
  if obj.Signature != signature:
257
262
  raise DDFError(f"Invalid {structure.name} header. Signature: {obj.Signature:#010x}, expected {signature:#x}")
@@ -1,7 +1,7 @@
1
1
  from typing import Any, BinaryIO, Optional, Union
2
2
  from uuid import UUID
3
3
 
4
- from dissect.cstruct import Instance
4
+ from dissect.cstruct import Structure
5
5
  from dissect.util.stream import RangeStream
6
6
 
7
7
  PARTITION_TYPES = {
@@ -185,7 +185,7 @@ class Partition:
185
185
  flags: Optional[int] = None,
186
186
  guid: Optional[UUID] = None,
187
187
  vtype_str: Optional[str] = None,
188
- raw: Instance = None,
188
+ raw: Structure = None,
189
189
  ):
190
190
  self.disk = disk
191
191
  self.number = number
@@ -1,6 +1,6 @@
1
1
  from typing import BinaryIO, Iterator
2
2
 
3
- from dissect import cstruct
3
+ from dissect.cstruct import cstruct
4
4
 
5
5
  from dissect.volume.disk.partition import Partition
6
6
  from dissect.volume.exceptions import DiskError
@@ -29,9 +29,7 @@ struct partition_entry {
29
29
  };
30
30
  """
31
31
 
32
- c_apm = cstruct.cstruct()
33
- c_apm.load(apm_def)
34
- c_apm.endian = ">"
32
+ c_apm = cstruct(endian=">").load(apm_def)
35
33
 
36
34
 
37
35
  class APM:
@@ -5,7 +5,7 @@ import io
5
5
  from typing import BinaryIO, Iterator
6
6
  from uuid import UUID
7
7
 
8
- from dissect import cstruct
8
+ from dissect.cstruct import cstruct
9
9
 
10
10
  from dissect.volume.disk.partition import Partition
11
11
  from dissect.volume.exceptions import DiskError
@@ -215,8 +215,7 @@ struct disklabel64 {
215
215
  #define D_CHAIN 0x10 /* can do back-back transfers */
216
216
  """
217
217
 
218
- c_bsd = cstruct.cstruct()
219
- c_bsd.load(bsd_def)
218
+ c_bsd = cstruct().load(bsd_def)
220
219
 
221
220
  DTYPE_NAMES = {
222
221
  0: "unknown",
@@ -1,6 +1,6 @@
1
1
  from typing import BinaryIO, Iterator
2
2
 
3
- from dissect import cstruct
3
+ from dissect.cstruct import cstruct
4
4
 
5
5
  from dissect.volume.disk.partition import Partition
6
6
  from dissect.volume.disk.schemes.mbr import MBR
@@ -43,8 +43,7 @@ struct GPT_PARTITION {
43
43
  // 56 (0x38) 72 bytes Partition name (36 UTF-16LE code units)
44
44
  """
45
45
 
46
- c_gpt = cstruct.cstruct()
47
- c_gpt.load(gpt_def)
46
+ c_gpt = cstruct().load(gpt_def)
48
47
 
49
48
 
50
49
  class GPT:
@@ -1,6 +1,6 @@
1
1
  from typing import BinaryIO, Iterator, Optional
2
2
 
3
- from dissect.cstruct import Instance, cstruct
3
+ from dissect.cstruct import cstruct
4
4
 
5
5
  from dissect.volume.disk.partition import Partition
6
6
  from dissect.volume.exceptions import DiskError
@@ -26,8 +26,7 @@ typedef struct mbr_s {
26
26
  } mbr;
27
27
  """
28
28
 
29
- c_mbr = cstruct()
30
- c_mbr.load(mbr_def)
29
+ c_mbr = cstruct().load(mbr_def)
31
30
 
32
31
 
33
32
  class MBR:
@@ -53,7 +52,7 @@ class MBR:
53
52
  self.partitions: list[Partition] = list(self._partitions(self.mbr, self.offset))
54
53
 
55
54
  def _partitions(
56
- self, mbr: Instance, offset: int, num_start: int = 0, ebr_offset: Optional[int] = None
55
+ self, mbr: c_mbr.mbr_s, offset: int, num_start: int = 0, ebr_offset: Optional[int] = None
57
56
  ) -> Iterator[Partition]:
58
57
  for num, partition in enumerate(mbr.part):
59
58
  if partition.type == 0x00:
@@ -87,7 +87,6 @@ struct disk_device_details {
87
87
  };
88
88
  """
89
89
 
90
- c_dm = cstruct()
91
- c_dm.load(dm_def)
90
+ c_dm = cstruct().load(dm_def)
92
91
 
93
92
  SECTOR_SIZE = 512
@@ -5,7 +5,7 @@
5
5
  import logging
6
6
  import os
7
7
 
8
- from dissect import cstruct
8
+ from dissect.cstruct import cstruct
9
9
 
10
10
  log = logging.getLogger(__name__)
11
11
  log.setLevel(os.getenv("DISSECT_LOG_LDM", "CRITICAL"))
@@ -246,5 +246,4 @@ struct KLOG {
246
246
  };
247
247
  """
248
248
 
249
- c_ldm = cstruct.cstruct(endian=">")
250
- c_ldm.load(ldm_def)
249
+ c_ldm = cstruct(endian=">").load(ldm_def)
@@ -38,8 +38,7 @@ struct raw_locn {
38
38
  #define RAW_LOCN_IGNORED 0x00000001
39
39
  """
40
40
 
41
- c_lvm = cstruct()
42
- c_lvm.load(lvm_def)
41
+ c_lvm = cstruct().load(lvm_def)
43
42
 
44
43
  SECTOR_SIZE = 512
45
44
 
@@ -1,10 +1,11 @@
1
+ from __future__ import annotations
2
+
1
3
  import ast
2
4
  import re
3
5
  from bisect import bisect_right
4
6
  from functools import cached_property
5
7
  from typing import Any, BinaryIO, Iterator, Optional
6
8
 
7
- from dissect.cstruct import Instance, Structure
8
9
  from dissect.util.stream import RunlistStream
9
10
 
10
11
  from dissect.volume.exceptions import LVM2Error
@@ -92,7 +93,9 @@ class LVM2Device:
92
93
  return RunlistStream(self.fh, runlist, self.size, SECTOR_SIZE)
93
94
 
94
95
 
95
- def _read_descriptors(fh: BinaryIO, ctype: Structure) -> list[Instance]:
96
+ def _read_descriptors(
97
+ fh: BinaryIO, ctype: type[c_lvm.disk_locn | c_lvm.raw_locn]
98
+ ) -> list[c_lvm.disk_locn | c_lvm.raw_locn]:
96
99
  descriptors = []
97
100
  while True:
98
101
  desc = ctype(fh)
@@ -279,7 +279,6 @@ struct mdp_superblock_1 {
279
279
  #define ALGORITHM_PARITY_N_6 ALGORITHM_PARITY_N
280
280
  """ # noqa: E501
281
281
 
282
- c_md = cstruct()
283
- c_md.load(md_def)
282
+ c_md = cstruct().load(md_def)
284
283
 
285
284
  SECTOR_SIZE = 512
@@ -5,7 +5,7 @@ import os
5
5
  import uuid
6
6
  from collections import defaultdict
7
7
 
8
- from dissect import cstruct
8
+ from dissect.cstruct import cstruct
9
9
  from dissect.util.stream import AlignedStream
10
10
 
11
11
  from dissect.volume.exceptions import Error
@@ -144,8 +144,7 @@ struct range_descriptor {
144
144
  };
145
145
  """
146
146
 
147
- c_vss = cstruct.cstruct()
148
- c_vss.load(vss_def)
147
+ c_vss = cstruct().load(vss_def)
149
148
 
150
149
  RECORD_TYPE = c_vss.RECORD_TYPE
151
150
  BLOCK_FLAG = c_vss.BLOCK_FLAG
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dissect.volume
3
- Version: 3.10.dev5
3
+ Version: 3.11.dev1
4
4
  Summary: A Dissect module implementing a parser for different disk volume and partition systems, for example LVM2, GPT and MBR
5
5
  Author-email: Dissect Team <dissect@fox-it.com>
6
6
  License: Affero General Public License v3
@@ -22,8 +22,11 @@ Requires-Python: ~=3.9
22
22
  Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
24
  License-File: COPYRIGHT
25
- Requires-Dist: dissect.cstruct<4.0.dev,>=3.0.dev
26
- Requires-Dist: dissect.util<4.0.dev,>=3.0.dev
25
+ Requires-Dist: dissect.cstruct<5,>=4.dev
26
+ Requires-Dist: dissect.util<4,>3
27
+ Provides-Extra: dev
28
+ Requires-Dist: dissect.cstruct<5.0.dev,>=4.0.dev; extra == "dev"
29
+ Requires-Dist: dissect.util<4.0.dev,>=3.0.dev; extra == "dev"
27
30
 
28
31
  # dissect.volume
29
32
 
@@ -0,0 +1,6 @@
1
+ dissect.cstruct<5,>=4.dev
2
+ dissect.util<4,>3
3
+
4
+ [dev]
5
+ dissect.cstruct<5.0.dev,>=4.0.dev
6
+ dissect.util<4.0.dev,>=3.0.dev
@@ -25,8 +25,8 @@ classifiers = [
25
25
  "Topic :: Utilities",
26
26
  ]
27
27
  dependencies = [
28
- "dissect.cstruct>=3.0.dev,<4.0.dev",
29
- "dissect.util>=3.0.dev,<4.0.dev",
28
+ "dissect.cstruct>=4.dev,<5",
29
+ "dissect.util>3,<4",
30
30
  ]
31
31
  dynamic = ["version"]
32
32
 
@@ -35,6 +35,12 @@ homepage = "https://dissect.tools"
35
35
  documentation = "https://docs.dissect.tools/en/latest/projects/dissect.volume"
36
36
  repository = "https://github.com/fox-it/dissect.volume"
37
37
 
38
+ [project.optional-dependencies]
39
+ dev = [
40
+ "dissect.cstruct>=4.0.dev,<5.0.dev",
41
+ "dissect.util>=3.0.dev,<4.0.dev",
42
+ ]
43
+
38
44
  [tool.black]
39
45
  line-length = 120
40
46
 
@@ -11,6 +11,7 @@ minversion = 4.4.3
11
11
  requires = virtualenv>=20.16.6
12
12
 
13
13
  [testenv]
14
+ extras = dev
14
15
  deps =
15
16
  pytest
16
17
  pytest-cov
@@ -1,2 +0,0 @@
1
- dissect.cstruct<4.0.dev,>=3.0.dev
2
- dissect.util<4.0.dev,>=3.0.dev