Files
python-fsspec/python-fsspec.spec
2026-01-26 15:32:24 +08:00

106 lines
3.7 KiB
RPMSpec

# SPDX-FileCopyrightText: (C) 2025 Institute of Software, Chinese Academy of Sciences (ISCAS)
# SPDX-FileCopyrightText: (C) 2025 openRuyi Project Contributors
# SPDX-FileContributor: CHEN Xuan <chenxuan@iscas.ac.cn>
#
# SPDX-License-Identifier: MulanPSL-2.0
# Avoid dependency loops:
# fsspec -> distributed -> dask -> fsspec
# fsspec -> gcsfs -> fsspec
# fsspec -> zarr -> fsspec
%bcond bootstrap 1
%global srcname fsspec
Name: python-%{srcname}
Version: 2026.1.0
Release: %autorelease
Summary: Specification for Pythonic file system interfaces
License: BSD-3-Clause
URL: https://github.com/fsspec/filesystem_spec
#!RemoteAsset
Source0: %{url}/archive/%{version}/%{srcname}-%{version}.tar.gz
BuildArch: noarch
BuildSystem: pyproject
BuildOption(install): %{srcname} -l
BuildRequires: python3-devel
BuildRequires: python3dist(pytest)
BuildRequires: python3dist(pytest-asyncio)
BuildRequires: python3dist(pytest-mock)
BuildRequires: python3dist(pytest-rerunfailures)
BuildRequires: python3dist(cloudpickle)
%if %{without bootstrap}
BuildRequires: python3dist(zarr)
BuildRequires: python3dist(notebook)
%endif
BuildRequires: python3dist(jinja2)
BuildRequires: python3dist(lz4)
BuildRequires: python3dist(numpy)
BuildRequires: python3dist(python-snappy)
BuildRequires: python3dist(zstandard)
BuildRequires: fuse
BuildRequires: git-core
%description
Filesystem Spec is a project to unify various projects and classes to work with
remote filesystems and file-system-like abstractions using a standard pythonic
interface.
Provides: python3-%{srcname}
%python_provide python3-%{srcname}
%pyproject_extras_subpkg -n python3-%{srcname} arrow
%pyproject_extras_subpkg -n python3-%{srcname} dask
%pyproject_extras_subpkg -n python3-%{srcname} entrypoints
%pyproject_extras_subpkg -n python3-%{srcname} fuse
%if %{without bootstrap}
%pyproject_extras_subpkg -n python3-%{srcname} gcs
%endif
%pyproject_extras_subpkg -n python3-%{srcname} git
%pyproject_extras_subpkg -n python3-%{srcname} github
%if %{without bootstrap}
%pyproject_extras_subpkg -n python3-%{srcname} gs
%endif
%pyproject_extras_subpkg -n python3-%{srcname} hdfs
%pyproject_extras_subpkg -n python3-%{srcname} http
%pyproject_extras_subpkg -n python3-%{srcname} libarchive
%pyproject_extras_subpkg -n python3-%{srcname} sftp
%pyproject_extras_subpkg -n python3-%{srcname} smb
%pyproject_extras_subpkg -n python3-%{srcname} ssh
%pyproject_extras_subpkg -n python3-%{srcname} tqdm
%generate_buildrequires
# Skipped extras:
# - (when bootstrapping) gcs and gs: Don't have gcsfs
# - abfs and adl: Don't have adlfs
# - dropbox: Don't have dropboxdrivefs
# - gui: Don't have panel
# - oci: Don't have ocifs
# - s3: Don't have s3fs
export SETUPTOOLS_SCM_PRETEND_VERSION=%{version}
%pyproject_buildrequires -x arrow,%{?!with_bootstrap:dask,gcs,gs,}entrypoints,fuse,git,github,hdfs,http,libarchive,sftp,smb,ssh,tqdm
%build
export SETUPTOOLS_SCM_PRETEND_VERSION=%{version}
%pyproject_wheel
%check
# fuse tests fail on koji builders due to missing kernel modules
# test_async_cat_file_ranges uses the network; https://github.com/fsspec/filesystem_spec/pull/1734/files#r1893434370
# test_gist.py and test_github.py tests require network
%{pytest} -vra \
--deselect=fsspec/tests/test_fuse.py::test_basic \
--deselect=fsspec/tests/test_fuse.py::test_chmod \
--deselect=fsspec/tests/test_fuse.py::test_seek_rw \
--deselect=fsspec/implementations/tests/test_reference.py::test_async_cat_file_ranges \
--ignore=fsspec/implementations/tests/test_gist.py \
--ignore=fsspec/implementations/tests/test_github.py
%files -f %{pyproject_files}
%doc README.md
%changelog
%{?autochangelog}