Source code for openff.evaluator.storage.attributes

"""
A collection of descriptors used to add extra metadata
to storage class attributes.
"""
from openff.evaluator.attributes import UNDEFINED, Attribute


[docs]class FilePath(str): """Represents a string file path.""" pass
[docs]class StorageAttribute(Attribute): """A descriptor used to mark attributes of a class as those which store information about a cached piece of data. """
[docs] def __init__( self, docstring, type_hint, optional=False, ): super().__init__(docstring, type_hint, UNDEFINED, optional)
def _set_value(self, instance, value): # Handle the special case of turning strings # into file path objects for convenience. if ( isinstance(value, str) and isinstance(self.type_hint, type) and issubclass(self.type_hint, FilePath) ): # This is necessary as the json library currently doesn't # support custom serialization of IntFlag or IntEnum. value = FilePath(value) super(StorageAttribute, self)._set_value(instance, value)
[docs]class QueryAttribute(Attribute): """A descriptor used to add additional metadata to attributes of a storage query. """
[docs] def __init__(self, docstring, type_hint, optional=False, custom_match=False): """Initializes self. Parameters ---------- custom_match: bool Whether a custom behaviour will be implemented when matching this attribute against the matching data object attribute. """ super().__init__(docstring, type_hint, UNDEFINED, optional) self.custom_match = custom_match