python-pandas/python-pandas.spec

1076 lines
41 KiB
RPMSpec
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# We need to break some cycles with optional dependencies for bootstrapping;
# given that a conditional is needed, we take the opportunity to omit as many
# optional dependencies as possible for bootstrapping.
%bcond_with bootstrap
# When not bootstrapping, run tests?
%bcond_without tests
%{?with_bootstrap:%undefine with_tests}
# When running tests, run ones that are marked as slow?
%bcond_without slow_tests
# When running tests, run ones that cannot be run in parallel?
%bcond_without single_tests
Name: python-pandas
Version: 1.5.3
Release: 8%{?dist}
Summary: Python library providing high-performance data analysis tools
# The entire source is BSD-3-Clause and covered by LICENSE, except:
#
# - pandas/util/version/__init__.py is (Apache-2.0 OR BSD-2-Clause): see
# LICENSES/PACKAGING_LICENSE
# - pandas/_libs/src/headers/portable.h is (BSD-3-Clause AND MIT), because it
# contains some trivial content under the overall BSD-3-Clause license but
# also some macros from MUSL libc under the MIT license: see
# LICENSES/MUSL_LICENSE
# - pandas/_libs/src/parser/tokenizer.c is (BSD-3-Clause AND Python-2.0.1): see
# LICENSES/PSF_LICENSE
# - pandas/io/sas/sas7bdat.py is (BSD-3-Clause and MIT), because it is mostly
# under the overall BSD-3-Clause license but is also based on
# https://bitbucket.org/jaredhobbs/sas7bdat: see LICENSES/SAS7BDAT_LICENSE
# - pandas/core/accessor.py is (BSD-3-Clause AND Apache-2.0), because it is
# partially under the overall BSD-3-Clause license but is also based on
# xarray: see LICENSES/XARRAY_LICENSE
# - pandas/_libs/src/klib/khash.h is MIT: see LICENSES/KLIB_LICENSE
# - pandas/_libs/window/aggregations.pyx is (BSD-3-Clause AND BSD-2-Clause):
# see “Bottleneck license” in LICENSES/OTHER
#
# In the python3-pandas+test subpackage:
#
# - pandas/tests/io/data/spss/*.sav are MIT: see LICENSES/HAVEN_LICENSE and
# LICENSES/HAVEN_MIT
# - pandas/tests/window/test_rolling.py is (BSD-3-Clause AND BSD-2-Clause)
# since test_rolling_std_neg_sqrt is from Bottleneck: see “Bottleneck license”
# in LICENSES/OTHER
#
# Additionally:
#
# - pandas/_libs/tslibs/parsing.pyx is BSD-3-Clause rather than
# (BSD-3-Clause AND (BSD-3-Clause OR Apache-2.0)), because it appears that at
# least some trivial content in the code copied from dateutil in the
# dateutil_parse() function (as of
# https://github.com/dateutil/dateutil/pull/732) is by dateutil contributors
# who have not agreed to re-license their previously submitted code: see
# LICENSES/DATEUTIL_LICENSE.
# - LICENSES/OTHER suggests that some code may be derived from
# google-api-python-client under Apache-2.0, but a search for attribution
# comments did not turn up anything specific
# - pandas/_libs/tslibs/src/datetime/np_datetime.{h,c} are still BSD-3-Clause,
# but see also LICENSES/NUMPY_LICENSE
# - pandas/io/clipboard/ is still BSD-3-Clause, but see also “Pyperclip v1.3
# license” in LICENSES/OTHER
# - pandas/_testing/__init__.py is still BSD-3-Clause, but see also
# LICENSES/SCIPY_LICENSE
# - pandas/_libs/src/ujson/lib/ is still BSD-3-Clause, but under
# LICENSES/ULTRAJSON_LICENSE
#
# Additionally, the following are not packaged and so do not affect the overall
# License field:
#
# - scripts/no_bool_in_generic.py is MIT: see LICENSES/PYUPGRADE_LICENSE
License: BSD-3-Clause AND (Apache-2.0 OR BSD-2-Clause) AND (BSD-3-Clause AND Apache-2.0) AND (BSD-3-Clause AND MIT) AND (BSD-3-Clause AND Python-2.0.1) AND MIT AND (BSD-3-Clause AND BSD-2-Clause)
URL: https://pandas.pydata.org/
# The GitHub archive contains tests; the PyPI sdist does not.
Source0: https://github.com/pandas-dev/pandas/archive/v%{version}/pandas-%{version}.tar.gz
# Fix some little-endian assumptions in the tests
# https://github.com/pandas-dev/pandas/pull/49913
Patch: https://github.com/pandas-dev/pandas/pull/49913.patch
# [PATCH] Backport PR #50925 on branch 1.5.x (TST: Remove fsspec internals from
# tests) (#51038)
#
# TST: Remove fsspec internals from tests (#50925)
# https://github.com/pandas-dev/pandas/commit/e73d4d29203dab20e001beb1090d07683de583d6
# fixes:
# ERROR at setup of test_to_read_gcs[…]
Patch: https://github.com/pandas-dev/pandas/commit/e73d4d29203dab20e001beb1090d07683de583d6.patch
# Fix/mpl37 compat
# https://github.com/pandas-dev/pandas/pull/52150
# Fixes:
# python-pandas: FTBFS in Fedora rawhide/f38
# https://bugzilla.redhat.com/show_bug.cgi?id=2171682
Patch: https://github.com/pandas-dev/pandas/pull/52150.patch
# CI: Unpin pyarrow<10
# https://github.com/pandas-dev/pandas/pull/50314
#
# Merged upstream as 4878dfe551da2fa8e2bc33e774b595f099bfa74e:
# CI: Unpin pyarrow<10 (#50314)
# * CI: Unpin pyarrow<10
# * Skip test
#
# ----
#
# Add pandas.compat.pa_version_under11p0, required for pyarrow 11 support, from
# the following PR/commit, but without the other associated changes:
#
# ENH: support reductions for pyarrow temporal types (#50998)
# https://github.com/pandas-dev/pandas/pull/50998
#
# Merged upstream as 52306d957cb77a3823624679bb9606e244e7faa8:
# ENH: support reductions for pyarrow temporal types
# * unit check
# * lint fixup
#
# ----
#
# CI: unpin pyarrow, fix failing test
# https://github.com/pandas-dev/pandas/pull/51175
#
# Merged upstream as 5f584bd29be7203db64bdf8619991927e29c74bc:
# CI: unpin pyarrow, fix failing test (#51175)
# * unpin pyarrow, fix failing test
# * cleanup
# * handle NaT/NaN
#
# ----
#
# CI: Test pyarrow nightly instead of intermediate versions
# https://github.com/pandas-dev/pandas/pull/52211
#
# Merged upstream as 4a2c06c8a5e4b12f7850b834eb10f1fa1f302f92:
# CI: Test pyarrow nightly instead of intermediate versions
# * Change format
# * Pin, remove hardcoded channel
# * Try pip
# * Fix some tests
# * Address more tests
# * Fix test condition
# * Fix another condidition
# * Cleanup name
# * Remove boto3
#
# ----
#
# All commits cherry-picked to tag v1.5.3 and combined into a single patch.
Patch: pandas-1.5.3-pyarrow-10-11-12.patch
# Fix deprecation warning with Python 3.12.
Patch: https://github.com/pandas-dev/pandas/pull/54188.patch
%global _description %{expand:
pandas is an open source, BSD-licensed library providing
high-performance, easy-to-use data structures and data
analysis tools for the Python programming language.}
%description %_description
%package -n python3-pandas
Summary: %{summary}
# pandas/_libs/window/aggregations.pyx:
#
# Moving maximum / minimum code taken from Bottleneck under the terms
# of its Simplified BSD license
# https://github.com/pydata/bottleneck
#
# These snippets are extracted from Bottlenecks internals and cannot be
# replaced by calling the public Bottleneck API, so there is no reasonable path
# to unbundling.
Provides: bundled(python3dist(bottleneck))
# pandas/_libs/tslibs/parsing.pyx:
#
# Contains a routine, dateutil_parse(), from an unspecified version of dateutil
#
# Cannot be unbundled because the function is forked and compiled as Cython
Provides: bundled(python3dist(dateutil))
# pandas/_libs/src/klib/khash.h:
#
# From klib (https://github.com/attractivechaos/klib); it is not practical to
# package all of klib separately because it is designed as a copylib, and many
# of its components are not header-only.
Provides: bundled(klib-khash) = 0.2.6
# pandas/_libs/src/headers/portable.h:
#
# Contains several preprocessor macros from an unspecified version of MUSL libc
#
# Cannot be unbundled because the macros are not directly exposed in the libc
Provides: bundled(musl-libc)
# pandas/_libs/tslibs/src/datetime/np_datetime.{h,c}:
#
# Derived from Numpy 1.7
#
# Cannot be unbundled because the routines are forked.
Provides: bundled(python3dist(numpy)) = 1.7
# pandas/util/version/__init__.py:
#
# Vendored from https://github.com/pypa/packaging/blob/main/packaging/_structures.py
# and https://github.com/pypa/packaging/blob/main/packaging/_structures.py
# changeset ae891fd74d6dd4c6063bb04f2faeadaac6fc6313
# 04/30/2021
#
# Cannot be (reasonably) unbundled because the vendored file is not part of
# packagings public API.
Provides: bundled(python3dist(packaging)) = 20.10.dev0^20210430gitae891fd
# pandas/io/clipboard/:
#
# In https://github.com/pandas-dev/pandas/pull/28471, upstream considered and
# rejected the idea of de-vendoring pyperclip. Furthermore,
# https://github.com/pandas-dev/pandas/commits/main/pandas/io/clipboard and
# https://github.com/pandas-dev/pandas/commits/main/pandas/io/clipboard/__init__.py
# show that the vendored library has accrued Pandas-specific changes.
#
# Version number from:
# https://github.com/pandas-dev/pandas/pull/28471/commits/33cd2d72e0c007c460e59105efda9211441b2ce4
# “Updated internal pyperclip 1.5.27 -> 1.7.0”
Provides: bundled(python3dist(pyperclip)) = 1.7.0
# pandas/_libs/src/parser/tokenizer.c:
#
# Combines some elements from Python's built-in csv module and Warren
# Weckesser's textreader project on GitHub.
#
# Elements from these are both forked and cannot be unbundled. The textreader
# project is a Python extension but is not on PyPI, and is not the same as
# python3dist(textreader).
Provides: bundled(python3-libs)
Provides: bundled(textreader)
# scripts/no_bool_in_generic.py:
#
# The function `visit` is adapted from a function by the same name in pyupgrade:
# https://github.com/asottile/pyupgrade/blob/5495a248f2165941c5d3b82ac3226ba7ad1fa59d/pyupgrade/_data.py#L70-L113
#
# Not packaged (pre-commit hook) therefore not bundled
# Provides: bundled(python3dist(pyupgrade)) = 2.11.0^20210201git5495a24
# pandas/io/sas/sas7bdat.py
#
# Based on code written by Jared Hobbs:
# https://bitbucket.org/jaredhobbs/sas7bdat
#
# Cannot be unbundled because the code is modified, not directly copied
Provides: bundled(python3dist(sas7bdat))
# pandas/_testing/__init__.py: in _create_missing_idx():
#
# below is cribbed from scipy.sparse
#
# Cannot be unbundled because only a few lines are copied, not a standalone
# function that we can call
Provides: bundled(python3dist(scipy))
# pandas/_libs/src/ujson/lib/:
#
# This is a stripped-down copy of UltraJSON. It would be an obvious target for
# unbundling, except:
#
# - Pandas uses the C library API, but UltraJSON upstream does not support
# building and installing it separately from the Python package.
# - In https://github.com/pandas-dev/pandas/issues/24711 it is suggested that
# Pandas might rely on features of the particular vendored version of
# UltraJSON. Its not immediately clear whether this is still true or not.
Provides: bundled(python3dist(ujson))
# pandas/core/accessor.py
#
# Ported with modifications from xarray
# https://github.com/pydata/xarray/blob/master/xarray/core/extensions.py
# 1. We don't need to catch and re-raise AttributeErrors as RuntimeErrors
# 2. We use a UserWarning instead of a custom Warning
#
# Cannot be unbundled because the copied code is forked.
Provides: bundled(python3dist(xarray))
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: python3-devel
# Since numpy is imported in setup.py, we need it to generate BRs. This only
# becomes obvious during bootstrapping, in which the many optional dependencies
# that indirectly require numpy are removed.
BuildRequires: python3dist(numpy)
%if %{without bootstrap}
# doc/source/getting_started/install.rst “Recommended dependencies”
# Since these provide large speedups, we make them hard dependencies except
# during bootstrapping.
BuildRequires: python3dist(numexpr) >= 2.7.3
Requires: python3dist(numexpr) >= 2.7.3
BuildRequires: python3dist(bottleneck) >= 1.3.2
Requires: python3dist(bottleneck) >= 1.3.2
# doc/source/getting_started/install.rst “Optional dependencies”
# We BR all weak dependencies to ensure they are installable.
# Timezones
BuildRequires: tzdata >= 2022a
Recommends: tzdata >= 2022a
# Visualization
BuildRequires: python3dist(matplotlib) >= 3.3.2
Recommends: python3dist(matplotlib) >= 3.3.2
BuildRequires: python3dist(jinja2) >= 3
Recommends: python3dist(jinja2) >= 3
BuildRequires: python3dist(tabulate) >= 0.8.9
Recommends: python3dist(tabulate) >= 0.8.9
# Computation
BuildRequires: python3dist(scipy) >= 1.7.1
Recommends: python3dist(scipy) >= 1.7.1
# python-numba is not currently packaged:
# BuildRequires: python3dist(numba) >= 0.46
# Recommends: python3dist(numba) >= 0.46
BuildRequires: python3dist(xarray) >= 1.19
Recommends: python3dist(xarray) >= 1.19
# Excel files
BuildRequires: python3dist(xlrd) >= 2.0.1
Recommends: python3dist(xlrd) >= 2.0.1
BuildRequires: python3dist(xlwt) >= 1.3
Recommends: python3dist(xlwt) >= 1.3
BuildRequires: python3dist(xlsxwriter) >= 1.4.3
Recommends: python3dist(xlsxwriter) >= 1.4.3
BuildRequires: python3dist(openpyxl) >= 3.0.7
Recommends: python3dist(openpyxl) >= 3.0.7
# python-pyxlsb is not currently packaged:
# BuildRequires: python3dist(pyxlsb) >= 1.0.8
# Recommends: python3dist(pyxlsb) >= 1.0.8
# Not in doc/source/getting_started/install.rst, but in environment.yml and in
# some doc-strings:
BuildRequires: python3dist(odfpy) >= 1.4.1
Recommends: python3dist(odfpy) >= 1.4.1
# HTML
BuildRequires: python3dist(beautifulsoup4) >= 4.9.3
Recommends: python3dist(beautifulsoup4) >= 4.9.3
BuildRequires: python3dist(html5lib) >= 1.1
Recommends: python3dist(html5lib) >= 1.1
# lxml handled below:
# XML
BuildRequires: python3dist(lxml) >= 4.6.3
Recommends: python3dist(lxml) >= 4.6.3
# SQL databases
BuildRequires: python3dist(sqlalchemy) >= 1.4.16
Recommends: python3dist(sqlalchemy) >= 1.4.16
BuildRequires: python3dist(psycopg2) >= 2.8.6
Recommends: python3dist(psycopg2) >= 2.8.6
BuildRequires: python3dist(pymysql) >= 1.0.2
Recommends: python3dist(pymysql) >= 1.0.2
# Other data sources
BuildRequires: python3dist(tables) >= 3.6.1
Recommends: python3dist(tables) >= 3.6.1
# Dependencies on blosc and zlib are indirect, via PyTables, so we do not
# encode them here. Note also that the minimum blosc version in the
# documentation seems to be that of the blosc C library, not of the blosc PyPI
# package.
# python-fastparquet is not currently packaged:
# BuildRequires: python3dist(fastparquet) >= 0.4
# Recommends: python3dist(fastparquet) >= 0.4
# libarrow does not support 32-bit architectures:
%if 0%{?__isa_bits} != 32
BuildRequires: python3dist(pyarrow) >= 1.0.1
Recommends: python3dist(pyarrow) >= 1.0.1
%endif
# python-pyreadstat is not currently packaged:
# BuildRequires: python3dist(pyreadstat) >= 1.1.2
# Recommends: python3dist(pyreadstat) >= 1.1.2
# Access data in the cloud
BuildRequires: python3dist(fsspec) >= 2021.7
Recommends: python3dist(fsspec) >= 2021.7
# python-gcsfs is packaged, but is badly out of date in F37 and older:
# https://bugzilla.redhat.com/show_bug.cgi?id=2136233
# Since we will not package pandas 1.5.x for F36 and older, the conditional
# checks for F37 only.
%if !0%{?fc37}
BuildRequires: python3dist(gcsfs) >= 2021.7
Recommends: python3dist(gcsfs) >= 2021.7
%endif
# python-pandas-gbq is not currently packaged:
# BuildRequires: python3dist(pandas-gbq) >= 0.15
# Recommends: python3dist(pandas-gbq) >= 0.15
# python-s3fs is not currently packaged:
# BuildRequires: python3dist(s3fs) >= 2021.8
# Recommends: python3dist(s3fs) >= 2021.8
# Clipboard
BuildRequires: python3dist(pyqt5)
Recommends: python3dist(pyqt5)
BuildRequires: python3dist(qtpy)
Recommends: python3dist(qtpy)
BuildRequires: xclip
Recommends: xclip
BuildRequires: xsel
Recommends: xsel
# Compression
BuildRequires: python3dist(brotli) >= 0.7
Recommends: python3dist(brotli) >= 0.7
BuildRequires: python3dist(python-snappy) >= 0.6
Recommends: python3dist(python-snappy) >= 0.6
BuildRequires: python3dist(zstandard) >= 0.15.2
Recommends: python3dist(zstandard) >= 0.15.2
# This is just an “ecosystem” package in the upstream documentation, but there
# is an integration test for it. This package historically had a weak
# dependency on it, but this was unnecessary.
BuildRequires: python3dist(pandas-datareader)
%endif
%description -n python3-pandas %_description
%package -n python3-pandas+test
Summary: Tests and test extras for Pandas
# See comment above base package License tag for licensing breakdown.
License: BSD-3-Clause AND MIT
Requires: python3-pandas%{?_isa} = %{version}-%{release}
%if %{without bootstrap}
# Additional BRs and weak dependencies below are generally those that dont
# provide enough added functionality to be weak dependencies of the library
# package, but for which there is some integration support and additional tests
# that can be enabled.
# Additional dependencies from environment.yml: “testing”
# Those not in the “test” extra are treated as weak dependencies for the tests.
BuildRequires: python3dist(boto3)
Recommends: python3dist(boto3)
BuildRequires: python3dist(botocore) >= 1.11
Recommends: python3dist(botocore) >= 1.11
# Already covered by “test” extra
# BuildRequires: python3dist(hypothesis) >= 3.82
# Recommends: python3dist(hypothesis) >= 3.82
# python-moto is not yet packaged
# BuildRequires: python3dist(moto)
# Recommends: python3dist(moto)
BuildRequires: python3dist(flask)
Recommends: python3dist(flask)
# Already covered by “test” extra
# BuildRequires: python3dist(pytest) >= 5.0.1
# Requires: python3dist(pytest) >= 5.0.1
# https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_linters
# BuildRequires: python3dist(pytest-cov)
# Recommends: python3dist(pytest-cov)
# Already covered by “test” extra
# BuildRequires: python3dist(pytest-xdist) >= 1.21
# Requires: python3dist(pytest-xdist) >= 1.21
BuildRequires: python3dist(pytest-asyncio)
Recommends: python3dist(pytest-asyncio)
# python-pytest-instafail is not yet packaged
# BuildRequires: python3dist(pytest-instafail)
# Recommends: python3dist(pytest-instafail)
# Additional dependencies from environment.yml:
# “Dask and its dependencies (that dont install with dask)”
# Asks for dask-core, but we just have dask
BuildRequires: python3dist(dask)
Recommends: python3dist(dask)
BuildRequires: python3dist(toolz) >= 0.7.3
Recommends: python3dist(toolz) >= 0.7.3
BuildRequires: python3dist(partd) >= 0.3.10
Recommends: python3dist(partd) >= 0.3.10
BuildRequires: python3dist(cloudpickle) >= 0.2.1
Recommends: python3dist(cloudpickle) >= 0.2.1
# Additional dependencies from environment.yml: “downstream tests”
BuildRequires: python3dist(seaborn)
Recommends: python3dist(seaborn)
BuildRequires: python3dist(statsmodels)
Recommends: python3dist(statsmodels)
# environment.yml: Needed for downstream xarray.CFTimeIndex test
BuildRequires: python3dist(cftime)
Recommends: python3dist(cftime)
# environment.yml: optional
BuildRequires: python3dist(ipython) >= 7.11.1
Recommends: python3dist(ipython) >= 7.11.1
# pandas/tests/io/data/spss/*.sav:
#
# From Haven
Provides: bundled(R-haven)
# pandas/tests/window/test_rolling.py: test_rolling_std_neg_sqrt()
#
# unit test from Bottleneck
#
# There is no reasonable path to unbundling a single unit test.
Provides: bundled(python3dist(bottleneck))
%endif
%description -n python3-pandas+test
These are the tests for python3-pandas. This package:
Provides the “pandas.tests” package
Makes sure the “test” extra dependencies are installed
Carries additonal weak dependencies for running the tests
%prep
%autosetup -n pandas-%{version} -p1
# Ensure Cython-generated sources are re-generated
rm -vf $(grep -rl '/\* Generated by Cython')
# We just want to build with the numpy in Fedora:
sed -r -i '/\boldest-supported-numpy\b/d' pyproject.toml
%if 0%{?fc37}
# We have Python 3.11, but we do not have the numpy version that Pandas upstrem
# wants for Python 3.11.
sed -r -i "s/(numpy>=)1\\.23\\.2(; python_version>='3\\.11')/\\11.22.0\\2/" \
setup.cfg
%endif
%generate_buildrequires
%pyproject_buildrequires -r %{?with_tests:-x test}
%build
%pyproject_wheel
%install
%pyproject_install
%pyproject_save_files pandas
%check
%if %{with tests}
# Clipboard tests dont run without a graphical session, and its not worth
# using xvfb-run just for them.
m="${m-}${m+ and }not clipboard"
%if %{without single_tests}
m="${m-}${m+ and }not single"
%endif
# This test allocates a huge amount of memory (~12GB), which causes flaky OOM
# failures on some builders. Its not worth it.
# https://github.com/pandas-dev/pandas/issues/45223#issuecomment-1250912663
k="${k-}${k+ and }not test_bytes_exceed_2gb"
# This test (only) expects the current working directory to be the
# site-packages directory containing the built pandas. This is not how we run
# the tests, because we dont want to clutter the buildroot with
# testing-related hidden files and directories. We could run tests from
# %%pyproject_build_lib if this were a problem for a lot of tests, but its
# easier just to skip it.
k="${k-}${k+ and }not test_html_template_extends_options"
%ifarch ppc64le s390x
# TODO: Why does this fail? The differences are large!
k="${k-}${k+ and }not test_rolling_var_numerical_issues"
%endif
%ifarch %{ix86}
# These failures are i686-specific; most are likely 32-bit issues. Its not
# really worth trying to fix them.
# This “high-memory” test is just not appropriate for 32-bit platforms:
# E OverflowError: join() result is too long for a Python string
k="${k-}${k+ and }not test_bytes_exceed_2gb[c_high]"
# E assert 243.164 == 243.16400000000002
# Fails for both [c_high] and [c_low].
k="${k-}${k+ and }not test_float_precision_options"
# E AssertionError: DataFrame.iloc[:, 2] (column name="C") are different
# E
# E DataFrame.iloc[:, 2] (column name="C") values are different (11.66363 %)
# E [index]: [0, 1, …
# Fails for [left], [right], [outer], and [inner]
k="${k-}${k+ and }not (TestMerge and test_int64_overflow_how_merge)"
# E AssertionError: Attributes of DataFrame.iloc[:, 1] (column name="b") are different
# E
# E Attribute "dtype" are different
# E [left]: int32
# E [right]: int64
k="${k-}${k+ and }not test_frame_setitem_dask_array_into_new_col"
# E IndexError: index 0 is out of bounds for axis 0 with size 0
k="${k-}${k+ and }not (TestPivotTable and test_pivot_number_of_levels_larger_than_int32)"
k="${k-}${k+ and }not (TestStackUnstackMultiLevel and test_unstack_number_of_levels_larger_than_int32)"
# E OverflowError: timestamp out of range for platform time_t
# These fail only for the [tzlocal()] case, but its not clear how to validly
# name those in a pytest keyword expression due to the parentheses in tzlocal()
k="${k-}${k+ and }not (TestTimestampProperties and test_is_leap_year)"
k="${k-}${k+ and }not (TestBusinessDay and test_apply_out_of_range)"
k="${k-}${k+ and }not (TestBusinessHour and test_apply_out_of_range)"
k="${k-}${k+ and }not (TestCustomBusinessDay and test_apply_out_of_range)"
k="${k-}${k+ and }not (TestCustomBusinessHour and test_apply_out_of_range)"
k="${k-}${k+ and }not (TestWeek and test_apply_out_of_range)"
# E AssertionError: Index are different
# E
# E Index length are different
k="${k-}${k+ and }not (TestDateRanges and test_date_range_int64_overflow_stride_endpoint_different_signs)"
%endif
%ifarch s390x
# Note that pandas does not test big-endian support but will happily accept
# patches to improve it:
# https://github.com/pandas-dev/pandas/issues/4737#issuecomment-1090931741
# TODO: Why does this fail?
#
# > os.fsync(self._handle.fileno())
# E OverflowError: Python int too large to convert to C int
k="${k-}${k+ and }not test_flush"
# These are a cluster of similar pyarrow/parquet tests with apparent endianness
# issues. It is not immediately obvious where the bug is—in the library or in
# the tests?
k="${k-}${k+ and }not (TestBasic and test_write_index[pyarrow])"
k="${k-}${k+ and }not (TestBasic and test_multiindex_with_columns)"
k="${k-}${k+ and }not (TestBasic and test_write_column_multiindex_string)"
k="${k-}${k+ and }not (TestBasic and test_write_column_index_string)"
k="${k-}${k+ and }not (TestBasic and test_use_nullable_dtypes[pyarrow])"
k="${k-}${k+ and }not (TestParquetPyArrow and test_basic)"
k="${k-}${k+ and }not (TestParquetPyArrow and test_to_bytes_without_path_or_buf_provided)"
k="${k-}${k+ and }not (TestParquetPyArrow and test_categorical)"
k="${k-}${k+ and }not (TestParquetPyArrow and test_additional_extension_arrays)"
k="${k-}${k+ and }not (TestParquetPyArrow and test_pyarrow_backed_string_array[python])"
k="${k-}${k+ and }not (TestParquetPyArrow and test_pyarrow_backed_string_array[pyarrow])"
k="${k-}${k+ and }not (TestParquetPyArrow and test_additional_extension_types)"
k="${k-}${k+ and }not (TestParquetPyArrow and test_timezone_aware_index[timezone_aware_date_list0])"
k="${k-}${k+ and }not test_to_read_gcs[parquet]"
# Similarly, there are a cluster of similar stata test failures for which the
# root cause is not immediately obvious.
k="${k-}${k+ and }not (TestStata and test_writer_117)"
k="${k-}${k+ and }not (TestStata and test_convert_strl_name_swap)"
k="${k-}${k+ and }not (TestStata and test_strl_latin1)"
# Fails for [118], [119], and [None]
k="${k-}${k+ and }not (TestStata and test_utf8_writer)"
%endif
# TODO: Why does this fail?
# E assert 0 == 1
k="${k-}${k+ and }not test_switch_options"
%ifarch x86_64
# These are brittle and fail with tiny floating-point differences on COPR
# builders but not Koji builders, like:
# > raise_assert_detail(obj, msg, left, right, index_values=index_values)
# E AssertionError: numpy array are different
# E
# E numpy array values are different (16.66667 %)
# E [left]: [0.09999999999999999, 1.0, 10.0, 100.0, 1000.0, 10000.0]
# E [right]: [0.1, 1.0, 10.0, 100.0, 1000.0, 10000.0]
k="${k-}${k+ and }not (TestSeriesPlots and test_bar_log)"
k="${k-}${k+ and }not (TestDataFramePlotsSubplots and test_bar_log_no_subplots)"
k="${k-}${k+ and }not (TestDataFramePlotsSubplots and test_bar_log_subplots)"
%endif
%if 0%{?fedora} > 37
# TODO: Why does this fail? Does it need a slightly older version of dask?
# E AssertionError: Caused unexpected warning(s): [('RuntimeWarning', RuntimeWarning('invalid value encountered in cast'), '/builddir/build/BUILDROOT/python-pandas-1.5.3-1.fc39.x86_64/usr/lib64/python3.11/site-packages/pandas/core/dtypes/cast.py', 1836)]
k="${k-}${k+ and }not test_construct_dask_float_array_int_dtype_match_ndarray"
# Incompatibility with python-xarray ≥ 2023.01.0. See:
# https://github.com/pydata/xarray/blob/v2023.02.0/doc/whats-new.rst#breaking-changes-1
# CFTimeIndex.get_loc() got an unexpected keyword argument 'method'
k="${k-}${k+ and }not test_xarray_cftimeindex_nearest"
%endif
%if 0%{?fc37}
# TODO: Why do these fail on F37 but not on F38?
# E AssertionError: Did not use numexpr as expected.
# E assert []
k="${k-}${k+ and }not (TestExpressions and test_run_binary)"
%endif
# Ensure pytest doesnt find the “un-built” library. We can get away with this
# approach because the tests are also in the installed library. We cant simply
# “cd” to the buildroots python3_sitearch because testing leaves files in the
# current working directory.
mkdir -p _empty
cd _empty
# See: test_fast.sh
# Workaround for pytest-xdist flaky collection order
# https://github.com/pytest-dev/pytest/issues/920
# https://github.com/pytest-dev/pytest/issues/1075
export PYTHONHASHSEED="$(
%{python3} -c 'import random; print(random.randint(1, 4294967295))'
)"
# Previously, we ran tests in parallel. Upstream seems to support this;
# however, in practice, there were still some flaky test failures that seem to
# be fixed by eschewing parallelism (-n 1).
#
# If we start running tests in parallel again in the future, note that on
# 32-bit platforms (%%if 0%%{?__isa_bits} == 32) it may be necessary to limit
# the number of concurrent tests to e.g. 8 in order to prevent memory
# exhaustion.
%pytest -v '%{buildroot}%{python3_sitearch}/pandas' \
%{?!with_slow_tests:--skip-slow} \
--skip-network \
--skip-db \
-m "${m-}" \
-k "${k-}" \
-n 1 \
-r sxX
%else
# Some imports require optional dependencies, and must be excluded during
# bootstrapping.
%{pyproject_check_import \
%{?with_bootstrap:-e 'pandas.io.formats.style'} \
%{?with_bootstrap:-e 'pandas.io.formats.style_render'} \
%{?with_bootstrap:-e 'pandas.core.arrays.arrow.extension_types'} \
-e 'pandas.conftest' \
-e 'pandas.tests.*'}
%endif
%files -n python3-pandas -f %{pyproject_files}
# While pyproject_files automatically handles the LICENSE file in the Python
# packages dist-info directory, we also want to package the entire LICENSES/
# directory to include third-party license text. We include a second copy of
# the LICENSE file since it would be surprising to see a license directory for
# the package without the overall license file in it.
%license LICENSE LICENSES/
%doc README.md
%doc RELEASE.md
%exclude %{python3_sitearch}/pandas/tests
%files -n python3-pandas+test
%{python3_sitearch}/pandas/tests
%ghost %{python3_sitearch}/*.dist-info
%changelog
* Thu Jul 20 2023 Python Maint <python-maint@redhat.com> - 1.5.3-8
- Rebuilt for Python 3.12
* Wed Jul 19 2023 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 1.5.3-7
- Backport patch for Python 3.12 deprecation
* Wed Jun 14 2023 Python Maint <python-maint@redhat.com> - 1.5.3-6
- Bootstrap for Python 3.12
* Mon May 29 2023 Benjamin A. Beasley <code@musicinmybrain.net> - 1.5.3-5
- Simplify running tests serially
* Tue May 16 2023 Benjamin A. Beasley <code@musicinmybrain.net> - 1.5.3-4
- Extend pyarrow 10/11 patch for pyarrow 12 (fix RHBZ#2207628)
* Wed Apr 19 2023 Benjamin A. Beasley <code@musicinmybrain.net> - 1.5.3-3
- Drop unnecessary weak dependency on python-pandas-datareader
- Backport proper pyarrow 10 and 11 support
* Thu Apr 13 2023 Benjamin A. Beasley <code@musicinmybrain.net> - 1.5.3-2
- Fix RHBZ#2171682 by backporting upstream PR#52150
* Mon Feb 27 2023 Benjamin A. Beasley <code@musicinmybrain.net> - 1.5.3-1
- Update to 1.5.3 (close RHBZ#2162303)
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Sun Dec 04 2022 Benjamin A. Beasley <code@musicinmybrain.net> - 1.5.2-1
- Update to 1.5.2
- Re-enable python-gcsfs BR/weak-dep. on F38 and later
- Work around a harmless test failure with libarrow/pyarrow 10
- Allow a slightly older numpy version for F37
- Skip a test that sometimes hangs on aarch64 and ppc64le
- Additional test skips for F37
- Drop some test skips that are no longer needed
- Fix several flaky test failures by no longer running tests in parallel
* Wed Nov 23 2022 Benjamin A. Beasley <code@musicinmybrain.net> - 1.5.1-2
- Update license breakdown and convert to SPDX
- Fully update optional dependencies and their versions
- Do not BR/Recommend pyarrow on 32-bit arches, where it is unavailable
- Drop accommodations for 32-bit ARM and Fedoras older than 36
- Update test skips for i686
* Mon Nov 07 2022 Jonathan Wright <jonathan@almalinux.org> - 1.5.1-1
- Update to 1.5.1 rhbz#2014890
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.5-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Wed Jun 29 2022 Python Maint <python-maint@redhat.com> - 1.3.5-3
- Rebuilt for Python 3.11
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 1.3.5-2
- Bootstrap for Python 3.11
* Sat Apr 02 2022 Benjamin A. Beasley <code@musicinmybrain.net> - 1.3.5-1
- Update to 1.3.5
- Drop compatibility with old RHEL releases that will not get this version anyway
- Update weak dependencies from documentation
- Also package README.md
- Do not install C sources
- Carefully handle virtual Provides and licenses for bundled/copied code
- Use pyproject-rpm-macros
- Run the tests (requires switching to GitHub source)
- Minimize optional dependencies when bootstrapping
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Thu Oct 07 2021 Sergio Pascual <sergiopr@fedoraproject.org> - 1.3.3-2
- New release of pandas 1.3.3
- Add missing sources
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Wed Jul 21 2021 Sergio Pascual <sergiopr@fedoraproject.org> - 1.3.0-1
- New release of pandas 1.3.0
* Mon Jun 07 2021 Python Maint <python-maint@redhat.com> - 1.2.4-2
- Rebuilt for Python 3.10
* Fri Jun 04 2021 Sergio Pascual <sergiopr@fedoraproject.org> - 1.2.4-1
- New release of pandas 1.2.4
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 1.2.1-3
- Rebuilt for Python 3.10
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Sun Jan 24 2021 Orion Poplawski <orion@nwra.com> - 1.2.1-1
- Update to 1.2.1
* Wed Jan 13 2021 Sergio Pascual <sergiopr@fedoraproject.org> - 1.2.0-1
- New release of pandas 1.2.0
* Fri Nov 27 2020 Sergio Pascual <sergiopr@fedoraproject.org> - 1.1.4-1
- New release of pandas 1.1.4
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Sun Jul 05 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 1.0.5-1
- Update to latest version
* Mon May 25 2020 Miro Hrončok <mhroncok@redhat.com> - 1.0.1-2
- Rebuilt for Python 3.9
* Fri Feb 07 2020 Orion Poplawski <orion@nwra.com> - 1.0.1-1
- Update to 1.0.1
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.25.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Mon Nov 11 2019 Sergio Pascual <sergiopr@fedoraproject.org> - 0.25.3-1
- New release of pandas 0.25.3 (python 3.8 support included)
* Fri Sep 13 2019 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.25.1-2
- Backport patch for Python 3.8 compatibility
* Sat Aug 24 2019 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.25.1-1
- Update to latest version
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 0.24.1-5
- Rebuilt for Python 3.8
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.24.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu Jun 27 2019 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.24.1-3
- Fix doc build with numpydoc 0.9
* Tue Jun 18 2019 Miro Hrončok <mhroncok@redhat.com> - 0.24.1-2
- Subpackage python2-pandas has been removed
See https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal
* Thu Mar 07 2019 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.24.1-1
- Update to 0.24.1
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.23.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Tue Aug 21 2018 Sergio Pascual <sergiopr@fedoraproject.org> - 0.23.4-1
- New release of pandas 0.23.4
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.23.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 0.23.0-2
- Rebuilt for Python 3.7
* Tue Jun 05 2018 Sergio Pascual <sergiopr@fedoraproject.org> - 0.23.0-1
- New release of pandas 0.23.0
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.22.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Wed Jan 17 2018 Sergio Pascual <sergiopr@fedoraproject.org> - 0.22.0-1
- New release of pandas 0.22.0
* Tue Jan 16 2018 Troy Dawson <tdawson@redhat.com> - 0.20.3-2
- Update conditionals
* Sun Sep 10 2017 Sergio Pascual <sergiopr@fedoraproject.org> - 0.20.3-1
- New upstream version (0.20.3)
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.20.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.20.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Mon May 15 2017 Sergio Pascual <sergiopr@fedoraproject.org> - 0.20.1-1
- New upstream version (0.20.1)
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Fri Jan 27 2017 Sergio Pascual <sergiopr@fedoraproject.org> - 0.19.2-1
- New upstream version (0.19.2)
* Mon Dec 19 2016 Miro Hrončok <mhroncok@redhat.com> - 0.19.1-2
- Rebuild for Python 3.6
* Wed Nov 09 2016 Sergio Pascual <sergiopr@fedoraproject.org> - 0.19.1-1
- New upstream version (0.19.1)
* Wed Oct 19 2016 Sergio Pascual <sergiopr@fedoraproject.org> - 0.19.0-1
- New upstream version (0.19.0)
- Brings pandas-datareader using recommends
* Sat Oct 15 2016 Peter Robinson <pbrobinson@fedoraproject.org> - 0.18.1-3
- rebuilt for matplotlib-2.0.0
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.18.1-2
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
* Wed Jul 13 2016 Sergio Pascual <sergiopr@fedoraproject.org> - 0.18.1-1
- New upstream version (0.18.1)
- Update pypi url
* Sat Apr 09 2016 Igor Gnatenko <ignatenko@redhat.com> - 0.18.0-3
- Fix broken deps
* Sat Apr 09 2016 Igor Gnatenko <ignatenko@redhat.com> - 0.18.0-2
- Fix python_provide macros usage (FTBFS for some packages)
* Wed Mar 30 2016 Sergio Pascual <sergiopr@fedoraproject.org> - 0.18.0-1
- New upstream version (0.18.0)
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.17.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Sun Jan 03 2016 Sergio Pascual <sergiopr@fedoraproject.org> - 0.17.1-1
- New upstream version (0.17.1)
- Add new dependecy as weak dep (fixes bz #1288919)
* Tue Nov 10 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.17.0-3
- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5
* Wed Oct 28 2015 Orion Poplawski <orion@cora.nwra.com> - 0.17.0-2
- Use common build directory, new python macros
- Filter provides
- Fix provides
* Mon Oct 12 2015 Sergio Pascual <sergiopr@fedoraproject.org> - 0.17.0-1
- New release of pandas 0.17.0
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.16.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Mon Jun 15 2015 Sergio Pascual <sergiopr@fedoraproject.org> - 0.16.2-1
- New release of pandas 0.16.2
* Mon May 18 2015 Sergio Pascual <sergiopr@fedoraproject.org> - 0.16.1-1
- New release of pandas 0.16.1
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 0.16.0-2
- Rebuilt for GCC 5 C++11 ABI change
* Tue Mar 24 2015 Sergio Pascual <sergiopr@fedoraproject.org> - 0.16.0-1
- New release of pandas 0.16.0
- Use license macro
- Don't use py3dir (new python guidelines)
* Tue Jan 20 2015 Sergio Pascual <sergiopr@fedoraproject.org> - 0.15.2-3
- Pandas actually supports dateutil 2
* Mon Jan 19 2015 Sergio Pascual <sergiopr@fedoraproject.org> - 0.15.2-2
- Update dependency on dateutil to dateutil15 (bz #1183368)
* Wed Dec 17 2014 Sergio Pascual <sergiopr@fedoraproject.org> - 0.15.2-1
- New release of pandas 0.15.2
* Thu Nov 20 2014 Sergio Pascual <sergiopr@fedoraproject.org> - 0.15.1-1
- New release of pandas 0.15.1
* Mon Oct 20 2014 Sergio Pascual <sergiopr@fedoraproject.org> - 0.15.0-1
- New release of pandas 0.15.0
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.14.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sun Jul 13 2014 Sergio Pascual <sergiopr@fedoraproject.org> - 0.14.1-1
- New release of pandas 0.14.1
* Mon Jun 16 2014 Sergio Pascual <sergiopr@fedoraproject.org> - 0.14.0-1
- New release of pandas 0.14.0
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.12.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Wed May 14 2014 Bohuslav Kabrda <bkabrda@redhat.com> - 0.12.0-5
- Rebuilt for https://fedoraproject.org/wiki/Changes/Python_3.4
* Tue Jan 28 2014 Sergio Pascual <sergiopr@fedoraproject.org> - 0.12.0-4
- Enable python3 build
- Set CFLAGS before build
* Fri Dec 13 2013 Kushal Das <kushal@fedoraproject.org> 0.12.0-3
- Fixed dependency name
* Fri Dec 06 2013 Pierre-Yves Chibon <pingou@pingoured>fr - 0.12.0-2
- Change BR from python-setuptools-devel to python-setuptools
See https://fedoraproject.org/wiki/Changes/Remove_Python-setuptools-devel
* Fri Sep 20 2013 Kushal Das <kushal@fedoraproject.org> 0.12.0-1
- New release of pandas 0.12.0
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Mon Dec 24 2012 Kushal Das <kushal@fedoraproject.org> 0.10.0-1
- New release of pandas 0.10.0
* Thu Nov 08 2012 Kushal Das <kushal@fedoraproject.org> 0.10.0-1
- New release of pandas 0.10.0
* Thu Nov 08 2012 Kushal Das <kushal@fedoraproject.org> 0.9-1
- New release of pandas
* Fri Aug 03 2012 Kushal Das <kushal@fedoraproject.org> 0.8.1-2
- Fixes from review request
* Tue Jul 10 2012 Kushal Das <kushal@fedoraproject.org> 0.8.1-1
- Initial release in Fedora