Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/click/_textwrap.py: 0%
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
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
1from __future__ import annotations
3import collections.abc as cabc
4import textwrap
5from contextlib import contextmanager
8class TextWrapper(textwrap.TextWrapper):
9 def _handle_long_word(
10 self,
11 reversed_chunks: list[str],
12 cur_line: list[str],
13 cur_len: int,
14 width: int,
15 ) -> None:
16 space_left = max(width - cur_len, 1)
18 if self.break_long_words:
19 last = reversed_chunks[-1]
20 cut = last[:space_left]
21 res = last[space_left:]
22 cur_line.append(cut)
23 reversed_chunks[-1] = res
24 elif not cur_line:
25 cur_line.append(reversed_chunks.pop())
27 @contextmanager
28 def extra_indent(self, indent: str) -> cabc.Iterator[None]:
29 old_initial_indent = self.initial_indent
30 old_subsequent_indent = self.subsequent_indent
31 self.initial_indent += indent
32 self.subsequent_indent += indent
34 try:
35 yield
36 finally:
37 self.initial_indent = old_initial_indent
38 self.subsequent_indent = old_subsequent_indent
40 def indent_only(self, text: str) -> str:
41 rv = []
43 for idx, line in enumerate(text.splitlines()):
44 indent = self.initial_indent
46 if idx > 0:
47 indent = self.subsequent_indent
49 rv.append(f"{indent}{line}")
51 return "\n".join(rv)