Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/opentelemetry/trace/status.py: 58%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

36 statements  

1# Copyright The OpenTelemetry Authors 

2# 

3# Licensed under the Apache License, Version 2.0 (the "License"); 

4# you may not use this file except in compliance with the License. 

5# You may obtain a copy of the License at 

6# 

7# http://www.apache.org/licenses/LICENSE-2.0 

8# 

9# Unless required by applicable law or agreed to in writing, software 

10# distributed under the License is distributed on an "AS IS" BASIS, 

11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

12# See the License for the specific language governing permissions and 

13# limitations under the License. 

14 

15import enum 

16import logging 

17import typing 

18 

19logger = logging.getLogger(__name__) 

20 

21 

22class StatusCode(enum.Enum): 

23 """Represents the canonical set of status codes of a finished Span.""" 

24 

25 UNSET = 0 

26 """The default status.""" 

27 

28 OK = 1 

29 """The operation has been validated by an Application developer or Operator to have completed successfully.""" 

30 

31 ERROR = 2 

32 """The operation contains an error.""" 

33 

34 

35class Status: 

36 """Represents the status of a finished Span. 

37 

38 Args: 

39 status_code: The canonical status code that describes the result 

40 status of the operation. 

41 description: An optional description of the status. 

42 """ 

43 

44 def __init__( 

45 self, 

46 status_code: StatusCode = StatusCode.UNSET, 

47 description: typing.Optional[str] = None, 

48 ): 

49 self._status_code = status_code 

50 self._description = None 

51 

52 if description: 

53 if not isinstance(description, str): 

54 logger.warning("Invalid status description type, expected str") 

55 return 

56 if status_code is not StatusCode.ERROR: 

57 logger.warning( 

58 "description should only be set when status_code is set to StatusCode.ERROR" 

59 ) 

60 return 

61 

62 self._description = description 

63 

64 @property 

65 def status_code(self) -> StatusCode: 

66 """Represents the canonical status code of a finished Span.""" 

67 return self._status_code 

68 

69 @property 

70 def description(self) -> typing.Optional[str]: 

71 """Status description""" 

72 return self._description 

73 

74 @property 

75 def is_ok(self) -> bool: 

76 """Returns false if this represents an error, true otherwise.""" 

77 return self.is_unset or self._status_code is StatusCode.OK 

78 

79 @property 

80 def is_unset(self) -> bool: 

81 """Returns true if unset, false otherwise.""" 

82 return self._status_code is StatusCode.UNSET