Spaces:
Running
Running
from importlib.metadata import entry_points | |
from . import caching | |
from ._version import __version__ # noqa: F401 | |
from .callbacks import Callback | |
from .compression import available_compressions | |
from .core import get_fs_token_paths, open, open_files, open_local, url_to_fs | |
from .exceptions import FSTimeoutError | |
from .mapping import FSMap, get_mapper | |
from .registry import ( | |
available_protocols, | |
filesystem, | |
get_filesystem_class, | |
register_implementation, | |
registry, | |
) | |
from .spec import AbstractFileSystem | |
__all__ = [ | |
"AbstractFileSystem", | |
"FSTimeoutError", | |
"FSMap", | |
"filesystem", | |
"register_implementation", | |
"get_filesystem_class", | |
"get_fs_token_paths", | |
"get_mapper", | |
"open", | |
"open_files", | |
"open_local", | |
"registry", | |
"caching", | |
"Callback", | |
"available_protocols", | |
"available_compressions", | |
"url_to_fs", | |
] | |
def process_entries(): | |
if entry_points is not None: | |
try: | |
eps = entry_points() | |
except TypeError: | |
pass # importlib-metadata < 0.8 | |
else: | |
if hasattr(eps, "select"): # Python 3.10+ / importlib_metadata >= 3.9.0 | |
specs = eps.select(group="fsspec.specs") | |
else: | |
specs = eps.get("fsspec.specs", []) | |
registered_names = {} | |
for spec in specs: | |
err_msg = f"Unable to load filesystem from {spec}" | |
name = spec.name | |
if name in registered_names: | |
continue | |
registered_names[name] = True | |
register_implementation( | |
name, | |
spec.value.replace(":", "."), | |
errtxt=err_msg, | |
# We take our implementations as the ones to overload with if | |
# for some reason we encounter some, may be the same, already | |
# registered | |
clobber=True, | |
) | |
process_entries() | |