Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions fsspec/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,21 @@

__all__ = [
"AbstractFileSystem",
"FSTimeoutError",
"Callback",
"FSMap",
"FSTimeoutError",
"available_compressions",
"available_protocols",
"caching",
"filesystem",
"register_implementation",
"get_filesystem_class",
"get_fs_token_paths",
"get_mapper",
"open",
"open_files",
"open_local",
"register_implementation",
"registry",
"caching",
"Callback",
"available_protocols",
"available_compressions",
"url_to_fs",
]

Expand Down
2 changes: 1 addition & 1 deletion fsspec/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ def open_files(
- For implementations in separate packages see
https://filesystem-spec.readthedocs.io/en/latest/api.html#other-known-implementations
"""
fs, fs_token, paths = get_fs_token_paths(
fs, _fs_token, paths = get_fs_token_paths(
urlpath,
mode,
num=num,
Expand Down
17 changes: 13 additions & 4 deletions fsspec/gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,17 @@ def show(self, threads=False):
class SingleSelect(SigSlot):
"""A multiselect which only allows you to select one item for an event"""

signals = ["_selected", "selected"] # the first is internal
slots = ["set_options", "set_selection", "add", "clear", "select"]
signals: ClassVar[Sequence[str]] = [
"_selected",
"selected",
] # the first is internal
slots: ClassVar[Sequence[str]] = [
"set_options",
"set_selection",
"add",
"clear",
"select",
]

def __init__(self, **kwargs):
self.kwargs = kwargs
Expand Down Expand Up @@ -213,7 +222,7 @@ class FileSelector(SigSlot):
them as the output of a cell, or in a separate browser tab using ``.show()``.
"""

signals = [
signals: ClassVar[Sequence[str]] = [
"protocol_changed",
"selection_changed",
"directory_entered",
Expand All @@ -222,7 +231,7 @@ class FileSelector(SigSlot):
"go_clicked",
"filters_changed",
]
slots = ["set_filters", "go_home"]
slots: ClassVar[Sequence[str]] = ["set_filters", "go_home"]

def __init__(self, url=None, filters=None, ignore=None, kwargs=None):
"""
Expand Down
8 changes: 4 additions & 4 deletions fsspec/implementations/gist.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,16 +148,16 @@ def _get_kwargs_from_urls(path):
"""
so = infer_storage_options(path)
out = {}
if "username" in so and so["username"]:
if so.get("username"):
out["username"] = so["username"]
if "password" in so and so["password"]:
if so.get("password"):
out["token"] = so["password"]
if "host" in so and so["host"]:
if so.get("host"):
# We interpret 'host' as the gist ID
out["gist_id"] = so["host"]

# Extract SHA and filename from path
if "path" in so and so["path"]:
if so.get("path"):
path_parts = so["path"].rsplit("/", 2)[-2:]
if len(path_parts) == 2:
if path_parts[0]: # SHA present
Expand Down
3 changes: 2 additions & 1 deletion fsspec/implementations/memory.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import annotations

import logging
from collections.abc import Sequence
from datetime import datetime, timezone
from errno import ENOTEMPTY
from io import BytesIO
Expand All @@ -22,7 +23,7 @@ class MemoryFileSystem(AbstractFileSystem):
"""

store: ClassVar[dict[str, Any]] = {} # global, do not overwrite!
pseudo_dirs = [""] # global, do not overwrite!
pseudo_dirs: ClassVar[Sequence[str]] = [""] # global, do not overwrite!
protocol = "memory"
root_marker = "/"

Expand Down
2 changes: 1 addition & 1 deletion fsspec/implementations/reference.py
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ def __getitem__(self, key):

def __setitem__(self, key, value):
if "/" in key and not self._is_meta(key):
field, chunk = key.rsplit("/", 1)
field, _chunk = key.rsplit("/", 1)
record, i, _ = self._key_to_record(key)
subdict = self._items.setdefault((field, record), {})
subdict[i] = value
Expand Down
2 changes: 1 addition & 1 deletion fsspec/implementations/tar.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ def _get_dirs(self):
def _open(self, path, mode="rb", **kwargs):
if mode != "rb":
raise ValueError("Read-only filesystem implementation")
details, offset = self.index[path]
details, _offset = self.index[path]
if details["type"] != "file":
raise ValueError("Can only handle regular files")
return self.tar.extractfile(path)
2 changes: 1 addition & 1 deletion fsspec/implementations/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@


class MultiProtocolFileSystem(LocalFileSystem):
protocol = ["file", "other"]
protocol = ("file", "other")


FILESYSTEMS = {
Expand Down
4 changes: 2 additions & 2 deletions fsspec/implementations/tests/test_archive.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,14 +214,14 @@ class TestAnyArchive:
will adhere to the same specification.
"""

scenarios = [
scenarios = (
scenario_zip,
scenario_tar,
scenario_targz,
scenario_tarbz2,
scenario_tarxz,
scenario_libarchive,
]
)

def test_repr(self, scenario: ArchiveTestScenario):
with scenario.provider() as archive:
Expand Down
4 changes: 2 additions & 2 deletions fsspec/implementations/tests/test_cached.py
Original file line number Diff line number Diff line change
Expand Up @@ -699,7 +699,7 @@ def test_local_filecache_basic(local_filecache):


def test_local_filecache_does_not_change_when_original_data_changed(local_filecache):
old_data, original_file, cache_location, fs = local_filecache
old_data, original_file, _cache_location, fs = local_filecache
new_data = b"abc"

with fs.open(original_file, "rb") as f:
Expand Down Expand Up @@ -899,7 +899,7 @@ def test_filecache_serialization(impl, fs):


def test_add_file_to_cache_after_save(local_filecache):
(data, original_file, cache_location, fs) = local_filecache
(_data, original_file, cache_location, fs) = local_filecache

fs.save_cache()

Expand Down
4 changes: 2 additions & 2 deletions fsspec/implementations/tests/test_git.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def _check_FileNotFoundError(f, *args, **kwargs):


def test_file_existence_checks(repo):
d, sha = repo
d, _sha = repo

fs, _ = fsspec.url_to_fs(f"git://{d}:abranch@")

Expand Down Expand Up @@ -95,7 +95,7 @@ def test_file_existence_checks(repo):


def test_url(repo):
d, sha = repo
d, _sha = repo
fs, _, paths = fsspec.core.get_fs_token_paths(f"git://file1::file://{d}")
assert make_path_posix(d) in make_path_posix(fs.repo.path)
assert paths == ["file1"]
Expand Down
2 changes: 0 additions & 2 deletions fsspec/implementations/tests/test_smb.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ def delay_rerun(*args):
return True


# ruff: noqa: F821

if os.environ.get("WSL_INTEROP"):
# Running on WSL (Windows)
port_test = [9999]
Expand Down
2 changes: 1 addition & 1 deletion fsspec/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import types
import warnings

__all__ = ["registry", "get_filesystem_class", "default"]
__all__ = ["default", "get_filesystem_class", "registry"]

# internal, mutable
_registry: dict[str, type] = {}
Expand Down
7 changes: 4 additions & 3 deletions fsspec/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from collections import ChainMap
from http.server import BaseHTTPRequestHandler, HTTPServer
from types import SimpleNamespace
from typing import ClassVar

import pytest

Expand Down Expand Up @@ -45,7 +46,7 @@ def reset_files():


class HTTPTestHandler(BaseHTTPRequestHandler):
static_files = {
static_files: ClassVar[dict[str, bytes]] = {
"/index/realfile": data,
"/index/otherfile": data,
"/index": _make_index_listing,
Expand All @@ -55,7 +56,7 @@ class HTTPTestHandler(BaseHTTPRequestHandler):
"/simple/dir/": _make_listing("/simple/dir/file"),
"/simple/dir/file": data,
}
dynamic_files = {}
dynamic_files: ClassVar[dict[str, bytes]] = {}

files = ChainMap(dynamic_files, static_files)

Expand Down Expand Up @@ -92,7 +93,7 @@ def do_GET(self):
content_range = f"bytes 0-{len(file_data) - 1}/{len(file_data)}"
if ("Range" in self.headers) and ("ignore_range" not in self.headers):
ran = self.headers["Range"]
b, ran = ran.split("=")
_b, ran = ran.split("=")
start, end = ran.split("-")
if start:
content_range = f"bytes {start}-{end}/{len(file_data)}"
Expand Down
2 changes: 1 addition & 1 deletion fsspec/tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def test_class_methods():

def test_multi(m):
m.pipe("/afile", b"data")
fs, token, paths = fsspec.core.get_fs_token_paths(["/afile", "/afile"])
_fs, _token, paths = fsspec.core.get_fs_token_paths(["/afile", "/afile"])
assert len(paths) == 2


Expand Down
10 changes: 5 additions & 5 deletions fsspec/tests/test_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -399,11 +399,11 @@ def test_url_to_fs(ftp_writable):
data = b"hello"
with fsspec.open(f"ftp://{username}:{password}@{host}:{port}/afile", "wb") as f:
f.write(data)
fs, url = fsspec.core.url_to_fs(
_fs, url = fsspec.core.url_to_fs(
f"simplecache::ftp://{username}:{password}@{host}:{port}/afile"
)
assert url == "/afile"
fs, url = fsspec.core.url_to_fs(f"ftp://{username}:{password}@{host}:{port}/afile")
_fs, url = fsspec.core.url_to_fs(f"ftp://{username}:{password}@{host}:{port}/afile")
assert url == "/afile"

with fsspec.open(f"ftp://{username}:{password}@{host}:{port}/afile.zip", "wb") as f:
Expand All @@ -414,11 +414,11 @@ def test_url_to_fs(ftp_writable):
f2.write(b"hello")
f.write(data)

fs, url = fsspec.core.url_to_fs(
_fs, url = fsspec.core.url_to_fs(
f"zip://inner::ftp://{username}:{password}@{host}:{port}/afile.zip"
)
assert url == "inner"
fs, url = fsspec.core.url_to_fs(
_fs, url = fsspec.core.url_to_fs(
f"simplecache::zip::ftp://{username}:{password}@{host}:{port}/afile.zip"
)
assert url == ""
Expand Down Expand Up @@ -472,7 +472,7 @@ def test_repeated_argument():
pytest.importorskip("adlfs")
from fsspec.core import url_to_fs

fs, url = url_to_fs(
fs, _url = url_to_fs(
"az://[email protected]/DATA",
anon=False,
account_name="ACCOUNT",
Expand Down
2 changes: 1 addition & 1 deletion fsspec/tests/test_fuse.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ def test_chmod(mount_local):


def test_seek_rw(mount_local):
source_dir, mount_dir = mount_local
_source_dir, mount_dir = mount_local
fh = open(mount_dir / "text", "w")
fh.write("teST")
fh.seek(2)
Expand Down
2 changes: 1 addition & 1 deletion fsspec/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ def build_name_function(max_int: float) -> Callable[[int], str]:
# handle corner cases max_int is 0 or exact power of 10
max_int += 1e-8

pad_length = int(math.ceil(math.log10(max_int)))
pad_length = math.ceil(math.log10(max_int))

def name_function(i: int) -> str:
return str(i).zfill(pad_length)
Expand Down
6 changes: 3 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -176,9 +176,7 @@ select = [
"PIE810",
# "PT", enable in later PR
"PYI",
"RUF006",
"RUF015",
"RUF024",
"RUF",
"SIM",
"SLOT",
"SIM101",
Expand Down Expand Up @@ -213,6 +211,8 @@ ignore = [
"UP011",
"UP015",
"UP018",
"RUF001",
"RUF005",
"SIM102",
"SIM105",
"SIM108",
Expand Down
Loading