Skip to content

Commit cafa87c

Browse files
committed
Do not fail if modules don't have __version__ (fixes #1001)
… even if they should.
1 parent 7c9e851 commit cafa87c

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

bpython/args.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import sys
3838
from pathlib import Path
3939
from typing import Tuple, List, Optional, NoReturn, Callable
40+
from types import ModuleType
4041

4142
from . import __version__, __copyright__
4243
from .config import default_config_path, Config
@@ -67,6 +68,13 @@ def copyright_banner() -> str:
6768
return _("{} See AUTHORS.rst for details.").format(__copyright__)
6869

6970

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+
7078
Options = Tuple[str, str, Callable[[argparse._ArgumentGroup], None]]
7179

7280

@@ -211,27 +219,27 @@ def callback(group):
211219
try:
212220
import curtsies
213221

214-
logger.info("curtsies: %s", curtsies.__version__)
222+
log_version(curtsies, "curtsies")
215223
except ImportError:
216224
# may happen on Windows
217225
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")
223231

224232
# versions of optional dependencies
225233
try:
226234
import pyperclip
227235

228-
logger.info("pyperclip: %s", pyperclip.__version__) # type: ignore
236+
log_version(pyperclip, "pyperclip")
229237
except ImportError:
230238
logger.info("pyperclip: not available")
231239
try:
232240
import jedi
233241

234-
logger.info("jedi: %s", jedi.__version__)
242+
log_version(jedi, "jedi")
235243
except ImportError:
236244
logger.info("jedi: not available")
237245
try:

0 commit comments

Comments
 (0)