Skip to content

Commit ec61012

Browse files
committed
feat: add fsspec as required dependency (#1021)
* fsspec requirements * simplify fsspec import * use loop property * correctly create schemes list
1 parent 0b5d8d6 commit ec61012

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

@@ -290,15 +291,7 @@ def regularize_path(path):
290291
_windows_absolute_path_pattern_slash = re.compile(r"^[\\/][A-Za-z]:[\\/]")
291292

292293
_remote_schemes = ["root", "s3", "http", "https"]
293-
_schemes = ["file", *_remote_schemes]
294-
295-
try:
296-
# TODO: remove this try/except when fsspec becomes a required dependency
297-
import fsspec
298-
299-
_schemes = list({*_schemes, *fsspec.available_protocols()})
300-
except ImportError:
301-
pass
294+
_schemes = list({*_remote_schemes, *fsspec.available_protocols()})
302295

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

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
options = dict(uproot.reading.open.defaults, **options)
3031
storage_options = {
3132
k: v
@@ -191,8 +192,6 @@ def closed(self) -> bool:
191192
class FSSpecLoopExecutor(uproot.source.futures.Executor):
192193
@property
193194
def loop(self) -> asyncio.AbstractEventLoop:
194-
import fsspec.asyn
195-
196195
return fsspec.asyn.get_loop()
197196

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

0 commit comments

Comments
 (0)