Coverage for python/lsst/ctrl/execute/namedClassFactory.py: 21%

12 statements  

« prev     ^ index     » next       coverage.py v7.2.1, created at 2023-03-12 01:44 -0800

1# 

2# LSST Data Management System 

3# Copyright 2008-2016 LSST Corporation. 

4# 

5# This product includes software developed by the 

6# LSST Project (http://www.lsst.org/). 

7# 

8# This program is free software: you can redistribute it and/or modify 

9# it under the terms of the GNU General Public License as published by 

10# the Free Software Foundation, either version 3 of the License, or 

11# (at your option) any later version. 

12# 

13# This program is distributed in the hope that it will be useful, 

14# but WITHOUT ANY WARRANTY; without even the implied warranty of 

15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

16# GNU General Public License for more details. 

17# 

18# You should have received a copy of the LSST License Statement and 

19# the GNU General Public License along with this program. If not, 

20# see <http://www.lsstcorp.org/LegalNotices/>. 

21# 

22 

23 

24class NamedClassFactory: 

25 """Create a new "name" class object 

26 

27 Parameters 

28 ---------- 

29 name : `str` 

30 the fully qualified name of an object 

31 

32 Returns 

33 ------- 

34 classobj : `object` 

35 an object of the specified name 

36 """ 

37 

38 def createClass(name): 

39 dot = name.rindex('.') 

40 pack = name[0:dot] 

41 modname = name[dot+1:] 

42 modname = modname[0].capitalize()+modname[1:] 

43 # -1 is no longer accepted in python 3 

44 # module = __import__(name, globals(), locals(), [modname], -1) 

45 module = __import__(name, globals(), locals(), [modname], 0) 

46 classobj = getattr(module, modname) 

47 if classobj is None: 

48 raise RuntimeError("Attempt to instantiate class \"" + name + 

49 "\" failed. Could not find that class.") 

50 return classobj 

51 

52 # static method to createClasso 

53 

54 createClass = staticmethod(createClass)