mirror of
https://github.com/volatilityfoundation/volatility3.git
synced 2026-08-17 20:35:40 +02:00
Merge pull request #1877 from volatilityfoundation/issues/issue1874
Convert ObjectInfo form NamedTuple to Dataclass to attempt to work better with pypy3
This commit is contained in:
@@ -7,8 +7,9 @@ import abc
|
||||
import collections
|
||||
import collections.abc
|
||||
import contextlib
|
||||
import dataclasses
|
||||
import logging
|
||||
from typing import Any, Dict, List, Mapping, NamedTuple, Optional
|
||||
from typing import Any, Dict, List, Mapping, Optional
|
||||
|
||||
from volatility3.framework import constants, interfaces
|
||||
|
||||
@@ -52,7 +53,8 @@ class ReadOnlyMapping(collections.abc.Mapping):
|
||||
return dict(self) == dict(other)
|
||||
|
||||
|
||||
class ObjectInformation(NamedTuple):
|
||||
@dataclasses.dataclass
|
||||
class ObjectInformation:
|
||||
"""Contains common information useful/pertinent only to an individual
|
||||
object (like an instance)
|
||||
|
||||
@@ -71,12 +73,12 @@ class ObjectInformation(NamedTuple):
|
||||
size: Optional[int] = None
|
||||
|
||||
def __getitem__(self, key):
|
||||
if key in self._fields:
|
||||
if key in self:
|
||||
return getattr(self, key)
|
||||
raise KeyError(f"NamedTuple does not have a key {key}")
|
||||
raise KeyError(f"No {key} present in ObjectInformation")
|
||||
|
||||
def __contains__(self, key):
|
||||
return key in self._fields
|
||||
return key in [field.name for field in dataclasses.fields(self)]
|
||||
|
||||
|
||||
class ObjectInterface(metaclass=abc.ABCMeta):
|
||||
|
||||
Reference in New Issue
Block a user