@@ -124,7 +124,7 @@ def gzip_open(
124124
125125 filename : str
126126 Path of file to open.
127- mode : Mode
127+ mode : str
128128 Opening mode - either ``rb`` or ``wb``.
129129 compresslevel: int
130130 Compression level when writing.
@@ -153,5 +153,53 @@ def zstd_open(
153153 * ,
154154 level_or_option : int | dict | None = None ,
155155 zstd_dict : zstd .ZstdDict | None = None ,
156+ level : int = None ,
157+ options : dict = None ,
156158) -> zstd .ZstdFile :
157- return zstd .ZstdFile (filename , mode , level_or_option = level_or_option , zstd_dict = zstd_dict )
159+ """Open a zstd file for reading or writing.
160+
161+ The specific object type returned depends on which module out of
162+ ``compression.zstd``, ``backports.zstd``, or ``pyzstd`` is available.
163+
164+ At most one of the ``level_or_options``, ``level``, or
165+ ``options`` parameters may be provided - a ``ValueError`` will be raised
166+ if more than one is specified.
167+
168+ Parameters
169+ ----------
170+
171+ filename : str
172+ Path of file to open.
173+ mode : str
174+ Opening mode.
175+ level_or_option: int or dict
176+ Compression level or dictionary containing options (see also the
177+ level and options parameters).
178+ zstd_dict : ZstdDict
179+ Dictionary used for compression/decompression.
180+ level : int
181+ Compression level when writing.
182+ options : dict
183+ Dictionary of compression/decompression options.
184+ """
185+ level_or_option_provided = sum ((level_or_option is not None ,
186+ level is not None ,
187+ options is not None ))
188+ if level_or_option_provided > 1 :
189+ raise ValueError (
190+ 'Only one of level_or_option, level, or options may be specified' )
191+ # pyzstd accepts level_or_option, but compression.zstd/backports.zstd
192+ # expects level or options
193+ level_or_option_kwarg = {}
194+ if level_or_option_provided == 1 :
195+ level_or_option_value = [v for v in [level_or_option , level , options ]
196+ if v is not None ][0 ]
197+ if zstd .__name__ == 'pyzstd' :
198+ level_or_option_kwarg ['level_or_option' ] = level_or_option_value
199+ else :
200+ if isinstance (level_or_option_value , int ):
201+ level_or_option_kwarg ['level' ] = level_or_option_value
202+ else :
203+ level_or_option_kwarg ['options' ] = level_or_option_value
204+ return zstd .ZstdFile (
205+ filename , mode , zstd_dict = zstd_dict , ** level_or_option_kwarg )
0 commit comments