Skip to content

Commit

Permalink
feat: add fsspec as required dependency (#1021)
Browse files Browse the repository at this point in the history
* fsspec requirements

* simplify fsspec import

* use loop property

* correctly create schemes list
  • Loading branch information
lobis committed Nov 15, 2023
1 parent 6b6fa94 commit 472be82
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 14 deletions.
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ dependencies = [
"awkward>=2.4.6",
"importlib-metadata;python_version<\"3.8\"",
"numpy",
"fsspec",
"packaging",
"typing_extensions>=4.1.0; python_version < \"3.11\""
]
Expand All @@ -61,7 +62,6 @@ test = [
"lz4",
"minio",
"aiohttp; python_version<\"3.12\"", # asyncio not available
"fsspec",
"fsspec-xrootd",
"s3fs; python_version<\"3.12\"", # asyncio not available
"paramiko",
Expand Down
11 changes: 2 additions & 9 deletions src/uproot/_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from collections.abc import Iterable
from urllib.parse import unquote, urlparse

import fsspec
import numpy
import packaging.version

Expand Down Expand Up @@ -275,15 +276,7 @@ def regularize_path(path):
_windows_absolute_path_pattern_slash = re.compile(r"^[\\/][A-Za-z]:[\\/]")

_remote_schemes = ["root", "s3", "http", "https"]
_schemes = ["file", *_remote_schemes]

try:
# TODO: remove this try/except when fsspec becomes a required dependency
import fsspec

_schemes = list({*_schemes, *fsspec.available_protocols()})
except ImportError:
pass
_schemes = list({*_remote_schemes, *fsspec.available_protocols()})

_uri_scheme = re.compile("^(" + "|".join([re.escape(x) for x in _schemes]) + ")://")
_uri_scheme_chain = re.compile(
Expand Down
7 changes: 3 additions & 4 deletions src/uproot/source/fsspec.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
import concurrent.futures
import queue

import fsspec
import fsspec.asyn

import uproot
import uproot.source.chunk
import uproot.source.futures
Expand All @@ -24,8 +27,6 @@ class FSSpecSource(uproot.source.chunk.Source):
"""

def __init__(self, file_path: str, **options):
import fsspec.core

default_options = uproot.reading.open.defaults

exclude_keys = set(default_options.keys())
Expand Down Expand Up @@ -189,8 +190,6 @@ def closed(self) -> bool:
class FSSpecLoopExecutor(uproot.source.futures.Executor):
@property
def loop(self) -> asyncio.AbstractEventLoop:
import fsspec.asyn

return fsspec.asyn.get_loop()

def submit(self, coroutine) -> concurrent.futures.Future:
Expand Down

0 comments on commit 472be82

Please sign in to comment.