Skip to content

Commit 83b239d

Browse files
authored
feat: add fsspec as required dependency (#1021)
* fsspec requirements * simplify fsspec import * use loop property * correctly create schemes list
1 parent 983b986 commit 83b239d

File tree

3 files changed

+6
-14
lines changed

3 files changed

+6
-14
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ dependencies = [
3636
"awkward>=2.4.6",
3737
"importlib-metadata;python_version<\"3.8\"",
3838
"numpy",
39+
"fsspec",
3940
"packaging",
4041
"typing_extensions>=4.1.0; python_version < \"3.11\""
4142
]
@@ -61,7 +62,6 @@ test = [
6162
"lz4",
6263
"minio",
6364
"aiohttp; python_version<\"3.12\"", # asyncio not available
64-
"fsspec",
6565
"fsspec-xrootd",
6666
"s3fs; python_version<\"3.12\"", # asyncio not available
6767
"paramiko",

src/uproot/_util.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from collections.abc import Iterable
2020
from urllib.parse import unquote, urlparse
2121

22+
import fsspec
2223
import numpy
2324
import packaging.version
2425

@@ -282,15 +283,7 @@ def regularize_path(path):
282283
_windows_absolute_path_pattern_slash = re.compile(r"^[\\/][A-Za-z]:[\\/]")
283284

284285
_remote_schemes = ["root", "s3", "http", "https"]
285-
_schemes = ["file", *_remote_schemes]
286-
287-
try:
288-
# TODO: remove this try/except when fsspec becomes a required dependency
289-
import fsspec
290-
291-
_schemes = list({*_schemes, *fsspec.available_protocols()})
292-
except ImportError:
293-
pass
286+
_schemes = list({*_remote_schemes, *fsspec.available_protocols()})
294287

295288
_uri_scheme = re.compile("^(" + "|".join([re.escape(x) for x in _schemes]) + ")://")
296289

src/uproot/source/fsspec.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import concurrent.futures
77
import queue
88

9+
import fsspec
10+
import fsspec.asyn
11+
912
import uproot
1013
import uproot.source.chunk
1114
import uproot.source.futures
@@ -24,8 +27,6 @@ class FSSpecSource(uproot.source.chunk.Source):
2427
"""
2528

2629
def __init__(self, file_path: str, **options):
27-
import fsspec.core
28-
2930
default_options = uproot.reading.open.defaults
3031

3132
exclude_keys = set(default_options.keys())
@@ -188,8 +189,6 @@ def closed(self) -> bool:
188189
class FSSpecLoopExecutor(uproot.source.futures.Executor):
189190
@property
190191
def loop(self) -> asyncio.AbstractEventLoop:
191-
import fsspec.asyn
192-
193192
return fsspec.asyn.get_loop()
194193

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

0 commit comments

Comments
 (0)