Coverage for src/hdmf/common/io/resources.py: 100%

30 statements  

« prev     ^ index     » next       coverage.py v7.2.5, created at 2023-07-25 05:02 +0000

1from .. import register_map 

2from ..resources import ExternalResources, KeyTable, FileTable, ObjectTable, ObjectKeyTable, EntityTable, EntityKeyTable 

3from ...build import ObjectMapper 

4 

5 

6@register_map(ExternalResources) 

7class ExternalResourcesMap(ObjectMapper): 

8 

9 def construct_helper(self, name, parent_builder, table_cls, manager): 

10 """Create a new instance of table_cls with data from parent_builder[name]. 

11 

12 The DatasetBuilder for name is associated with data_type Data and container class Data, 

13 but users should use the more specific table_cls for these datasets. 

14 """ 

15 parent = manager._get_proxy_builder(parent_builder) 

16 builder = parent_builder[name] 

17 src = builder.source 

18 oid = builder.attributes.get(self.spec.id_key()) 

19 kwargs = dict(name=builder.name, data=builder.data) 

20 return self.__new_container__(table_cls, src, parent, oid, **kwargs) 

21 

22 @ObjectMapper.constructor_arg('keys') 

23 def keys(self, builder, manager): 

24 return self.construct_helper('keys', builder, KeyTable, manager) 

25 

26 @ObjectMapper.constructor_arg('files') 

27 def files(self, builder, manager): 

28 return self.construct_helper('files', builder, FileTable, manager) 

29 

30 @ObjectMapper.constructor_arg('entities') 

31 def entities(self, builder, manager): 

32 return self.construct_helper('entities', builder, EntityTable, manager) 

33 

34 @ObjectMapper.constructor_arg('objects') 

35 def objects(self, builder, manager): 

36 return self.construct_helper('objects', builder, ObjectTable, manager) 

37 

38 @ObjectMapper.constructor_arg('object_keys') 

39 def object_keys(self, builder, manager): 

40 return self.construct_helper('object_keys', builder, ObjectKeyTable, manager) 

41 

42 @ObjectMapper.constructor_arg('entity_keys') 

43 def entity_keys(self, builder, manager): 

44 return self.construct_helper('entity_keys', builder, EntityKeyTable, manager)