Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

# This file is part of daf_butler. 

# 

# Developed for the LSST Data Management System. 

# This product includes software developed by the LSST Project 

# (http://www.lsst.org). 

# See the COPYRIGHT file at the top-level directory of this distribution 

# for details of code ownership. 

# 

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

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

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

# (at your option) any later version. 

# 

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

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

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

# GNU General Public License for more details. 

# 

# You should have received a copy of the GNU General Public License 

# along with this program. If not, see <http://www.gnu.org/licenses/>. 

 

""" 

Python classes that can be used to test datastores without requiring 

large external dependencies on python classes such as afw or serialization 

formats such as FITS or HDF5. 

""" 

 

 

class MetricsExample: 

"""Smorgasboard of information that might be the result of some 

processing. 

 

Parameters 

---------- 

summary : `dict` 

Simple dictionary mapping key performance metrics to a scalar 

result. 

output : `dict` 

Structured nested data. 

data : `list`, optional 

Arbitrary array data. 

""" 

 

def __init__(self, summary=None, output=None, data=None): 

self.summary = summary 

self.output = output 

self.data = data 

 

def __eq__(self, other): 

return self.summary == other.summary and self.output == other.output and self.data == other.data 

 

def exportAsDict(self): 

"""Convert object contents to a single python dict.""" 

exportDict = {"summary": self.summary, 

"output": self.output} 

56 ↛ 58line 56 didn't jump to line 58, because the condition on line 56 was never false if self.data is not None: 

exportDict["data"] = list(self.data) 

return exportDict 

 

def _asdict(self): 

"""Convert object contents to a single Python dict. 

 

This interface is used for JSON serialization. 

 

Returns 

------- 

exportDict : `dict` 

Object contents in the form of a dict with keys corresponding 

to object attributes. 

""" 

return self.exportAsDict() 

 

@classmethod 

def makeFromDict(cls, exportDict): 

"""Create a new object from a dict that is compatible with that 

created by `exportAsDict`. 

 

Parameters 

---------- 

exportDict : `dict` 

`dict` with keys "summary", "output", and (optionally) "data". 

 

Returns 

------- 

newobject : `MetricsExample` 

New `MetricsExample` object. 

""" 

data = None 

if "data" in exportDict: 

data = exportDict["data"] 

return cls(exportDict["summary"], exportDict["output"], data)