]> jfr.im git - dlqueue.git/blame - venv/lib/python3.11/site-packages/pip/_vendor/rich/__init__.py
init: venv aand flask
[dlqueue.git] / venv / lib / python3.11 / site-packages / pip / _vendor / rich / __init__.py
CommitLineData
e0df8241
JR
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 pip._vendor.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 pip._vendor.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**")