Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 755ab4f

Browse files
committed
refactor(typing): Include all suffixes in Extension
Also simplifies and removes outdated `Extension`-related tooling
1 parent 2b8bf5e commit 755ab4f

File tree

5 files changed

+14
-42
lines changed

5 files changed

+14
-42
lines changed

altair/datasets/_reader.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
module_not_found,
4242
)
4343
from altair.datasets._readimpl import IntoFrameT, is_available
44-
from altair.datasets._typing import EXTENSION_SUFFIXES
4544

4645
if TYPE_CHECKING:
4746
import sys
@@ -443,8 +442,12 @@ def _into_constraints(
443442
elif suffix.startswith("."):
444443
m = {"dataset_name": name, "suffix": suffix}
445444
else:
445+
from typing import get_args
446+
447+
from altair.datasets._typing import Extension
448+
446449
msg = (
447-
f"Expected 'suffix' to be one of {EXTENSION_SUFFIXES!r},\n"
450+
f"Expected 'suffix' to be one of {get_args(Extension)!r},\n"
448451
f"but got: {suffix!r}"
449452
)
450453
raise TypeError(msg)

altair/datasets/_typing.py

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,20 @@
44
from __future__ import annotations
55

66
import sys
7-
from typing import Any, Literal
7+
from typing import Literal
88

99
if sys.version_info >= (3, 14):
1010
from typing import TypedDict
1111
else:
1212
from typing_extensions import TypedDict
1313

14-
if sys.version_info >= (3, 13):
15-
from typing import TypeIs
16-
else:
17-
from typing_extensions import TypeIs
18-
1914
if sys.version_info >= (3, 10):
2015
from typing import TypeAlias
2116
else:
2217
from typing_extensions import TypeAlias
2318

2419

25-
__all__ = ["EXTENSION_SUFFIXES", "Dataset", "Extension", "Metadata", "is_ext_read"]
20+
__all__ = ["Dataset", "Extension", "Metadata"]
2621

2722
Dataset: TypeAlias = Literal[
2823
"7zip",
@@ -98,18 +93,7 @@
9893
"world-110m",
9994
"zipcodes",
10095
]
101-
Extension: TypeAlias = Literal[".arrow", ".csv", ".json", ".parquet", ".tsv"]
102-
EXTENSION_SUFFIXES: tuple[
103-
Literal[".arrow"],
104-
Literal[".csv"],
105-
Literal[".json"],
106-
Literal[".parquet"],
107-
Literal[".tsv"],
108-
] = (".arrow", ".csv", ".json", ".parquet", ".tsv")
109-
110-
111-
def is_ext_read(suffix: Any) -> TypeIs[Extension]:
112-
return suffix in {".arrow", ".csv", ".json", ".parquet", ".tsv"}
96+
Extension: TypeAlias = Literal[".arrow", ".csv", ".json", ".parquet", ".png", ".tsv"]
11397

11498

11599
class Metadata(TypedDict, total=False):

tests/test_datasets.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
from altair.datasets import Loader
1818
from altair.datasets._exceptions import AltairDatasetsError
19-
from altair.datasets._typing import Dataset, Metadata, is_ext_read
19+
from altair.datasets._typing import Dataset, Metadata
2020
from tests import no_xdist, skip_requires_pyarrow
2121
from tools import fs
2222

@@ -441,10 +441,7 @@ def test_reader_cache_exhaustive(
441441

442442
# NOTE: Approximating all datasets downloaded
443443
assert len(cached_paths) >= 70
444-
assert all(
445-
bool(fp.exists() and is_ext_read(fp.suffix) and fp.stat().st_size)
446-
for fp in load.cache
447-
)
444+
assert all(bool(fp.exists() and fp.stat().st_size) for fp in load.cache)
448445
# NOTE: Confirm this is a no-op
449446
load.cache.download_all()
450447
assert len(cached_paths) == len(tuple(load.cache))

tools/datasets/__init__.py

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -190,13 +190,6 @@ def generate_typing(self, dpkg: datapackage.DataPackage) -> None:
190190
indent = " " * 4
191191
NAME = "Dataset"
192192
EXT = "Extension"
193-
EXT_TYPES = dpkg.extensions()
194-
EXTENSION_SUFFIXES = "EXTENSION_SUFFIXES"
195-
EXTENSION_TYPE_TP = (
196-
f"tuple[{', '.join(f'Literal[{el!r}]' for el in EXT_TYPES)}]"
197-
)
198-
EXTENSION_GUARD = "is_ext_read"
199-
200193
FIELD = "FlFieldStr"
201194
FIELD_TYPES = (
202195
"integer",
@@ -215,17 +208,13 @@ def generate_typing(self, dpkg: datapackage.DataPackage) -> None:
215208
f"{HEADER_COMMENT}",
216209
"from __future__ import annotations\n",
217210
"import sys",
218-
"from typing import Any, Literal, TYPE_CHECKING",
211+
"from typing import Literal, TYPE_CHECKING",
219212
utils.import_typing_extensions((3, 14), "TypedDict"),
220-
utils.import_typing_extensions((3, 13), "TypeIs"),
221213
utils.import_typing_extensions((3, 10), "TypeAlias"),
222214
"\n",
223-
f"__all__ = {[NAME, EXT, dpkg._NAME_TYPED_DICT, EXTENSION_GUARD, EXTENSION_SUFFIXES]}\n",
215+
f"__all__ = {[NAME, EXT, dpkg._NAME_TYPED_DICT]}\n",
224216
utils.spell_literal_alias(NAME, dpkg.dataset_names()),
225-
utils.spell_literal_alias(EXT, EXT_TYPES),
226-
f"{EXTENSION_SUFFIXES}: {EXTENSION_TYPE_TP} = {EXT_TYPES!r}",
227-
f"def {EXTENSION_GUARD}(suffix: Any) -> TypeIs[{EXT}]:\n"
228-
f"{indent}return suffix in set({EXT_TYPES!r})\n",
217+
utils.spell_literal_alias(EXT, dpkg.extensions()),
229218
dpkg.typed_dict(),
230219
utils.spell_literal_alias(FIELD, FIELD_TYPES),
231220
'"""\n'

tools/datasets/datapackage.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,7 @@ def dataset_names(self) -> Iterable[str]:
103103

104104
def extensions(self) -> tuple[str, ...]:
105105
return tuple(
106-
self.core.filter(is_image=False)
107-
.select(col("suffix").unique().sort())
106+
self.core.select(col("suffix").unique().sort())
108107
.collect()
109108
.to_series()
110109
.to_list()

0 commit comments

Comments
 (0)