Open zstd compressed tar archive name for reading or writing. Appending is not allowed.
(cls, name, mode="r", fileobj=None, level=None, options=None,
zstd_dict=None, **kwargs)
| 2065 | |
| 2066 | @classmethod |
| 2067 | def zstopen(cls, name, mode="r", fileobj=None, level=None, options=None, |
| 2068 | zstd_dict=None, **kwargs): |
| 2069 | """Open zstd compressed tar archive name for reading or writing. |
| 2070 | Appending is not allowed. |
| 2071 | """ |
| 2072 | if mode not in ("r", "w", "x"): |
| 2073 | raise ValueError("mode must be 'r', 'w' or 'x'") |
| 2074 | |
| 2075 | try: |
| 2076 | from compression.zstd import ZstdFile, ZstdError |
| 2077 | except ImportError: |
| 2078 | raise CompressionError("compression.zstd module is not available") from None |
| 2079 | |
| 2080 | fileobj = ZstdFile( |
| 2081 | fileobj or name, |
| 2082 | mode, |
| 2083 | level=level, |
| 2084 | options=options, |
| 2085 | zstd_dict=zstd_dict |
| 2086 | ) |
| 2087 | |
| 2088 | try: |
| 2089 | t = cls.taropen(name, mode, fileobj, **kwargs) |
| 2090 | except (ZstdError, EOFError) as e: |
| 2091 | fileobj.close() |
| 2092 | if mode == 'r': |
| 2093 | raise ReadError("not a zstd file") from e |
| 2094 | raise |
| 2095 | except Exception: |
| 2096 | fileobj.close() |
| 2097 | raise |
| 2098 | t._extfileobj = False |
| 2099 | return t |
| 2100 | |
| 2101 | # All *open() methods are registered here. |
| 2102 | OPEN_METH = { |
nothing calls this directly
no test coverage detected