|
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