Skip to content

Commit

Permalink
Merge pull request #30 from ionite34/mappingproxy-info
Browse files Browse the repository at this point in the history
  • Loading branch information
ionite34 committed Jan 23, 2023
2 parents 5b4fdde + bfb7117 commit aebf05b
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
12 changes: 10 additions & 2 deletions src/einspect/structs/mapping_proxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@

from einspect.structs.deco import struct
from einspect.structs.py_dict import PyDictObject
from einspect.structs.py_object import PyObject
from einspect.structs.py_object import Fields, PyObject
from einspect.types import ptr

__all__ = ("MappingProxyObject",)


_KT = TypeVar("_KT")
_VT_co = TypeVar("_VT_co", covariant=True)

Expand All @@ -21,7 +23,13 @@ class MappingProxyObject(PyObject[MappingProxyType, _KT, _VT_co]):
https://github.com/python/cpython/blob/3.11/Objects/descrobject.c#L1027-L1030
"""

mapping: PyDictObject[_KT, _VT_co]
mapping: ptr[PyDictObject[_KT, _VT_co]]

def _format_fields_(self) -> Fields:
return {
**super()._format_fields_(),
"mapping": "*PyDictObject",
}

@classmethod
def from_object(
Expand Down
3 changes: 1 addition & 2 deletions src/einspect/views/view_mapping_proxy.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from __future__ import annotations

from ctypes import pointer
from types import MappingProxyType
from typing import TypeVar

Expand Down Expand Up @@ -47,4 +46,4 @@ def mapping(self) -> dict[_KT, _VT]:
@mapping.setter
@unsafe
def mapping(self, value: dict[_KT, _VT]) -> None:
self._pyobject.mapping = pointer(PyDictObject.from_object(value))
self._pyobject.mapping = PyDictObject.from_object(value).with_ref().as_ref()

0 comments on commit aebf05b

Please sign in to comment.