dissect.volume 3.16.dev1__tar.gz → 3.17.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 (139) hide show
  1. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/PKG-INFO +3 -4
  2. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/ddf/ddf.py +1 -1
  3. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/lvm/metadata.py +3 -20
  4. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/raid/stream.py +1 -1
  5. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect.volume.egg-info/PKG-INFO +3 -4
  6. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/pyproject.toml +25 -8
  7. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/test_vinum_config.py +2 -2
  8. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tox.ini +8 -10
  9. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/.git-blame-ignore-revs +0 -0
  10. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/.gitattributes +0 -0
  11. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/COPYRIGHT +0 -0
  12. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/LICENSE +0 -0
  13. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/MANIFEST.in +0 -0
  14. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/README.md +0 -0
  15. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/__init__.py +0 -0
  16. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/ddf/__init__.py +0 -0
  17. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/ddf/c_ddf.py +0 -0
  18. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/disk/__init__.py +0 -0
  19. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/disk/disk.py +0 -0
  20. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/disk/partition.py +0 -0
  21. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/disk/schemes/__init__.py +0 -0
  22. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/disk/schemes/apm.py +0 -0
  23. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/disk/schemes/bsd.py +0 -0
  24. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/disk/schemes/gpt.py +0 -0
  25. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/disk/schemes/mbr.py +0 -0
  26. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/dm/__init__.py +0 -0
  27. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/dm/btree.py +0 -0
  28. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/dm/c_dm.py +0 -0
  29. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/dm/thin.py +0 -0
  30. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/exceptions.py +0 -0
  31. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/ldm.py +0 -0
  32. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/lvm/__init__.py +0 -0
  33. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/lvm/c_lvm2.py +0 -0
  34. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/lvm/lvm2.py +0 -0
  35. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/lvm/physical.py +0 -0
  36. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/md/__init__.py +0 -0
  37. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/md/c_md.py +0 -0
  38. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/md/md.py +0 -0
  39. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/raid/__init__.py +0 -0
  40. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/raid/raid.py +0 -0
  41. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/vinum/__init__.py +0 -0
  42. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/vinum/c_vinum.py +0 -0
  43. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/vinum/config.py +0 -0
  44. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/vinum/vinum.py +0 -0
  45. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect/volume/vss.py +0 -0
  46. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect.volume.egg-info/SOURCES.txt +0 -0
  47. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect.volume.egg-info/dependency_links.txt +0 -0
  48. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect.volume.egg-info/requires.txt +0 -0
  49. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/dissect.volume.egg-info/top_level.txt +0 -0
  50. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/setup.cfg +0 -0
  51. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/__init__.py +0 -0
  52. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid0-1.bin.gz +0 -0
  53. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid0-2.bin.gz +0 -0
  54. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid0-3.bin.gz +0 -0
  55. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid0-raid1-1.bin.gz +0 -0
  56. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid0-raid1-2.bin.gz +0 -0
  57. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid1-1.bin.gz +0 -0
  58. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid1-2.bin.gz +0 -0
  59. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid10-1.bin.gz +0 -0
  60. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid10-2.bin.gz +0 -0
  61. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid10-3.bin.gz +0 -0
  62. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid10-4.bin.gz +0 -0
  63. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid4-1.bin.gz +0 -0
  64. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid4-2.bin.gz +0 -0
  65. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid5-1.bin.gz +0 -0
  66. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid5-2.bin.gz +0 -0
  67. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid5-3.bin.gz +0 -0
  68. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid6-1.bin.gz +0 -0
  69. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid6-2.bin.gz +0 -0
  70. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid6-3.bin.gz +0 -0
  71. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/ddf/ddf-raid6-4.bin.gz +0 -0
  72. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/disk/apm.bin +0 -0
  73. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/disk/bsd.bin +0 -0
  74. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/disk/bsd64.bin.gz +0 -0
  75. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/disk/gpt.bin +0 -0
  76. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/disk/gpt_4k.bin +0 -0
  77. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/disk/gpt_esxi.bin +0 -0
  78. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/disk/gpt_hybrid.bin +0 -0
  79. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/disk/gpt_no_name_xff.bin +0 -0
  80. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/disk/mbr.bin +0 -0
  81. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/dm/dm-thin-data.bin.gz +0 -0
  82. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/dm/dm-thin-empty-data.bin.gz +0 -0
  83. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/dm/dm-thin-empty-metadata.bin.gz +0 -0
  84. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/dm/dm-thin-metadata.bin.gz +0 -0
  85. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/lvm/lvm-mirror-1.bin.gz +0 -0
  86. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/lvm/lvm-mirror-2.bin.gz +0 -0
  87. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/lvm/lvm-thin.bin.gz +0 -0
  88. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/lvm/lvm.bin.gz +0 -0
  89. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-90-1.bin.gz +0 -0
  90. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-90-2.bin.gz +0 -0
  91. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-90-raid1-1.bin.gz +0 -0
  92. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-90-raid1-2.bin.gz +0 -0
  93. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-linear-1.bin.gz +0 -0
  94. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-linear-2.bin.gz +0 -0
  95. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid0-1.bin.gz +0 -0
  96. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid0-2.bin.gz +0 -0
  97. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid0-3.bin.gz +0 -0
  98. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid1-1.bin.gz +0 -0
  99. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid1-2.bin.gz +0 -0
  100. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid10-1.bin.gz +0 -0
  101. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid10-2.bin.gz +0 -0
  102. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid4-1.bin.gz +0 -0
  103. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid4-2.bin.gz +0 -0
  104. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid4-3.bin.gz +0 -0
  105. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid5-1.bin.gz +0 -0
  106. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid5-2.bin.gz +0 -0
  107. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid5-3.bin.gz +0 -0
  108. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid6-1.bin.gz +0 -0
  109. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid6-2.bin.gz +0 -0
  110. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid6-3.bin.gz +0 -0
  111. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/md/md-raid6-4.bin.gz +0 -0
  112. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-concat_diska.bin.gz +0 -0
  113. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-concat_diskb.bin.gz +0 -0
  114. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-mirror_diska.bin.gz +0 -0
  115. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-mirror_diskb.bin.gz +0 -0
  116. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-raid5_diska.bin.gz +0 -0
  117. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-raid5_diskb.bin.gz +0 -0
  118. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-raid5_diskc.bin.gz +0 -0
  119. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-raid5_diskd.bin.gz +0 -0
  120. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-striped_diska.bin.gz +0 -0
  121. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-striped_diskb.bin.gz +0 -0
  122. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-stripedmirror_diska.bin.gz +0 -0
  123. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-stripedmirror_diskb.bin.gz +0 -0
  124. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-stripedmirror_diskc.bin.gz +0 -0
  125. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_data/vinum/vinum-stripedmirror_diskd.bin.gz +0 -0
  126. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_docs/Makefile +0 -0
  127. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_docs/__init__.py +0 -0
  128. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_docs/conf.py +0 -0
  129. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/_docs/index.rst +0 -0
  130. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/conftest.py +0 -0
  131. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/test_apm.py +0 -0
  132. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/test_bsd.py +0 -0
  133. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/test_ddf.py +0 -0
  134. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/test_dm.py +0 -0
  135. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/test_gpt.py +0 -0
  136. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/test_lvm.py +0 -0
  137. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/test_mbr.py +0 -0
  138. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/test_md.py +0 -0
  139. {dissect_volume-3.16.dev1 → dissect_volume-3.17.dev1}/tests/test_vinum.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dissect.volume
3
- Version: 3.16.dev1
3
+ Version: 3.17.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
- License: Affero General Public License v3
6
+ License-Expression: AGPL-3.0-or-later
7
7
  Project-URL: homepage, https://dissect.tools
8
8
  Project-URL: documentation, https://docs.dissect.tools/en/latest/projects/dissect.volume
9
9
  Project-URL: repository, https://github.com/fox-it/dissect.volume
@@ -11,14 +11,13 @@ Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Console
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: Intended Audience :: Information Technology
14
- Classifier: License :: OSI Approved
15
14
  Classifier: Operating System :: OS Independent
16
15
  Classifier: Programming Language :: Python :: 3
17
16
  Classifier: Topic :: Internet :: Log Analysis
18
17
  Classifier: Topic :: Scientific/Engineering :: Information Analysis
19
18
  Classifier: Topic :: Security
20
19
  Classifier: Topic :: Utilities
21
- Requires-Python: ~=3.9
20
+ Requires-Python: >=3.10
22
21
  Description-Content-Type: text/markdown
23
22
  License-File: LICENSE
24
23
  License-File: COPYRIGHT
@@ -61,7 +61,7 @@ class DDFConfiguration(Configuration):
61
61
  sec = 0 if vdcr.secondary_element_count == 1 else vdcr.secondary_element_seq
62
62
 
63
63
  i = 0
64
- for starting_block, pds in zip(vdcr.starting_block, vdcr.physical_disk_sequence):
64
+ for starting_block, pds in zip(vdcr.starting_block, vdcr.physical_disk_sequence, strict=False):
65
65
  if matched_pd := pd_map.get(pds):
66
66
  vd_pd_map[sec * count + i] = (starting_block, matched_pd)
67
67
 
@@ -1,16 +1,10 @@
1
1
  from __future__ import annotations
2
2
 
3
- import sys
4
3
  from dataclasses import dataclass
5
4
  from datetime import datetime # noqa: TC003
6
5
  from functools import cache
7
- from typing import BinaryIO, Optional, get_args, get_origin, get_type_hints
8
-
9
- if sys.version_info >= (3, 10):
10
- from types import UnionType # novermin
11
- else:
12
- # Python 3.9
13
- from typing import Union as UnionType
6
+ from types import UnionType
7
+ from typing import BinaryIO, get_args, get_origin, get_type_hints
14
8
 
15
9
  from dissect.util import ts
16
10
  from dissect.util.stream import MappingStream
@@ -36,7 +30,7 @@ class MetaBase:
36
30
 
37
31
  type_ = get_origin(field_type)
38
32
 
39
- if type_ is UnionType and field_type == Optional[field_type]:
33
+ if type_ is UnionType and field_type == field_type | None:
40
34
  value = obj.get(field_name)
41
35
  field_type = get_args(field_type)[0]
42
36
  type_ = get_origin(field_type)
@@ -586,14 +580,3 @@ class RAIDSegment(Segment):
586
580
 
587
581
  if self.raids:
588
582
  self.raids = [tuple(self.raids[i : i + 2]) for i in range(0, len(self.raids), 2)]
589
-
590
-
591
- # Backward compatibility with Python 3.9
592
- if sys.version_info < (3, 10):
593
- items = list(globals().values())
594
- for obj in items:
595
- if isinstance(obj, type) and issubclass(obj, MetaBase) and hasattr(obj, "__annotations__"):
596
- for k, v in obj.__annotations__.items():
597
- if isinstance(v, str) and "|" in v:
598
- # Because we import Union as UnionType
599
- obj.__annotations__[k] = f"UnionType[{v.replace(' | ', ', ')}]"
@@ -358,7 +358,7 @@ class RAID456Stream(AlignedStream):
358
358
 
359
359
  stripe_size = self.virtual_disk.stripe_size
360
360
  while length:
361
- stripe, offset_in_stripe, dd_idx, pd_idx, qd_idx, ddf_layout = self._get_stripe_read_info(offset)
361
+ stripe, offset_in_stripe, dd_idx, _, _, _ = self._get_stripe_read_info(offset)
362
362
  offset_in_device = stripe * stripe_size + offset_in_stripe
363
363
  dd_start, dd_dev = self.disk_map[dd_idx]
364
364
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dissect.volume
3
- Version: 3.16.dev1
3
+ Version: 3.17.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
- License: Affero General Public License v3
6
+ License-Expression: AGPL-3.0-or-later
7
7
  Project-URL: homepage, https://dissect.tools
8
8
  Project-URL: documentation, https://docs.dissect.tools/en/latest/projects/dissect.volume
9
9
  Project-URL: repository, https://github.com/fox-it/dissect.volume
@@ -11,14 +11,13 @@ Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Console
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: Intended Audience :: Information Technology
14
- Classifier: License :: OSI Approved
15
14
  Classifier: Operating System :: OS Independent
16
15
  Classifier: Programming Language :: Python :: 3
17
16
  Classifier: Topic :: Internet :: Log Analysis
18
17
  Classifier: Topic :: Scientific/Engineering :: Information Analysis
19
18
  Classifier: Topic :: Security
20
19
  Classifier: Topic :: Utilities
21
- Requires-Python: ~=3.9
20
+ Requires-Python: >=3.10
22
21
  Description-Content-Type: text/markdown
23
22
  License-File: LICENSE
24
23
  License-File: COPYRIGHT
@@ -1,13 +1,14 @@
1
1
  [build-system]
2
- requires = ["setuptools>=65.5.0", "setuptools_scm[toml]>=6.4.0"]
2
+ requires = ["setuptools>=77.0.0", "setuptools_scm[toml]>=6.4.0"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dissect.volume"
7
7
  description = "A Dissect module implementing a parser for different disk volume and partition systems, for example LVM2, GPT and MBR"
8
8
  readme = "README.md"
9
- requires-python = "~=3.9"
10
- license.text = "Affero General Public License v3"
9
+ requires-python = ">=3.10"
10
+ license = "AGPL-3.0-or-later"
11
+ license-files = ["LICENSE", "COPYRIGHT"]
11
12
  authors = [
12
13
  {name = "Dissect Team", email = "dissect@fox-it.com"}
13
14
  ]
@@ -16,7 +17,6 @@ classifiers = [
16
17
  "Environment :: Console",
17
18
  "Intended Audience :: Developers",
18
19
  "Intended Audience :: Information Technology",
19
- "License :: OSI Approved",
20
20
  "Operating System :: OS Independent",
21
21
  "Programming Language :: Python :: 3",
22
22
  "Topic :: Internet :: Log Analysis",
@@ -41,9 +41,29 @@ dev = [
41
41
  "dissect.util>=3.0.dev,<4.0.dev",
42
42
  ]
43
43
 
44
+ [dependency-groups]
45
+ test = [
46
+ "pytest",
47
+ ]
48
+ lint = [
49
+ "ruff==0.13.1",
50
+ "vermin",
51
+ ]
52
+ build = [
53
+ "build",
54
+ ]
55
+ debug = [
56
+ "ipdb",
57
+ ]
58
+ dev = [
59
+ {include-group = "test"},
60
+ {include-group = "lint"},
61
+ {include-group = "debug"},
62
+ ]
63
+
44
64
  [tool.ruff]
45
65
  line-length = 120
46
- required-version = ">=0.9.0"
66
+ required-version = ">=0.13.1"
47
67
 
48
68
  [tool.ruff.format]
49
69
  docstring-code-format = true
@@ -92,9 +112,6 @@ ignore = ["E203", "B904", "UP024", "ANN002", "ANN003", "ANN204", "ANN401", "SIM1
92
112
  known-first-party = ["dissect.volume"]
93
113
  known-third-party = ["dissect"]
94
114
 
95
- [tool.setuptools]
96
- license-files = ["LICENSE", "COPYRIGHT"]
97
-
98
115
  [tool.setuptools.packages.find]
99
116
  include = ["dissect.*"]
100
117
 
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import logging
4
- from datetime import datetime
4
+ from datetime import datetime, timezone
5
5
  from typing import TYPE_CHECKING
6
6
  from unittest.mock import patch
7
7
 
@@ -30,7 +30,7 @@ from dissect.volume.vinum.config import (
30
30
  if TYPE_CHECKING:
31
31
  from collections.abc import Iterator
32
32
 
33
- CONF_TS = datetime.min
33
+ CONF_TS = datetime.min.replace(tzinfo=timezone.utc)
34
34
 
35
35
 
36
36
  def test_volume_state() -> None:
@@ -4,7 +4,7 @@ envlist = lint, py3, pypy3
4
4
  # requires if they are not available on the host system. This requires the
5
5
  # locally installed tox to have a minimum version 3.3.0. This means the names
6
6
  # of the configuration options are still according to the tox 3.x syntax.
7
- minversion = 4.4.3
7
+ minversion = 4.27.0
8
8
  # This version of virtualenv will install setuptools version 68.2.2 and pip
9
9
  # 23.3.1. These versions fully support python projects defined only through a
10
10
  # pyproject.toml file (PEP-517/PEP-518/PEP-621). This pip version also support
@@ -14,9 +14,9 @@ requires = virtualenv>=20.24.6
14
14
  [testenv]
15
15
  extras = dev
16
16
  deps =
17
- pytest
18
17
  pytest-cov
19
18
  coverage
19
+ dependency_groups = test
20
20
  commands =
21
21
  pytest --basetemp="{envtmpdir}" {posargs:--color=yes --cov=dissect --cov-report=term-missing -v tests}
22
22
  coverage report
@@ -24,26 +24,24 @@ commands =
24
24
 
25
25
  [testenv:build]
26
26
  package = skip
27
- deps =
28
- build
27
+ dependency_groups = build
29
28
  commands =
30
29
  pyproject-build
31
30
 
32
31
  [testenv:fix]
33
32
  package = skip
34
- deps =
35
- ruff==0.9.2
33
+ dependency_groups = lint
36
34
  commands =
35
+ ruff check --fix dissect tests
37
36
  ruff format dissect tests
38
37
 
39
38
  [testenv:lint]
40
39
  package = skip
41
- deps =
42
- ruff==0.9.2
43
- vermin
40
+ dependency_groups = lint
44
41
  commands =
45
42
  ruff check dissect tests
46
- vermin -t=3.9- --no-tips --lint dissect tests
43
+ ruff format --check dissect tests
44
+ vermin -t=3.10- --no-tips --lint dissect tests
47
45
 
48
46
  [testenv:docs-build]
49
47
  allowlist_externals = make