]>
jfr.im git - dlqueue.git/blob - venv/lib/python3.11/site-packages/pip/_vendor/rich/_log_render.py
1 from datetime
import datetime
2 from typing
import Iterable
, List
, Optional
, TYPE_CHECKING
, Union
, Callable
5 from .text
import Text
, TextType
8 from .console
import Console
, ConsoleRenderable
, RenderableType
9 from .table
import Table
11 FormatTimeCallable
= Callable
[[datetime
], Text
]
17 show_time
: bool = True,
18 show_level
: bool = False,
19 show_path
: bool = True,
20 time_format
: Union
[str, FormatTimeCallable
] = "[%x %X]",
21 omit_repeated_times
: bool = True,
22 level_width
: Optional
[int] = 8,
24 self
.show_time
= show_time
25 self
.show_level
= show_level
26 self
.show_path
= show_path
27 self
.time_format
= time_format
28 self
.omit_repeated_times
= omit_repeated_times
29 self
.level_width
= level_width
30 self
._last
_time
: Optional
[Text
] = None
35 renderables
: Iterable
["ConsoleRenderable"],
36 log_time
: Optional
[datetime
] = None,
37 time_format
: Optional
[Union
[str, FormatTimeCallable
]] = None,
39 path
: Optional
[str] = None,
40 line_no
: Optional
[int] = None,
41 link_path
: Optional
[str] = None,
43 from .containers
import Renderables
44 from .table
import Table
46 output
= Table
.grid(padding
=(0, 1))
49 output
.add_column(style
="log.time")
51 output
.add_column(style
="log.level", width
=self
.level_width
)
52 output
.add_column(ratio
=1, style
="log.message", overflow
="fold")
53 if self
.show_path
and path
:
54 output
.add_column(style
="log.path")
55 row
: List
["RenderableType"] = []
57 log_time
= log_time
or console
.get_datetime()
58 time_format
= time_format
or self
.time_format
59 if callable(time_format
):
60 log_time_display
= time_format(log_time
)
62 log_time_display
= Text(log_time
.strftime(time_format
))
63 if log_time_display
== self
._last
_time
and self
.omit_repeated_times
:
64 row
.append(Text(" " * len(log_time_display
)))
66 row
.append(log_time_display
)
67 self
._last
_time
= log_time_display
71 row
.append(Renderables(renderables
))
72 if self
.show_path
and path
:
75 path
, style
=f
"link file://{link_path}" if link_path
else ""
81 style
=f
"link file://{link_path}#{line_no}" if link_path
else "",
89 if __name__
== "__main__": # pragma: no cover
90 from pip
._vendor
.rich
.console
import Console
93 c
.print("[on blue]Hello", justify
="right")
94 c
.log("[on blue]hello", justify
="right")