Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/fsspec/__init__.py: 69%
29 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-08 06:40 +0000
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-08 06:40 +0000
1from importlib.metadata import entry_points
3from . import _version, caching
4from .callbacks import Callback
5from .compression import available_compressions
6from .core import get_fs_token_paths, open, open_files, open_local
7from .exceptions import FSTimeoutError
8from .mapping import FSMap, get_mapper
9from .registry import (
10 available_protocols,
11 filesystem,
12 get_filesystem_class,
13 register_implementation,
14 registry,
15)
16from .spec import AbstractFileSystem
18__version__ = _version.get_versions()["version"]
20__all__ = [
21 "AbstractFileSystem",
22 "FSTimeoutError",
23 "FSMap",
24 "filesystem",
25 "register_implementation",
26 "get_filesystem_class",
27 "get_fs_token_paths",
28 "get_mapper",
29 "open",
30 "open_files",
31 "open_local",
32 "registry",
33 "caching",
34 "Callback",
35 "available_protocols",
36 "available_compressions",
37]
40def process_entries():
41 if entry_points is not None:
42 try:
43 eps = entry_points()
44 except TypeError:
45 pass # importlib-metadata < 0.8
46 else:
47 if hasattr(eps, "select"): # Python 3.10+ / importlib_metadata >= 3.9.0
48 specs = eps.select(group="fsspec.specs")
49 else:
50 specs = eps.get("fsspec.specs", [])
51 registered_names = {}
52 for spec in specs:
53 err_msg = f"Unable to load filesystem from {spec}"
54 name = spec.name
55 if name in registered_names:
56 continue
57 registered_names[name] = True
58 register_implementation(
59 name,
60 spec.value.replace(":", "."),
61 errtxt=err_msg,
62 # We take our implementations as the ones to overload with if
63 # for some reason we encounter some, may be the same, already
64 # registered
65 clobber=True,
66 )
69process_entries()