|
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