Coverage for /home/ubuntu/flatiron/python/flatiron/api.py: 90%

41 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-08 21:55 +0000

1''' 

2This moudle is meant as a convenience for programmers who want a clean namespace 

3to sift through. 

4''' 

5 

6import argparse as __argparse 

7import inspect as __inspect 

8import re as __re 

9 

10from flatiron.core.config import PipelineConfig # noqa F401 

11from flatiron.core.dataset import Dataset # noqa F401 

12from flatiron.core.multidataset import MultiDataset # noqa F401 

13from flatiron.core.logging import SlackLogger # noqa F401 

14from flatiron.core.pipeline import PipelineBase # noqa F401 

15# ------------------------------------------------------------------------------ 

16 

17 

18def __create_namespace(module, mode='funcs+classes'): 

19 # type: (object, str) -> __argparse.Namespace 

20 ''' 

21 Creates a clean namespace from a module. 

22 Only grabs public functions from the module. 

23 

24 Args: 

25 module (object): module. 

26 mode (str, optional): Restric object to public functions and/or classes. 

27 Default: 'funcs+classes'. 

28 

29 Returns: 

30 argparse.Namespace: Clean namespace. 

31 ''' 

32 params = {} 

33 for key, val in __inspect.getmembers(module): 

34 func = __inspect.isfunction(val) 

35 clazz = __inspect.isclass(val) 

36 

37 legal = [func, clazz] 

38 if mode == 'funcs': 

39 legal = [func] 

40 elif mode == 'classes': 

41 legal = [clazz] 

42 

43 if any(legal) and __re.search('^[a-zA-Z]', key): 

44 params[key] = val 

45 return __argparse.Namespace(**params) 

46 

47 

48try: 

49 import flatiron.tf.config as __fi_tfconfig # noqa F401 

50 import flatiron.tf.loss as __fi_tfloss # noqa F401 

51 import flatiron.tf.metric as __fi_tfmetric # noqa F401 

52 import flatiron.tf.optimizer as __fi_tfopt # noqa F401 

53 import flatiron.tf.tools as __fi_tftools # noqa F401 

54 import flatiron.tf.models as __fi_tfmodels # noqa F401 

55 

56 tf = __argparse.Namespace( 

57 config=__create_namespace(__fi_tfconfig, 'classes'), 

58 loss=__create_namespace(__fi_tfloss), 

59 metric=__create_namespace(__fi_tfmetric), 

60 models=__fi_tfmodels, 

61 optimizer=__create_namespace(__fi_tfopt), 

62 tools=__create_namespace(__fi_tftools, 'funcs'), 

63 ) 

64except ImportError: 

65 pass 

66 

67try: 

68 import flatiron.torch.config as __fi_torchconfig # noqa F401 

69 import flatiron.torch.loss as __fi_torchloss # noqa F401 

70 import flatiron.torch.metric as __fi_torchmetric # noqa F401 

71 import flatiron.torch.optimizer as __fi_torchopt # noqa F401 

72 import flatiron.torch.tools as __fi_torchtools # noqa F401 

73 import flatiron.torch.models as __fi_torchmodels # noqa F401 

74 

75 torch = __argparse.Namespace( 

76 config=__create_namespace(__fi_torchconfig, 'classes'), 

77 loss=__create_namespace(__fi_torchloss), 

78 metric=__create_namespace(__fi_torchmetric), 

79 models=__fi_torchmodels, 

80 optimizer=__create_namespace(__fi_torchopt), 

81 tools=__create_namespace(__fi_torchtools, 'funcs'), 

82 ) 

83except ImportError: 

84 pass