Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/rich/__init__.py: 39%

33 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-07 06:35 +0000

1"""Rich text and beautiful formatting in the terminal.""" 

2 

3import os 

4from typing import IO, TYPE_CHECKING, Any, Callable, Optional, Union 

5 

6from ._extension import load_ipython_extension # noqa: F401 

7 

8__all__ = ["get_console", "reconfigure", "print", "inspect", "print_json"] 

9 

10if TYPE_CHECKING: 

11 from .console import Console 

12 

13# Global console used by alternative print 

14_console: Optional["Console"] = None 

15 

16try: 

17 _IMPORT_CWD = os.path.abspath(os.getcwd()) 

18except FileNotFoundError: 

19 # Can happen if the cwd has been deleted 

20 _IMPORT_CWD = "" 

21 

22 

23def get_console() -> "Console": 

24 """Get a global :class:`~rich.console.Console` instance. This function is used when Rich requires a Console, 

25 and hasn't been explicitly given one. 

26 

27 Returns: 

28 Console: A console instance. 

29 """ 

30 global _console 

31 if _console is None: 

32 from .console import Console 

33 

34 _console = Console() 

35 

36 return _console 

37 

38 

39def reconfigure(*args: Any, **kwargs: Any) -> None: 

40 """Reconfigures the global console by replacing it with another. 

41 

42 Args: 

43 *args (Any): Positional arguments for the replacement :class:`~rich.console.Console`. 

44 **kwargs (Any): Keyword arguments for the replacement :class:`~rich.console.Console`. 

45 """ 

46 from rich.console import Console 

47 

48 new_console = Console(*args, **kwargs) 

49 _console = get_console() 

50 _console.__dict__ = new_console.__dict__ 

51 

52 

53def print( 

54 *objects: Any, 

55 sep: str = " ", 

56 end: str = "\n", 

57 file: Optional[IO[str]] = None, 

58 flush: bool = False, 

59) -> None: 

60 r"""Print object(s) supplied via positional arguments. 

61 This function has an identical signature to the built-in print. 

62 For more advanced features, see the :class:`~rich.console.Console` class. 

63 

64 Args: 

65 sep (str, optional): Separator between printed objects. Defaults to " ". 

66 end (str, optional): Character to write at end of output. Defaults to "\\n". 

67 file (IO[str], optional): File to write to, or None for stdout. Defaults to None. 

68 flush (bool, optional): Has no effect as Rich always flushes output. Defaults to False. 

69 

70 """ 

71 from .console import Console 

72 

73 write_console = get_console() if file is None else Console(file=file) 

74 return write_console.print(*objects, sep=sep, end=end) 

75 

76 

77def print_json( 

78 json: Optional[str] = None, 

79 *, 

80 data: Any = None, 

81 indent: Union[None, int, str] = 2, 

82 highlight: bool = True, 

83 skip_keys: bool = False, 

84 ensure_ascii: bool = False, 

85 check_circular: bool = True, 

86 allow_nan: bool = True, 

87 default: Optional[Callable[[Any], Any]] = None, 

88 sort_keys: bool = False, 

89) -> None: 

90 """Pretty prints JSON. Output will be valid JSON. 

91 

92 Args: 

93 json (str): A string containing JSON. 

94 data (Any): If json is not supplied, then encode this data. 

95 indent (int, optional): Number of spaces to indent. Defaults to 2. 

96 highlight (bool, optional): Enable highlighting of output: Defaults to True. 

97 skip_keys (bool, optional): Skip keys not of a basic type. Defaults to False. 

98 ensure_ascii (bool, optional): Escape all non-ascii characters. Defaults to False. 

99 check_circular (bool, optional): Check for circular references. Defaults to True. 

100 allow_nan (bool, optional): Allow NaN and Infinity values. Defaults to True. 

101 default (Callable, optional): A callable that converts values that can not be encoded 

102 in to something that can be JSON encoded. Defaults to None. 

103 sort_keys (bool, optional): Sort dictionary keys. Defaults to False. 

104 """ 

105 

106 get_console().print_json( 

107 json, 

108 data=data, 

109 indent=indent, 

110 highlight=highlight, 

111 skip_keys=skip_keys, 

112 ensure_ascii=ensure_ascii, 

113 check_circular=check_circular, 

114 allow_nan=allow_nan, 

115 default=default, 

116 sort_keys=sort_keys, 

117 ) 

118 

119 

120def inspect( 

121 obj: Any, 

122 *, 

123 console: Optional["Console"] = None, 

124 title: Optional[str] = None, 

125 help: bool = False, 

126 methods: bool = False, 

127 docs: bool = True, 

128 private: bool = False, 

129 dunder: bool = False, 

130 sort: bool = True, 

131 all: bool = False, 

132 value: bool = True, 

133) -> None: 

134 """Inspect any Python object. 

135 

136 * inspect(<OBJECT>) to see summarized info. 

137 * inspect(<OBJECT>, methods=True) to see methods. 

138 * inspect(<OBJECT>, help=True) to see full (non-abbreviated) help. 

139 * inspect(<OBJECT>, private=True) to see private attributes (single underscore). 

140 * inspect(<OBJECT>, dunder=True) to see attributes beginning with double underscore. 

141 * inspect(<OBJECT>, all=True) to see all attributes. 

142 

143 Args: 

144 obj (Any): An object to inspect. 

145 title (str, optional): Title to display over inspect result, or None use type. Defaults to None. 

146 help (bool, optional): Show full help text rather than just first paragraph. Defaults to False. 

147 methods (bool, optional): Enable inspection of callables. Defaults to False. 

148 docs (bool, optional): Also render doc strings. Defaults to True. 

149 private (bool, optional): Show private attributes (beginning with underscore). Defaults to False. 

150 dunder (bool, optional): Show attributes starting with double underscore. Defaults to False. 

151 sort (bool, optional): Sort attributes alphabetically. Defaults to True. 

152 all (bool, optional): Show all attributes. Defaults to False. 

153 value (bool, optional): Pretty print value. Defaults to True. 

154 """ 

155 _console = console or get_console() 

156 from rich._inspect import Inspect 

157 

158 # Special case for inspect(inspect) 

159 is_inspect = obj is inspect 

160 

161 _inspect = Inspect( 

162 obj, 

163 title=title, 

164 help=is_inspect or help, 

165 methods=is_inspect or methods, 

166 docs=is_inspect or docs, 

167 private=private, 

168 dunder=dunder, 

169 sort=sort, 

170 all=all, 

171 value=value, 

172 ) 

173 _console.print(_inspect) 

174 

175 

176if __name__ == "__main__": # pragma: no cover 

177 print("Hello, **World**")