Coverage for /run/media/veganeco/water/status600.com/pypi/reptilian_climates/modules_series_2/ships/fields/gardens_pip/rich/__init__.py: 15%

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

2

3 import os

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

5

6 from ._extension import load_ipython_extension # noqa: F401

7

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

9

10 if TYPE_CHECKING:

11 from .console import Console

12

13# Global console used by alternative print

14 _console: Optional["Console"] = None

15

16 try:

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

18 except FileNotFoundError:

19 # Can happen if the cwd has been deleted

20 _IMPORT_CWD = ""

21

22

23 def 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

39 def 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

53 def 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

77 def 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

120 def 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

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

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