Skip to content

Commit 6a8edef

Browse files
authored
refactor: flip _compression_to_extension around to support multiple extensions on same compression
co-authored-by: Margarete Dippel <margarete01@users.norepl y.github.com>
1 parent a0d6386 commit 6a8edef

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

pandas/io/common.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,8 @@ def file_path_to_url(path: str) -> str:
446446
return urljoin("file:", pathname2url(path))
447447

448448

449-
_compression_to_extension = {"gzip": ".gz", "bz2": ".bz2", "zip": ".zip", "xz": ".xz"}
449+
_extension_to_compression = {".gz": "gzip", ".bz2": "bz2", ".zip": "zip", ".xz": "xz"}
450+
_supported_compressions = set(_extension_to_compression.values())
450451

451452

452453
def get_compression_method(
@@ -525,20 +526,18 @@ def infer_compression(
525526
return "tar"
526527

527528
# Infer compression from the filename/URL extension
528-
for compression, extension in _compression_to_extension.items():
529+
for extension, compression in _extension_to_compression.items():
529530
if filepath_or_buffer.lower().endswith(extension):
530531
return compression
531532
return None
532533

533534
# Compression has been specified. Check that it's valid
534-
if compression in _compression_to_extension:
535+
if compression in _supported_compressions:
535536
return compression
536537

537538
# https://github.com/python/mypy/issues/5492
538539
# Unsupported operand types for + ("List[Optional[str]]" and "List[str]")
539-
valid = ["infer", None] + sorted(
540-
_compression_to_extension
541-
) # type: ignore[operator]
540+
valid = ["infer", None] + sorted(_supported_compressions) # type: ignore[operator]
542541
msg = (
543542
f"Unrecognized compression type: {compression}\n"
544543
f"Valid compression types are {valid}"
@@ -683,7 +682,7 @@ def get_handle(
683682
ioargs.encoding,
684683
ioargs.mode,
685684
errors,
686-
ioargs.compression["method"] not in _compression_to_extension,
685+
ioargs.compression["method"] not in _supported_compressions,
687686
)
688687

689688
is_path = isinstance(handle, str)

0 commit comments

Comments
 (0)