Coverage for python/lsst/meas/transiNet/modelPackages/storageAdapterFactory.py: 46%

11 statements  

« prev     ^ index     » next       coverage.py v7.2.5, created at 2023-05-19 05:06 -0700

1from .storageAdapterLocal import StorageAdapterLocal 

2from .storageAdapterNeighbor import StorageAdapterNeighbor 

3 

4 

5class StorageAdapterFactory: 

6 """A factory for storage adapters, which represent possible storage 

7 types/modes for ModelPackages. 

8 

9 As of March 2023, the following modes are supported: 

10 neighbor 

11 A ModelPackage stored inside the ``rbClassifier_data`` Git repository. 

12 local 

13 A ModelPackage stored inside the ``meas_transiNet`` Git repository. 

14 """ 

15 

16 # A dict mapping storage modes to storage adapter class. 

17 # 

18 # This is necessary to guarantee that the user does not 

19 # specify a too customized storage mode -- to try to prevent 

20 # source injection attacks. 

21 storageAdapterClasses = { 

22 'local': StorageAdapterLocal, 

23 'neighbor': StorageAdapterNeighbor, 

24 } 

25 

26 @classmethod 

27 def create(cls, modelPackageName, storageMode): 

28 """ Factory method to create a storage adapter 

29 based on the storageMode parameter. 

30 

31 Parameters 

32 ---------- 

33 modelPackageName : `str` 

34 The name of the model package. 

35 storageMode : `str` 

36 The storage mode for the model package. 

37 

38 Returns 

39 ------- 

40 storageAdapter : `StorageAdapterBase` 

41 A storage adapter object, based on the storageMode parameter. It is 

42 an instance of one of the classes in the 

43 storageAdapterFactory.storageAdapterClasses dict. 

44 """ 

45 # Check that the storage mode is valid. 

46 # Convert to lower case to make it case insensitive. 

47 storageMode = storageMode.lower() 

48 if storageMode not in cls.storageAdapterClasses: 

49 raise ValueError('Invalid storage mode: ' + storageMode) 

50 

51 # Create and return the storage adapter. 

52 storageAdapter = cls.storageAdapterClasses[storageMode](modelPackageName) 

53 return storageAdapter