|
42 | 42 | # Enable .zst support if pyzstd installed. |
43 | 43 | try: |
44 | 44 | from pyzstd import ZstdFile |
| 45 | + HAVE_ZSTD = True |
45 | 46 | except ImportError: |
46 | | - pass |
| 47 | + HAVE_ZSTD = False |
47 | 48 |
|
48 | 49 | def _gzip_open(filename, mode='rb', compresslevel=9, keep_open=False): |
49 | 50 |
|
@@ -82,19 +83,21 @@ class Opener(object): |
82 | 83 | """ |
83 | 84 | gz_def = (_gzip_open, ('mode', 'compresslevel', 'keep_open')) |
84 | 85 | bz2_def = (BZ2File, ('mode', 'buffering', 'compresslevel')) |
85 | | - zstd_def = (ZstdFile, ('mode', 'level_or_option')) |
86 | 86 | compress_ext_map = { |
87 | 87 | '.gz': gz_def, |
88 | 88 | '.bz2': bz2_def, |
89 | | - '.zst': zstd_def, |
90 | 89 | None: (open, ('mode', 'buffering')) # default |
91 | 90 | } |
| 91 | + if HAVE_ZSTD: # add zst to ext map, if library exists |
| 92 | + zstd_def = (ZstdFile, ('mode', 'level_or_option')) |
| 93 | + compress_ext_map['.zst'] = zstd_def |
92 | 94 | #: default compression level when writing gz and bz2 files |
93 | 95 | default_compresslevel = 1 |
94 | 96 | #: default option for zst files |
95 | 97 | default_zst_compresslevel = 3 |
96 | 98 | default_level_or_option = {"rb": None, "r": None, |
97 | | - "wb": default_zst_compresslevel, "w": default_zst_compresslevel} |
| 99 | + "wb": default_zst_compresslevel, |
| 100 | + "w": default_zst_compresslevel} |
98 | 101 | #: whether to ignore case looking for compression extensions |
99 | 102 | compress_ext_icase = True |
100 | 103 |
|
|
0 commit comments