def __init__(self) -> None: self.storage_cache = Cache.DictStorageCache() self.profile_properties = dict() self.__storage_system = FileStorageSystem.MemoryPersistentStorageSystem( library_properties=self.profile_properties) self.__storage_system.load_properties() # these contain the data for each project. self.x_project_properties = dict() self.x_data_properties_map = dict() self.x_data_map = dict() self.x_trash_map = dict() # these contain the data for the first created project. they also facilitate legacy project testing. self.project_uuid = None self.project_properties = None self.data_properties_map = None self.data_map = None self.trash_map = None self._test_data_read_event = Event.Event() self.__profile = None self.__items_exit = list()
def __init__(self, storage_system=None, storage_cache=None, *, auto_project: bool = True): super().__init__() self.define_root_context() self.define_type("profile") self.define_relationship("workspaces", WorkspaceLayout.factory) self.define_relationship("data_groups", DataGroup.data_group_factory) self.define_relationship("project_references", project_reference_factory, insert=self.__insert_project_reference, remove=self.__remove_project_reference) self.define_property("workspace_uuid", converter=Converter.UuidToStringConverter()) self.define_property( "data_item_references", dict(), hidden=True ) # map string key to data item, used for data acquisition channels self.define_property( "data_item_variables", dict(), hidden=True ) # map string key to data item, used for reference in scripts self.define_property("target_project_reference_uuid", converter=Converter.UuidToStringConverter(), changed=self.__property_changed) self.define_property("work_project_reference_uuid", converter=Converter.UuidToStringConverter(), changed=self.__property_changed) self.define_property("closed_items", list()) self.storage_system = storage_system or FileStorageSystem.MemoryPersistentStorageSystem( ) self.storage_system.load_properties() self.__work_project_reference: typing.Optional[ProjectReference] = None self.__target_project_reference: typing.Optional[ ProjectReference] = None self.storage_cache = storage_cache or Cache.DictStorageCache( ) # need to deallocate self.set_storage_system(self.storage_system) self.__document_model = None self.profile_context = None # helper object to produce the projects sequence oo = Observer.ObserverBuilder() oo.source(self).ordered_sequence_from_array("project_references").map( oo.x.prop("project")).filter(lambda x: x is not None).trampoline( self, "projects") self.__projects_observer = oo.make_observable() self.__is_read = False if auto_project: self.profile_context = MemoryProfileContext() project_reference = self.add_project_memory() self.work_project_reference_uuid = project_reference.uuid self.target_project_reference_uuid = project_reference.uuid
def __init__( self, storage_system: typing.Optional[ FileStorageSystem.PersistentStorageSystem] = None, storage_cache: typing.Optional[Cache.CacheLike] = None, *, profile_context: typing.Optional[ProfileContext] = None) -> None: super().__init__() self.__class__.count += 1 self.define_root_context() self.define_type("profile") self.define_property("last_project_reference", converter=Converter.UuidToStringConverter(), hidden=True) self.define_property("work_project_reference_uuid", converter=Converter.UuidToStringConverter(), hidden=True) self.define_property("closed_items", list(), hidden=True) self.define_property("script_items_updated", False, changed=self.__property_changed, hidden=True) self.define_relationship("project_references", project_reference_factory, insert=self.__insert_project_reference, remove=self.__remove_project_reference, hidden=True) self.define_relationship( "script_items", typing.cast( typing.Callable[[typing.Callable[[str], str]], typing.Optional[Persistence.PersistentObject]], script_item_factory), hidden=True) self.storage_system = storage_system or FileStorageSystem.MemoryPersistentStorageSystem( ) self.storage_system.load_properties() self.storage_cache: typing.Any = storage_cache or Cache.DictStorageCache( ) # need to deallocate self.set_storage_system(self.storage_system) self.profile_context = None # helper object to produce the projects sequence oo = Observer.ObserverBuilder() oo.source(typing.cast( Observer.ItemValue, self)).ordered_sequence_from_array("project_references").map( oo.x.prop("project")).filter( lambda x: x is not None).trampoline(self, "projects") self.__projects_observer = oo.make_observable() if profile_context: self.profile_context = profile_context self.add_project_memory()
def __init__(self, storage_system=None, storage_cache=None, *, profile_context: typing.Optional[ProfileContext] = None): super().__init__() self.__class__.count += 1 self.define_root_context() self.define_type("profile") self.define_relationship("project_references", project_reference_factory, insert=self.__insert_project_reference, remove=self.__remove_project_reference) self.define_property("last_project_reference", converter=Converter.UuidToStringConverter()) self.define_property("work_project_reference_uuid", converter=Converter.UuidToStringConverter()) self.define_property("closed_items", list()) self.storage_system = storage_system or FileStorageSystem.MemoryPersistentStorageSystem( ) self.storage_system.load_properties() self.storage_cache = storage_cache or Cache.DictStorageCache( ) # need to deallocate self.set_storage_system(self.storage_system) self.profile_context = None # helper object to produce the projects sequence oo = Observer.ObserverBuilder() oo.source(self).ordered_sequence_from_array("project_references").map( oo.x.prop("project")).filter(lambda x: x is not None).trampoline( self, "projects") self.__projects_observer = oo.make_observable() if profile_context: self.profile_context = profile_context self.add_project_memory()