dissect.volume 3.11.dev2__tar.gz → 3.12.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 (115) hide show
  1. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/.gitattributes +1 -3
  2. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/PKG-INFO +2 -2
  3. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/lvm/metadata.py +6 -1
  4. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect.volume.egg-info/PKG-INFO +2 -2
  5. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect.volume.egg-info/SOURCES.txt +4 -4
  6. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect.volume.egg-info/requires.txt +1 -1
  7. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/pyproject.toml +1 -1
  8. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/conftest.py +3 -3
  9. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/test_lvm.py +10 -0
  10. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/COPYRIGHT +0 -0
  11. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/LICENSE +0 -0
  12. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/MANIFEST.in +0 -0
  13. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/README.md +0 -0
  14. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/__init__.py +0 -0
  15. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/ddf/__init__.py +0 -0
  16. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/ddf/c_ddf.py +0 -0
  17. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/ddf/ddf.py +0 -0
  18. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/disk/__init__.py +0 -0
  19. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/disk/disk.py +0 -0
  20. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/disk/partition.py +0 -0
  21. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/disk/schemes/__init__.py +0 -0
  22. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/disk/schemes/apm.py +0 -0
  23. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/disk/schemes/bsd.py +0 -0
  24. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/disk/schemes/gpt.py +0 -0
  25. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/disk/schemes/mbr.py +0 -0
  26. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/dm/__init__.py +0 -0
  27. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/dm/btree.py +0 -0
  28. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/dm/c_dm.py +0 -0
  29. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/dm/thin.py +0 -0
  30. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/exceptions.py +0 -0
  31. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/ldm.py +0 -0
  32. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/lvm/__init__.py +0 -0
  33. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/lvm/c_lvm2.py +0 -0
  34. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/lvm/lvm2.py +0 -0
  35. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/lvm/physical.py +0 -0
  36. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/md/__init__.py +0 -0
  37. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/md/c_md.py +0 -0
  38. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/md/md.py +0 -0
  39. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/raid/__init__.py +0 -0
  40. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/raid/raid.py +0 -0
  41. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/raid/stream.py +0 -0
  42. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect/volume/vss.py +0 -0
  43. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect.volume.egg-info/dependency_links.txt +0 -0
  44. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/dissect.volume.egg-info/top_level.txt +0 -0
  45. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/setup.cfg +0 -0
  46. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/__init__.py +0 -0
  47. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/apm.bin +0 -0
  48. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/bsd.bin +0 -0
  49. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/bsd64.bin.gz +0 -0
  50. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid0-1.bin.gz +0 -0
  51. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid0-2.bin.gz +0 -0
  52. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid0-3.bin.gz +0 -0
  53. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid0-raid1-1.bin.gz +0 -0
  54. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid0-raid1-2.bin.gz +0 -0
  55. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid1-1.bin.gz +0 -0
  56. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid1-2.bin.gz +0 -0
  57. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid10-1.bin.gz +0 -0
  58. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid10-2.bin.gz +0 -0
  59. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid10-3.bin.gz +0 -0
  60. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid10-4.bin.gz +0 -0
  61. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid4-1.bin.gz +0 -0
  62. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid4-2.bin.gz +0 -0
  63. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid5-1.bin.gz +0 -0
  64. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid5-2.bin.gz +0 -0
  65. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid5-3.bin.gz +0 -0
  66. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid6-1.bin.gz +0 -0
  67. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid6-2.bin.gz +0 -0
  68. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid6-3.bin.gz +0 -0
  69. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/ddf/ddf-raid6-4.bin.gz +0 -0
  70. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/dm/dm-thin-data.bin.gz +0 -0
  71. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/dm/dm-thin-metadata.bin.gz +0 -0
  72. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/gpt.bin +0 -0
  73. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/gpt_4k.bin +0 -0
  74. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/gpt_esxi.bin +0 -0
  75. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/gpt_hybrid.bin +0 -0
  76. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/gpt_no_name_xff.bin +0 -0
  77. {dissect_volume-3.11.dev2/tests/data → dissect_volume-3.12.dev1/tests/data/lvm}/lvm-mirror-1.bin.gz +0 -0
  78. {dissect_volume-3.11.dev2/tests/data → dissect_volume-3.12.dev1/tests/data/lvm}/lvm-mirror-2.bin.gz +0 -0
  79. {dissect_volume-3.11.dev2/tests/data → dissect_volume-3.12.dev1/tests/data/lvm}/lvm-thin.bin.gz +0 -0
  80. {dissect_volume-3.11.dev2/tests/data → dissect_volume-3.12.dev1/tests/data/lvm}/lvm.bin.gz +0 -0
  81. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/mbr.bin +0 -0
  82. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-90-1.bin.gz +0 -0
  83. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-90-2.bin.gz +0 -0
  84. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-90-raid1-1.bin.gz +0 -0
  85. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-90-raid1-2.bin.gz +0 -0
  86. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-linear-1.bin.gz +0 -0
  87. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-linear-2.bin.gz +0 -0
  88. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid0-1.bin.gz +0 -0
  89. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid0-2.bin.gz +0 -0
  90. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid0-3.bin.gz +0 -0
  91. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid1-1.bin.gz +0 -0
  92. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid1-2.bin.gz +0 -0
  93. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid10-1.bin.gz +0 -0
  94. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid10-2.bin.gz +0 -0
  95. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid4-1.bin.gz +0 -0
  96. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid4-2.bin.gz +0 -0
  97. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid4-3.bin.gz +0 -0
  98. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid5-1.bin.gz +0 -0
  99. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid5-2.bin.gz +0 -0
  100. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid5-3.bin.gz +0 -0
  101. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid6-1.bin.gz +0 -0
  102. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid6-2.bin.gz +0 -0
  103. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid6-3.bin.gz +0 -0
  104. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/data/md/md-raid6-4.bin.gz +0 -0
  105. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/docs/Makefile +0 -0
  106. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/docs/conf.py +0 -0
  107. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/docs/index.rst +0 -0
  108. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/test_apm.py +0 -0
  109. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/test_bsd.py +0 -0
  110. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/test_ddf.py +0 -0
  111. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/test_dm.py +0 -0
  112. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/test_gpt.py +0 -0
  113. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/test_mbr.py +0 -0
  114. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tests/test_md.py +0 -0
  115. {dissect_volume-3.11.dev2 → dissect_volume-3.12.dev1}/tox.ini +0 -0
@@ -43,6 +43,4 @@ tests/data/ddf/ddf-raid10-1.bin.gz filter=lfs diff=lfs merge=lfs -text
43
43
  tests/data/ddf/ddf-raid10-2.bin.gz filter=lfs diff=lfs merge=lfs -text
44
44
  tests/data/ddf/ddf-raid10-3.bin.gz filter=lfs diff=lfs merge=lfs -text
45
45
  tests/data/ddf/ddf-raid10-4.bin.gz filter=lfs diff=lfs merge=lfs -text
46
- tests/data/lvm-thin.bin.gz filter=lfs diff=lfs merge=lfs -text
47
- tests/data/lvm-mirror-2.bin.gz filter=lfs diff=lfs merge=lfs -text
48
- tests/data/lvm-mirror-1.bin.gz filter=lfs diff=lfs merge=lfs -text
46
+ tests/data/lvm/* filter=lfs diff=lfs merge=lfs -text
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dissect.volume
3
- Version: 3.11.dev2
3
+ Version: 3.12.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,7 +22,7 @@ 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<5,>=4.dev
25
+ Requires-Dist: dissect.cstruct<5,>=4
26
26
  Requires-Dist: dissect.util<4,>3
27
27
  Provides-Extra: dev
28
28
  Requires-Dist: dissect.cstruct<5.0.dev,>=4.0.dev; extra == "dev"
@@ -342,7 +342,12 @@ class StripedSegment(Segment):
342
342
  offset = 0
343
343
  for pv_name, extent_offset in self.stripes:
344
344
  if pv_name not in opened_pv:
345
- pv_fh = pv[pv_name].dev.open()
345
+ if (pv_dev := pv[pv_name].dev) is not None:
346
+ pv_fh = pv_dev.open()
347
+ else:
348
+ raise LVM2Error(
349
+ f"Physical volume not found: {pv_name} (id={pv[pv_name].id}, device={pv[pv_name].device})"
350
+ )
346
351
  opened_pv[pv_name] = pv_fh
347
352
  else:
348
353
  pv_fh = opened_pv[pv_name]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dissect.volume
3
- Version: 3.11.dev2
3
+ Version: 3.12.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,7 +22,7 @@ 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<5,>=4.dev
25
+ Requires-Dist: dissect.cstruct<5,>=4
26
26
  Requires-Dist: dissect.util<4,>3
27
27
  Provides-Extra: dev
28
28
  Requires-Dist: dissect.cstruct<5.0.dev,>=4.0.dev; extra == "dev"
@@ -58,10 +58,6 @@ tests/data/gpt_4k.bin
58
58
  tests/data/gpt_esxi.bin
59
59
  tests/data/gpt_hybrid.bin
60
60
  tests/data/gpt_no_name_xff.bin
61
- tests/data/lvm-mirror-1.bin.gz
62
- tests/data/lvm-mirror-2.bin.gz
63
- tests/data/lvm-thin.bin.gz
64
- tests/data/lvm.bin.gz
65
61
  tests/data/mbr.bin
66
62
  tests/data/ddf/ddf-raid0-1.bin.gz
67
63
  tests/data/ddf/ddf-raid0-2.bin.gz
@@ -85,6 +81,10 @@ tests/data/ddf/ddf-raid6-3.bin.gz
85
81
  tests/data/ddf/ddf-raid6-4.bin.gz
86
82
  tests/data/dm/dm-thin-data.bin.gz
87
83
  tests/data/dm/dm-thin-metadata.bin.gz
84
+ tests/data/lvm/lvm-mirror-1.bin.gz
85
+ tests/data/lvm/lvm-mirror-2.bin.gz
86
+ tests/data/lvm/lvm-thin.bin.gz
87
+ tests/data/lvm/lvm.bin.gz
88
88
  tests/data/md/md-90-1.bin.gz
89
89
  tests/data/md/md-90-2.bin.gz
90
90
  tests/data/md/md-90-raid1-1.bin.gz
@@ -1,4 +1,4 @@
1
- dissect.cstruct<5,>=4.dev
1
+ dissect.cstruct<5,>=4
2
2
  dissect.util<4,>3
3
3
 
4
4
  [dev]
@@ -25,7 +25,7 @@ classifiers = [
25
25
  "Topic :: Utilities",
26
26
  ]
27
27
  dependencies = [
28
- "dissect.cstruct>=4.dev,<5",
28
+ "dissect.cstruct>=4,<5",
29
29
  "dissect.util>3,<4",
30
30
  ]
31
31
  dynamic = ["version"]
@@ -27,17 +27,17 @@ def open_files_gz(names: list[str], mode: str = "rb") -> Iterator[list[gzip.Gzip
27
27
 
28
28
  @pytest.fixture
29
29
  def lvm() -> Iterator[BinaryIO]:
30
- yield from open_file_gz("data/lvm.bin.gz")
30
+ yield from open_file_gz("data/lvm/lvm.bin.gz")
31
31
 
32
32
 
33
33
  @pytest.fixture
34
34
  def lvm_thin() -> Iterator[BinaryIO]:
35
- yield from open_file_gz("data/lvm-thin.bin.gz")
35
+ yield from open_file_gz("data/lvm/lvm-thin.bin.gz")
36
36
 
37
37
 
38
38
  @pytest.fixture
39
39
  def lvm_mirror() -> Iterator[list[BinaryIO]]:
40
- yield from open_files_gz(["data/lvm-mirror-1.bin.gz", "data/lvm-mirror-2.bin.gz"])
40
+ yield from open_files_gz(["data/lvm/lvm-mirror-1.bin.gz", "data/lvm/lvm-mirror-2.bin.gz"])
41
41
 
42
42
 
43
43
  @pytest.fixture
@@ -1,4 +1,5 @@
1
1
  import io
2
+ import re
2
3
  from typing import BinaryIO
3
4
 
4
5
  import pytest
@@ -33,6 +34,15 @@ def test_lvm(lvm: BinaryIO) -> None:
33
34
  assert fh.read(1024) == b"\xde\xad\xbe\xef" * 256
34
35
  assert fh.read(1024) == b"\x00" * 1024
35
36
 
37
+ vg.pv[0]._dev = None
38
+ with pytest.raises(
39
+ LVM2Error,
40
+ match=re.escape(
41
+ "Physical volume not found: pv0 (id=2Svcy0-cRH2-3Xrz-87Fv-zNUI-9CoI-Ycoyql, device=/dev/loop1)"
42
+ ),
43
+ ):
44
+ fh = lv.open()
45
+
36
46
 
37
47
  def test_lvm_invalid() -> None:
38
48
  buf = io.BytesIO(4096 * b"\x00")