diff --git a/dissect/executable/__init__.py b/dissect/executable/__init__.py index f9c465a..e397845 100644 --- a/dissect/executable/__init__.py +++ b/dissect/executable/__init__.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from dissect.executable.elf.elf import ELF from dissect.executable.pe.pe import PE diff --git a/dissect/executable/elf/__init__.py b/dissect/executable/elf/__init__.py index ac24548..90c4f6b 100644 --- a/dissect/executable/elf/__init__.py +++ b/dissect/executable/elf/__init__.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from dissect.executable.elf.elf import ( ELF, Section, diff --git a/dissect/executable/elf/c_elf.py b/dissect/executable/elf/c_elf.py index 8e7e43b..4d8bb74 100644 --- a/dissect/executable/elf/c_elf.py +++ b/dissect/executable/elf/c_elf.py @@ -1,7 +1,12 @@ -from enum import Flag, IntEnum +from __future__ import annotations + +from typing import TYPE_CHECKING from dissect.cstruct import cstruct +if TYPE_CHECKING: + from enum import Flag, IntEnum + elf_32_def = """ typedef uint32 Elf32_Addr; typedef uint16 Elf32_Half; diff --git a/dissect/executable/exception.py b/dissect/executable/exception.py index b0fb678..f57bc26 100644 --- a/dissect/executable/exception.py +++ b/dissect/executable/exception.py @@ -1,3 +1,6 @@ +from __future__ import annotations + + class Error(Exception): """Base exception for this module.""" diff --git a/dissect/executable/pe/__init__.py b/dissect/executable/pe/__init__.py index 1c31270..51d69b2 100644 --- a/dissect/executable/pe/__init__.py +++ b/dissect/executable/pe/__init__.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from dissect.executable.pe.pe import PE __all__ = [ diff --git a/dissect/executable/pe/directory/__init__.py b/dissect/executable/pe/directory/__init__.py index 907f6fd..9e7b797 100644 --- a/dissect/executable/pe/directory/__init__.py +++ b/dissect/executable/pe/directory/__init__.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from dissect.executable.pe.directory.base import DataDirectory from dissect.executable.pe.directory.basereloc import BaseRelocationDirectory from dissect.executable.pe.directory.bound_import import BoundImportDirectory diff --git a/dissect/executable/pe/pe.py b/dissect/executable/pe/pe.py index 469a418..bc8c4c2 100644 --- a/dissect/executable/pe/pe.py +++ b/dissect/executable/pe/pe.py @@ -5,7 +5,7 @@ from functools import cached_property from typing import TYPE_CHECKING, BinaryIO -from dissect.util.stream import AlignedStream, BufferedStream, RangeStream +from dissect.util.stream import AlignedStream, BufferedStream from dissect.util.ts import from_unix from dissect.executable.exception import InvalidSignatureError @@ -30,6 +30,8 @@ if TYPE_CHECKING: import datetime + from dissect.util.stream import RangeStream + class PE: """PE file parser. diff --git a/pyproject.toml b/pyproject.toml index be1ad15..85460d9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -94,7 +94,7 @@ select = [ "SLOT", "SIM", "TID", - "TCH", + "TC", "PTH", "PLC", "TRY", @@ -102,8 +102,25 @@ select = [ "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"] @@ -112,6 +129,7 @@ ignore = ["E203", "B904", "UP024", "ANN002", "ANN003", "ANN204", "ANN401", "SIM1 [tool.ruff.lint.isort] known-first-party = ["dissect.executable"] known-third-party = ["dissect"] +required-imports = ["from __future__ import annotations"] [tool.setuptools.packages.find] include = ["dissect.*"] diff --git a/tests/_docs/conf.py b/tests/_docs/conf.py index 4bd4f7b..97bc5d4 100644 --- a/tests/_docs/conf.py +++ b/tests/_docs/conf.py @@ -1,3 +1,5 @@ +from __future__ import annotations + project = "dissect.executable" extensions = [