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

12 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-10-14 02:01 -0700

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 @staticmethod 

39 def createClass(name): 

40 dot = name.rindex(".") 

41 pack = name[0:dot] 

42 modname = name[dot + 1 :] 

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

44 # -1 is no longer accepted in python 3 

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

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

47 classobj = getattr(module, modname) 

48 if classobj is None: 

49 raise RuntimeError(f"Attempt to instantiate class {name!r} failed. Could not find that class.") 

50 return classobj