|
94 | 94 |
|
95 | 95 | # registry of I/O engines. It is populated the first time a non-core
|
96 | 96 | # pandas engine is used
|
97 |
| -_io_engines = None |
| 97 | +_io_engines: dict[str, Any] | None = None |
98 | 98 |
|
99 | 99 |
|
100 | 100 | @dataclasses.dataclass
|
@@ -1290,7 +1290,7 @@ def dedup_names(
|
1290 | 1290 | return names
|
1291 | 1291 |
|
1292 | 1292 |
|
1293 |
| -def _get_io_engine(name: str): |
| 1293 | +def _get_io_engine(name: str) -> Any: |
1294 | 1294 | """
|
1295 | 1295 | Return an I/O engine by its name.
|
1296 | 1296 |
|
@@ -1338,7 +1338,10 @@ def _get_io_engine(name: str):
|
1338 | 1338 | if _io_engines is None:
|
1339 | 1339 | _io_engines = {}
|
1340 | 1340 | for entry_point in entry_points().select(group="pandas.io_engine"):
|
1341 |
| - package_name = entry_point.dist.metadata["Name"] |
| 1341 | + if entry_point.dist: |
| 1342 | + package_name = entry_point.dist.metadata["Name"] |
| 1343 | + else: |
| 1344 | + package_name = None |
1342 | 1345 | if entry_point.name in _io_engines:
|
1343 | 1346 | _io_engines[entry_point.name]._packages.append(package_name)
|
1344 | 1347 | else:
|
@@ -1373,7 +1376,9 @@ def _get_io_engine(name: str):
|
1373 | 1376 | return engine
|
1374 | 1377 |
|
1375 | 1378 |
|
1376 |
| -def allow_third_party_engines(skip_engines: list[str] | Callable | None = None): |
| 1379 | +def allow_third_party_engines( |
| 1380 | + skip_engines: list[str] | Callable | None = None, |
| 1381 | +) -> Callable: |
1377 | 1382 | """
|
1378 | 1383 | Decorator to avoid boilerplate code when allowing readers and writers to use
|
1379 | 1384 | third-party engines.
|
@@ -1403,10 +1408,10 @@ def allow_third_party_engines(skip_engines: list[str] | Callable | None = None):
|
1403 | 1408 | ... pass
|
1404 | 1409 | """
|
1405 | 1410 |
|
1406 |
| - def decorator(func): |
| 1411 | + def decorator(func: Callable) -> Callable: |
1407 | 1412 | @functools.wraps(func)
|
1408 |
| - def wrapper(*args, **kwargs): |
1409 |
| - if callable(skip_engines): |
| 1413 | + def wrapper(*args: Any, **kwargs: Any) -> Any: |
| 1414 | + if callable(skip_engines) or skip_engines is None: |
1410 | 1415 | skip_engine = False
|
1411 | 1416 | else:
|
1412 | 1417 | skip_engine = kwargs["engine"] in skip_engines
|
|
0 commit comments