|
37 | 37 | import sys |
38 | 38 | from pathlib import Path |
39 | 39 | from typing import Tuple, List, Optional, NoReturn, Callable |
| 40 | +from types import ModuleType |
40 | 41 |
|
41 | 42 | from . import __version__, __copyright__ |
42 | 43 | from .config import default_config_path, Config |
@@ -67,6 +68,13 @@ def copyright_banner() -> str: |
67 | 68 | return _("{} See AUTHORS.rst for details.").format(__copyright__) |
68 | 69 |
|
69 | 70 |
|
| 71 | +def log_version(module: ModuleType, name: str) -> None: |
| 72 | + try: |
| 73 | + logger.info("%s: %s", name, module.__version__) # type: ignore |
| 74 | + except AttributeError: |
| 75 | + logger.info("%s: unknown version", name) |
| 76 | + |
| 77 | + |
70 | 78 | Options = Tuple[str, str, Callable[[argparse._ArgumentGroup], None]] |
71 | 79 |
|
72 | 80 |
|
@@ -211,27 +219,27 @@ def callback(group): |
211 | 219 | try: |
212 | 220 | import curtsies |
213 | 221 |
|
214 | | - logger.info("curtsies: %s", curtsies.__version__) |
| 222 | + log_version(curtsies, "curtsies") |
215 | 223 | except ImportError: |
216 | 224 | # may happen on Windows |
217 | 225 | logger.info("curtsies: not available") |
218 | | - logger.info("cwcwidth: %s", cwcwidth.__version__) |
219 | | - logger.info("greenlet: %s", greenlet.__version__) |
220 | | - logger.info("pygments: %s", pygments.__version__) # type: ignore |
221 | | - logger.info("pyxdg: %s", xdg.__version__) # type: ignore |
222 | | - logger.info("requests: %s", requests.__version__) |
| 226 | + log_version(cwcwidth, "cwcwidth") |
| 227 | + log_version(greenlet, "greenlet") |
| 228 | + log_version(pygments, "pygments") |
| 229 | + log_version(xdg, "pyxdg") |
| 230 | + log_version(requests, "requests") |
223 | 231 |
|
224 | 232 | # versions of optional dependencies |
225 | 233 | try: |
226 | 234 | import pyperclip |
227 | 235 |
|
228 | | - logger.info("pyperclip: %s", pyperclip.__version__) # type: ignore |
| 236 | + log_version(pyperclip, "pyperclip") |
229 | 237 | except ImportError: |
230 | 238 | logger.info("pyperclip: not available") |
231 | 239 | try: |
232 | 240 | import jedi |
233 | 241 |
|
234 | | - logger.info("jedi: %s", jedi.__version__) |
| 242 | + log_version(jedi, "jedi") |
235 | 243 | except ImportError: |
236 | 244 | logger.info("jedi: not available") |
237 | 245 | try: |
|
0 commit comments