demandimport: ignore `lzma` module for demandimport stable
authorManuel Jacob <me@manueljacob.de>
Wed, 08 Jul 2020 08:25:30 +0200
branchstable
changeset 45047 40120de810ba
parent 45034 b1a1702262c9
child 45048 2c0043977b6d
demandimport: ignore `lzma` module for demandimport This makes importing the module fail if the `_lzma` module is not present. This makes e.g. tarfile correctly recognize if LZMA support is not present. It changes the exception File "/usr/lib/python3.6/tarfile.py", line 1694, in xzopen fileobj = lzma.LZMAFile(fileobj or name, mode, preset=preset) AttributeError: module 'lzma' has no attribute 'LZMAFile' to the more correct exception File "/usr/lib/python3.6/tarfile.py", line 1692, in xzopen raise CompressionError("lzma module is not available") tarfile.CompressionError: lzma module is not available Also, it prevents that the error "abort: No module named '_lzma'!" is shown when a development warning is to be shown. The reason why that happened is that for showing the warning, we get information about the stack frames from the inspect module, which accesses the `__file__` attribute of all modules in `sys.modules` to build some cache, causing all modules (including `lzma`) to be imported.
hgdemandimport/__init__.py
--- a/hgdemandimport/__init__.py	Fri Jul 03 23:25:19 2020 +0200
+++ b/hgdemandimport/__init__.py	Wed Jul 08 08:25:30 2020 +0200
@@ -56,6 +56,7 @@
     '__builtin__',
     'builtins',
     'urwid.command_map',  # for pudb
+    'lzma',
 }
 
 _pypy = '__pypy__' in sys.builtin_module_names