Source code for pynq.metadata.metadata_view
# Copyright (C) 2022 Xilinx, Inc
# SPDX-License-Identifier: BSD-3-Clause
from pynqmetadata import Module
from pynqmetadata.errors import FeatureNotYetImplemented
from typing import Dict
import json
def _default_repr(obj):
return repr(obj)
[docs]class MetadataView:
""" a base class for all the view objects onto the metadata.
Contains commen operations across all the view classes,
such as __getitem__ and iterators.
"""
def __init__(self, module:Module)->None:
self._md = module
@property
def view(self) -> Dict:
""" Returns the dictionary view of the metadata,
this should be overloaded in the subclass to actually
implement the view """
return {}
def __len__(self):
return len(self.view)
def __iter__(self):
for item in self.view:
yield item
def _repr_json_(self) -> Dict:
return json.loads(json.dumps(self.view, default=_default_repr))
def __getitem__(self, key:str):
return self.view[key]
def __setitem__(self, key:str, value: object)->None:
""" TODO: needs to send a value into the metadata model, bypassing ip_dict,
this will require translation in the other direction """
raise FeatureNotYetImplemented("MetadataDictViews are currently only read only")