Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions dissect/volume/ddf/c_ddf.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Reference: https://www.snia.org/sites/default/files/SNIA_DDF_Technical_Position_v2.0.pdf
from __future__ import annotations

from dissect.cstruct import cstruct

Expand Down
8 changes: 6 additions & 2 deletions dissect/volume/ddf/ddf.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from __future__ import annotations

import io
from typing import BinaryIO
from typing import TYPE_CHECKING, BinaryIO

from dissect.util import ts

Expand All @@ -10,12 +10,16 @@
from dissect.volume.raid.raid import (
RAID,
Configuration,
DiskMap,
PhysicalDisk,
VirtualDisk,
)
from dissect.volume.raid.stream import Layout, Level

if TYPE_CHECKING:
from dissect.volume.raid.raid import (
DiskMap,
)

DEFAULT_SECTOR_SIZE = 512

DECADE = 3600 * 24 * (365 * 10 + 2)
Expand Down
2 changes: 2 additions & 0 deletions dissect/volume/disk/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

from dissect.volume.disk.disk import Disk
from dissect.volume.disk.partition import Partition
from dissect.volume.exceptions import DiskError
Expand Down
1 change: 0 additions & 1 deletion dissect/volume/disk/partition.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,6 @@ def open(self) -> BinaryIO:

def translate_partition_type(type: int | str | UUID, prepend_type: bool = True) -> str:
"""Translate a partition type to a human-readable format."""

if not isinstance(type, str):
name = PARTITION_TYPES.get(type, "Unknown")
type = hex(type) if isinstance(type, int) else type
Expand Down
2 changes: 2 additions & 0 deletions dissect/volume/disk/schemes/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

from dissect.volume.disk.schemes.apm import APM
from dissect.volume.disk.schemes.bsd import BSD
from dissect.volume.disk.schemes.gpt import GPT
Expand Down
3 changes: 3 additions & 0 deletions dissect/volume/exceptions.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
from __future__ import annotations


class Error(Exception):
pass

Expand Down
2 changes: 2 additions & 0 deletions dissect/volume/lvm/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

from dissect.volume.lvm.lvm2 import LVM2
from dissect.volume.lvm.physical import LVM2Device

Expand Down
2 changes: 1 addition & 1 deletion dissect/volume/lvm/lvm2.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@


class LVM2:
"""Logical Volume Manager"""
"""Logical Volume Manager."""

def __init__(self, fh: list[BinaryIO | LVM2Device] | BinaryIO | LVM2Device):
self.fh = [fh] if not isinstance(fh, list) else fh
Expand Down
2 changes: 2 additions & 0 deletions dissect/volume/md/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

from dissect.volume.md.md import MD, MDPhysicalDisk

__all__ = [
Expand Down
1 change: 0 additions & 1 deletion dissect/volume/md/md.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,6 @@ def find_super_block(fh: BinaryIO) -> tuple[int | None, int | None, int | None]:
A tuple containing the sector, major version, and minor version of the super block, or a
tuple of ``None`` if no super block was found.
"""

size = fh.size if (hasattr(fh, "size") and fh.size is not None) else fh.seek(0, io.SEEK_END)
size //= SECTOR_SIZE

Expand Down
1 change: 0 additions & 1 deletion dissect/volume/raid/stream.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,6 @@ def __init__(self, virtual_disk: VirtualDisk):

def _get_stripe_read_info(self, offset: int) -> tuple[int, int, int, int, int | None]:
"""Calculate the stripe, offset in the stripe, data disk, parity disk and "Q" parity disk for a given sector."""

# Reference: raid5_compute_sector
stripe_size = self.virtual_disk.stripe_size
raid_disks = self.virtual_disk.num_disks
Expand Down
13 changes: 9 additions & 4 deletions dissect/volume/vinum/vinum.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,28 @@
from dissect.volume.raid.raid import (
RAID,
Configuration,
DiskMap,
PhysicalDisk,
VirtualDisk,
)
from dissect.volume.raid.stream import Layout, Level
from dissect.volume.vinum.c_vinum import MAGIC_ACTIVE, MAGIC_INACTIVE, c_vinum
from dissect.volume.vinum.config import (
SD,
Plex,
PlexOrg,
PlexState,
SDState,
Volume,
parse_vinum_config,
)

if TYPE_CHECKING:
from dissect.volume.raid.raid import (
DiskMap,
)
from dissect.volume.vinum.config import (
SD,
Plex,
Volume,
)

VinumPhysicalDiskDescriptor = BinaryIO | "VinumPhysicalDisk"

log = logging.getLogger(__name__)
Expand Down
7 changes: 5 additions & 2 deletions dissect/volume/vss.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@
import uuid
from collections import defaultdict
from functools import cached_property
from typing import BinaryIO
from typing import TYPE_CHECKING, BinaryIO

from dissect.cstruct import Structure, cstruct
from dissect.cstruct import cstruct
from dissect.util.stream import AlignedStream

from dissect.volume.exceptions import Error

if TYPE_CHECKING:
from dissect.cstruct import Structure

log = logging.getLogger(__name__)
log.setLevel(os.getenv("DISSECT_LOG_VSS", "CRITICAL"))

Expand Down
22 changes: 20 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -94,16 +94,33 @@ select = [
"SLOT",
"SIM",
"TID",
"TCH",
"TC",
"PTH",
"PLC",
"TRY",
"FLY",
"PERF",
"FURB",
"RUF",
"D"
]
ignore = ["E203", "B904", "UP024", "ANN002", "ANN003", "ANN204", "ANN401", "SIM105", "TRY003"]
ignore = [
"E203", "B904", "UP024", "ANN002", "ANN003", "ANN204", "ANN401", "SIM105", "TRY003", "PLC0415",
# Ignore some pydocstyle rules for now as they require a larger cleanup
"D1",
"D205",
"D301",
"D417",
# Seems bugged: https://github.com/astral-sh/ruff/issues/16824
"D402",
]
future-annotations = true

[tool.ruff.lint.pydocstyle]
convention = "google"

[tool.ruff.lint.flake8-type-checking]
strict = true

[tool.ruff.lint.per-file-ignores]
"tests/docs/**" = ["INP001"]
Expand All @@ -112,6 +129,7 @@ ignore = ["E203", "B904", "UP024", "ANN002", "ANN003", "ANN204", "ANN401", "SIM1
[tool.ruff.lint.isort]
known-first-party = ["dissect.volume"]
known-third-party = ["dissect"]
required-imports = ["from __future__ import annotations"]

[tool.setuptools.packages.find]
include = ["dissect.*"]
Expand Down
2 changes: 2 additions & 0 deletions tests/_docs/conf.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

extensions = [
"autoapi.extension",
"sphinx.ext.autodoc",
Expand Down
5 changes: 4 additions & 1 deletion tests/vinum/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
PlexState,
SDState,
TokenizeError,
VinumConfigs,
Volume,
VolumeState,
_parse_plex_config,
Expand All @@ -30,6 +29,10 @@
if TYPE_CHECKING:
from collections.abc import Iterator

from dissect.volume.vinum.config import (
VinumConfigs,
)

CONF_TS = datetime.min.replace(tzinfo=timezone.utc)


Expand Down
7 changes: 5 additions & 2 deletions tests/vinum/test_vinum.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

from datetime import datetime, timezone
from io import BytesIO
from typing import BinaryIO
from typing import TYPE_CHECKING, BinaryIO

import pytest

from dissect.volume.raid.stream import Layout, Level
from dissect.volume.raid.stream import Level
from dissect.volume.vinum.c_vinum import c_vinum
from dissect.volume.vinum.vinum import (
Vinum,
Expand All @@ -15,6 +15,9 @@
VinumPlexDisk,
)

if TYPE_CHECKING:
from dissect.volume.raid.stream import Layout


@pytest.mark.parametrize(
(
Expand Down
Loading