Show More
@@ -10,12 +10,18 b' Inheritance diagram:' | |||
|
10 | 10 | import os |
|
11 | 11 | import re |
|
12 | 12 | import string |
|
13 | import sys | |
|
13 | 14 | import textwrap |
|
14 | 15 | import warnings |
|
15 | 16 | from string import Formatter |
|
16 | 17 | from pathlib import Path |
|
17 | 18 | |
|
18 | from typing import List, Dict, Tuple, Optional, cast | |
|
19 | from typing import List, Dict, Tuple, Optional, cast, Sequence, Mapping, Any | |
|
20 | ||
|
21 | if sys.version_info < (3, 12): | |
|
22 | from typing_extensions import Self | |
|
23 | else: | |
|
24 | from typing import Self | |
|
19 | 25 | |
|
20 | 26 | |
|
21 | 27 | class LSString(str): |
@@ -34,7 +40,11 b' class LSString(str):' | |||
|
34 | 40 | Such strings are very useful to efficiently interact with the shell, which |
|
35 | 41 | typically only understands whitespace-separated options for commands.""" |
|
36 | 42 | |
|
37 | def get_list(self): | |
|
43 | __list: List[str] | |
|
44 | __spstr: str | |
|
45 | __paths: List[Path] | |
|
46 | ||
|
47 | def get_list(self) -> List[str]: | |
|
38 | 48 | try: |
|
39 | 49 | return self.__list |
|
40 | 50 | except AttributeError: |
@@ -43,7 +53,7 b' class LSString(str):' | |||
|
43 | 53 | |
|
44 | 54 | l = list = property(get_list) |
|
45 | 55 | |
|
46 | def get_spstr(self): | |
|
56 | def get_spstr(self) -> str: | |
|
47 | 57 | try: |
|
48 | 58 | return self.__spstr |
|
49 | 59 | except AttributeError: |
@@ -52,12 +62,12 b' class LSString(str):' | |||
|
52 | 62 | |
|
53 | 63 | s = spstr = property(get_spstr) |
|
54 | 64 | |
|
55 | def get_nlstr(self): | |
|
65 | def get_nlstr(self) -> Self: | |
|
56 | 66 | return self |
|
57 | 67 | |
|
58 | 68 | n = nlstr = property(get_nlstr) |
|
59 | 69 | |
|
60 | def get_paths(self): | |
|
70 | def get_paths(self) -> List[Path]: | |
|
61 | 71 | try: |
|
62 | 72 | return self.__paths |
|
63 | 73 | except AttributeError: |
@@ -92,12 +102,16 b' class SList(list):' | |||
|
92 | 102 | Any values which require transformations are computed only once and |
|
93 | 103 | cached.""" |
|
94 | 104 | |
|
95 | def get_list(self): | |
|
105 | __spstr: str | |
|
106 | __nlstr: str | |
|
107 | __paths: List[Path] | |
|
108 | ||
|
109 | def get_list(self) -> Self: | |
|
96 | 110 | return self |
|
97 | 111 | |
|
98 | 112 | l = list = property(get_list) |
|
99 | 113 | |
|
100 | def get_spstr(self): | |
|
114 | def get_spstr(self) -> str: | |
|
101 | 115 | try: |
|
102 | 116 | return self.__spstr |
|
103 | 117 | except AttributeError: |
@@ -106,7 +120,7 b' class SList(list):' | |||
|
106 | 120 | |
|
107 | 121 | s = spstr = property(get_spstr) |
|
108 | 122 | |
|
109 | def get_nlstr(self): | |
|
123 | def get_nlstr(self) -> str: | |
|
110 | 124 | try: |
|
111 | 125 | return self.__nlstr |
|
112 | 126 | except AttributeError: |
@@ -115,7 +129,7 b' class SList(list):' | |||
|
115 | 129 | |
|
116 | 130 | n = nlstr = property(get_nlstr) |
|
117 | 131 | |
|
118 | def get_paths(self): | |
|
132 | def get_paths(self) -> List[Path]: | |
|
119 | 133 | try: |
|
120 | 134 | return self.__paths |
|
121 | 135 | except AttributeError: |
@@ -538,7 +552,9 b' class FullEvalFormatter(Formatter):' | |||
|
538 | 552 | """ |
|
539 | 553 | # copied from Formatter._vformat with minor changes to allow eval |
|
540 | 554 | # and replace the format_spec code with slicing |
|
541 | def vformat(self, format_string: str, args, kwargs) -> str: | |
|
555 | def vformat( | |
|
556 | self, format_string: str, args: Sequence[Any], kwargs: Mapping[str, Any] | |
|
557 | ) -> str: | |
|
542 | 558 | result = [] |
|
543 | 559 | conversion: Optional[str] |
|
544 | 560 | for literal_text, field_name, format_spec, conversion in self.parse( |
@@ -559,7 +575,7 b' class FullEvalFormatter(Formatter):' | |||
|
559 | 575 | |
|
560 | 576 | # eval the contents of the field for the object |
|
561 | 577 | # to be formatted |
|
562 | obj = eval(field_name, kwargs) | |
|
578 | obj = eval(field_name, dict(kwargs)) | |
|
563 | 579 | |
|
564 | 580 | # do any conversion on the resulting object |
|
565 | 581 | # type issue in typeshed, fined in https://github.com/python/typeshed/pull/11377 |
@@ -629,7 +645,9 b' def _col_chunks(l, max_rows, row_first=False):' | |||
|
629 | 645 | yield l[i:(i + max_rows)] |
|
630 | 646 | |
|
631 | 647 | |
|
632 | def _find_optimal(rlist, row_first: bool, separator_size: int, displaywidth: int): | |
|
648 | def _find_optimal( | |
|
649 | rlist: List[str], row_first: bool, separator_size: int, displaywidth: int | |
|
650 | ) -> Dict[str, Any]: | |
|
633 | 651 | """Calculate optimal info to columnize a list of string""" |
|
634 | 652 | for max_rows in range(1, len(rlist) + 1): |
|
635 | 653 | col_widths = list(map(max, _col_chunks(rlist, max_rows, row_first))) |
@@ -653,7 +671,12 b' def _get_or_default(mylist, i, default=None):' | |||
|
653 | 671 | |
|
654 | 672 | |
|
655 | 673 | def compute_item_matrix( |
|
656 | items, row_first: bool = False, empty=None, *, separator_size=2, displaywidth=80 | |
|
674 | items: List[str], | |
|
675 | row_first: bool = False, | |
|
676 | empty: Optional[str] = None, | |
|
677 | *, | |
|
678 | separator_size: int = 2, | |
|
679 | displaywidth: int = 80, | |
|
657 | 680 | ) -> Tuple[List[List[int]], Dict[str, int]]: |
|
658 | 681 | """Returns a nested list, and info to columnize items |
|
659 | 682 | |
@@ -710,7 +733,7 b' def compute_item_matrix(' | |||
|
710 | 733 | category=PendingDeprecationWarning, |
|
711 | 734 | ) |
|
712 | 735 | info = _find_optimal( |
|
713 | list(map(len, items)), | |
|
736 | list(map(len, items)), # type: ignore[arg-type] | |
|
714 | 737 | row_first, |
|
715 | 738 | separator_size=separator_size, |
|
716 | 739 | displaywidth=displaywidth, |
@@ -728,7 +751,7 b' def columnize(' | |||
|
728 | 751 | separator: str = " ", |
|
729 | 752 | displaywidth: int = 80, |
|
730 | 753 | spread: bool = False, |
|
731 | ): | |
|
754 | ) -> str: | |
|
732 | 755 | """Transform a list of strings into a single string with columns. |
|
733 | 756 | |
|
734 | 757 | Parameters |
@@ -136,6 +136,164 b' exclude = [' | |||
|
136 | 136 | 'IPython/utils/_process_win32.py', |
|
137 | 137 | 'IPython/utils/path.py', |
|
138 | 138 | ] |
|
139 | disallow_untyped_defs = true | |
|
140 | # ignore_errors = false | |
|
141 | # ignore_missing_imports = false | |
|
142 | # disallow_untyped_calls = true | |
|
143 | disallow_incomplete_defs = true | |
|
144 | # check_untyped_defs = true | |
|
145 | # disallow_untyped_decorators = true | |
|
146 | warn_redundant_casts = true | |
|
147 | ||
|
148 | [[tool.mypy.overrides]] | |
|
149 | module = [ | |
|
150 | "IPython.utils.text", | |
|
151 | ] | |
|
152 | disallow_untyped_defs = false | |
|
153 | check_untyped_defs = false | |
|
154 | disallow_untyped_decorators = false | |
|
155 | ||
|
156 | ||
|
157 | # gloabl ignore error | |
|
158 | [[tool.mypy.overrides]] | |
|
159 | module = [ | |
|
160 | "IPython", | |
|
161 | "IPython.conftest", | |
|
162 | "IPython.core.alias", | |
|
163 | "IPython.core.async_helpers", | |
|
164 | "IPython.core.autocall", | |
|
165 | "IPython.core.builtin_trap", | |
|
166 | "IPython.core.compilerop", | |
|
167 | "IPython.core.completer", | |
|
168 | "IPython.core.completerlib", | |
|
169 | "IPython.core.crashhandler", | |
|
170 | "IPython.core.debugger", | |
|
171 | "IPython.core.display", | |
|
172 | "IPython.core.display_functions", | |
|
173 | "IPython.core.display_trap", | |
|
174 | "IPython.core.displayhook", | |
|
175 | "IPython.core.displaypub", | |
|
176 | "IPython.core.events", | |
|
177 | "IPython.core.excolors", | |
|
178 | "IPython.core.extensions", | |
|
179 | "IPython.core.formatters", | |
|
180 | "IPython.core.getipython", | |
|
181 | "IPython.core.guarded_eval", | |
|
182 | "IPython.core.history", | |
|
183 | "IPython.core.historyapp", | |
|
184 | "IPython.core.hooks", | |
|
185 | "IPython.core.inputsplitter", | |
|
186 | "IPython.core.inputtransformer", | |
|
187 | "IPython.core.inputtransformer2", | |
|
188 | "IPython.core.interactiveshell", | |
|
189 | "IPython.core.logger", | |
|
190 | "IPython.core.macro", | |
|
191 | "IPython.core.magic", | |
|
192 | "IPython.core.magic_arguments", | |
|
193 | "IPython.core.magics.ast_mod", | |
|
194 | "IPython.core.magics.auto", | |
|
195 | "IPython.core.magics.basic", | |
|
196 | "IPython.core.magics.code", | |
|
197 | "IPython.core.magics.config", | |
|
198 | "IPython.core.magics.display", | |
|
199 | "IPython.core.magics.execution", | |
|
200 | "IPython.core.magics.extension", | |
|
201 | "IPython.core.magics.history", | |
|
202 | "IPython.core.magics.logging", | |
|
203 | "IPython.core.magics.namespace", | |
|
204 | "IPython.core.magics.osm", | |
|
205 | "IPython.core.magics.packaging", | |
|
206 | "IPython.core.magics.pylab", | |
|
207 | "IPython.core.magics.script", | |
|
208 | "IPython.core.oinspect", | |
|
209 | "IPython.core.page", | |
|
210 | "IPython.core.payload", | |
|
211 | "IPython.core.payloadpage", | |
|
212 | "IPython.core.prefilter", | |
|
213 | "IPython.core.profiledir", | |
|
214 | "IPython.core.prompts", | |
|
215 | "IPython.core.pylabtools", | |
|
216 | "IPython.core.shellapp", | |
|
217 | "IPython.core.splitinput", | |
|
218 | "IPython.core.ultratb", | |
|
219 | "IPython.extensions.autoreload", | |
|
220 | "IPython.extensions.storemagic", | |
|
221 | "IPython.external.qt_for_kernel", | |
|
222 | "IPython.external.qt_loaders", | |
|
223 | "IPython.lib.backgroundjobs", | |
|
224 | "IPython.lib.clipboard", | |
|
225 | "IPython.lib.demo", | |
|
226 | "IPython.lib.display", | |
|
227 | "IPython.lib.editorhooks", | |
|
228 | "IPython.lib.guisupport", | |
|
229 | "IPython.lib.latextools", | |
|
230 | "IPython.lib.lexers", | |
|
231 | "IPython.lib.pretty", | |
|
232 | "IPython.paths", | |
|
233 | "IPython.sphinxext.ipython_console_highlighting", | |
|
234 | "IPython.terminal.debugger", | |
|
235 | "IPython.terminal.embed", | |
|
236 | "IPython.terminal.interactiveshell", | |
|
237 | "IPython.terminal.magics", | |
|
238 | "IPython.terminal.prompts", | |
|
239 | "IPython.terminal.pt_inputhooks", | |
|
240 | "IPython.terminal.pt_inputhooks.asyncio", | |
|
241 | "IPython.terminal.pt_inputhooks.glut", | |
|
242 | "IPython.terminal.pt_inputhooks.gtk", | |
|
243 | "IPython.terminal.pt_inputhooks.gtk3", | |
|
244 | "IPython.terminal.pt_inputhooks.gtk4", | |
|
245 | "IPython.terminal.pt_inputhooks.osx", | |
|
246 | "IPython.terminal.pt_inputhooks.pyglet", | |
|
247 | "IPython.terminal.pt_inputhooks.qt", | |
|
248 | "IPython.terminal.pt_inputhooks.tk", | |
|
249 | "IPython.terminal.pt_inputhooks.wx", | |
|
250 | "IPython.terminal.ptutils", | |
|
251 | "IPython.terminal.shortcuts", | |
|
252 | "IPython.terminal.shortcuts.auto_match", | |
|
253 | "IPython.terminal.shortcuts.auto_suggest", | |
|
254 | "IPython.terminal.shortcuts.filters", | |
|
255 | "IPython.utils._process_cli", | |
|
256 | "IPython.utils._process_common", | |
|
257 | "IPython.utils._process_emscripten", | |
|
258 | "IPython.utils._process_posix", | |
|
259 | "IPython.utils.capture", | |
|
260 | "IPython.utils.coloransi", | |
|
261 | "IPython.utils.contexts", | |
|
262 | "IPython.utils.data", | |
|
263 | "IPython.utils.decorators", | |
|
264 | "IPython.utils.dir2", | |
|
265 | "IPython.utils.encoding", | |
|
266 | "IPython.utils.frame", | |
|
267 | "IPython.utils.generics", | |
|
268 | "IPython.utils.importstring", | |
|
269 | "IPython.utils.io", | |
|
270 | "IPython.utils.ipstruct", | |
|
271 | "IPython.utils.module_paths", | |
|
272 | "IPython.utils.openpy", | |
|
273 | "IPython.utils.process", | |
|
274 | "IPython.utils.py3compat", | |
|
275 | "IPython.utils.sentinel", | |
|
276 | "IPython.utils.shimmodule", | |
|
277 | "IPython.utils.strdispatch", | |
|
278 | "IPython.utils.sysinfo", | |
|
279 | "IPython.utils.syspathcontext", | |
|
280 | "IPython.utils.tempdir", | |
|
281 | "IPython.utils.terminal", | |
|
282 | "IPython.utils.timing", | |
|
283 | "IPython.utils.tokenutil", | |
|
284 | "IPython.utils.tz", | |
|
285 | "IPython.utils.ulinecache", | |
|
286 | "IPython.utils.version", | |
|
287 | "IPython.utils.wildcard", | |
|
288 | ||
|
289 | ] | |
|
290 | disallow_untyped_defs = false | |
|
291 | ignore_errors = true | |
|
292 | ignore_missing_imports = true | |
|
293 | disallow_untyped_calls = false | |
|
294 | disallow_incomplete_defs = false | |
|
295 | check_untyped_defs = false | |
|
296 | disallow_untyped_decorators = false | |
|
139 | 297 | |
|
140 | 298 | [tool.pytest.ini_options] |
|
141 | 299 | addopts = [ |
General Comments 0
You need to be logged in to leave comments.
Login now