summaryrefslogtreecommitdiff
path: root/dev-python/pandas
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-12 19:09:37 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-12 19:09:37 -0500
commitb590c8d7572b727d565cc0b8ff660d43569845de (patch)
tree06f7a4102ea4e845df8b66660f252920d52952f9 /dev-python/pandas
parent24f9cbfc4c34fdb6a6e03311674414e881ceab47 (diff)
downloadbaldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.gz
baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.xz
baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.zip
Adding metadata
Diffstat (limited to 'dev-python/pandas')
-rw-r--r--dev-python/pandas/Manifest5
-rw-r--r--dev-python/pandas/files/pandas-2.3.1-xarray-test.patch23
-rw-r--r--dev-python/pandas/metadata.xml25
-rw-r--r--dev-python/pandas/pandas-2.3.3.ebuild221
-rw-r--r--dev-python/pandas/pandas-3.0.2.ebuild192
-rw-r--r--dev-python/pandas/pandas-3.0.3.ebuild191
6 files changed, 657 insertions, 0 deletions
diff --git a/dev-python/pandas/Manifest b/dev-python/pandas/Manifest
new file mode 100644
index 000000000000..fa21465ae279
--- /dev/null
+++ b/dev-python/pandas/Manifest
@@ -0,0 +1,5 @@
+DIST pandas-2.3.3.tar.gz 4495223 BLAKE2B c31604617900d439020dcdd66fcbca1cf3b720b6f4dd8ea51891946ad04774754cf7636a2ffb9fe746d15911a88153d36d4033b6a0207e9c7a1653a0f677570d SHA512 4179acb9fd9d1c5d543bb19b22483b4c2b17a36d5b10270a02ff4d8370b43c16a93673bf5509a5b1d1c960c0fde9238bbbf5b309c6745d2abf3d934535f3fd85
+DIST pandas-3.0.2.tar.gz 4645855 BLAKE2B 9d8ccd481d42040a45b990c84acd1ef7ca842bc3e0f80827875aabdf8c4278a2b2f0cedacfd8b73dca4ef36037162fef63e1feffb46d4522c6cc794d9a2052d6 SHA512 71a50f40812f0a5ac80068cc79fb3ec8685f9e21b15ba6cda136465b1258aef5fd8ab4d9b677ef53c6b3f3e8d9939a058457594754c34f9aa6748fc641720ab3
+DIST pandas-3.0.2.tar.gz.provenance 9326 BLAKE2B 11ae41e6c60a15415cbed7f43ecd90a23bd8a465588c73002d197706fc2d5680cfb1471a0f5061d27310f01101c99514ed7088649101d49515722093cd54d7a5 SHA512 402b810942056a62eba500802b1bdf5e8db28df3b47e0fb71340a360ee2c2348a0875b877f72e7c6de21f04980d72a8f547838e050a9bbcbd7bcfea0eb117b02
+DIST pandas-3.0.3.tar.gz 4651414 BLAKE2B 8e3da7b646d67025f7e00baff960658326e973a270a6432210e60a1044b33c317a00a8755c5633c64faa337cd66d8fbfb2cfe768916254a7b55f6fc7a49ebc8f SHA512 000b859c42aabf9364bf4e35fcd728a7a4ff4cfdbc7d2d40b4d3739087e1d03704438a2705e9e04a4025f6d98559bbe4c2f4f695c91b2ba4c4347b0444d48202
+DIST pandas-3.0.3.tar.gz.provenance 9318 BLAKE2B f414b7ef172a368dfd3671d637ab14856b62ae5eea6f630a0d638edcda83799e319674e2e03fd6a5d495baec81914d5cb8fce1335effdf8a295b83e812a3ad8a SHA512 f417d27fe7fc0894f93656196fc65f72bd9b7ed0f287267e2da4624e9c2c3e12070135a011aef379e415a98939cf459bf8e6cbb4a0bd93bcfde5683d79d0140e
diff --git a/dev-python/pandas/files/pandas-2.3.1-xarray-test.patch b/dev-python/pandas/files/pandas-2.3.1-xarray-test.patch
new file mode 100644
index 000000000000..666215fb8f80
--- /dev/null
+++ b/dev-python/pandas/files/pandas-2.3.1-xarray-test.patch
@@ -0,0 +1,23 @@
+From f71316724d8e3aeb3ea46b0cfe84c4c5aefff3dc Mon Sep 17 00:00:00 2001
+From: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com>
+Date: Mon, 5 May 2025 10:55:36 -0700
+Subject: [PATCH] Fix xarray failures post xarray unpin
+
+---
+ pandas/tests/generic/test_to_xarray.py | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/pandas/tests/generic/test_to_xarray.py b/pandas/tests/generic/test_to_xarray.py
+index 9b589c9348..c43645e173 100644
+--- a/pandas/tests/generic/test_to_xarray.py
++++ b/pandas/tests/generic/test_to_xarray.py
+@@ -53,9 +53,6 @@ class TestDataFrameToXArray:
+ # datetimes w/tz are preserved
+ # column names are lost
+ expected = df.copy()
+- expected["f"] = expected["f"].astype(
+- object if not using_infer_string else "str"
+- )
+ expected.columns.name = None
+ tm.assert_frame_equal(result.to_dataframe(), expected)
+
diff --git a/dev-python/pandas/metadata.xml b/dev-python/pandas/metadata.xml
new file mode 100644
index 000000000000..579de4cb3617
--- /dev/null
+++ b/dev-python/pandas/metadata.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>sci@gentoo.org</email>
+ <name>Gentoo Science Project</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ </maintainer>
+ <longdescription lang="en">
+ Pandas is a Python package providing fast, flexible, and expressive
+ data structures designed to make working with "relational" or
+ "labeled" data both easy and intuitive. It aims to be the
+ fundamental high-level building block for doing practical, real
+ world data analysis in Python.
+ </longdescription>
+ <use>
+ <flag name="full-support">Pull all packages to give pandas full support</flag>
+ </use>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:numfocus:pandas</remote-id>
+ </upstream>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-python/pandas/pandas-2.3.3.ebuild b/dev-python/pandas/pandas-2.3.3.ebuild
new file mode 100644
index 000000000000..a664481e552d
--- /dev/null
+++ b/dev-python/pandas/pandas-2.3.3.ebuild
@@ -0,0 +1,221 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=meson-python
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="threads(+)"
+
+VIRTUALX_REQUIRED="manual"
+
+inherit distutils-r1 optfeature pypi toolchain-funcs virtualx
+
+DESCRIPTION="Powerful data structures for data analysis and statistics"
+HOMEPAGE="
+ https://pandas.pydata.org/
+ https://github.com/pandas-dev/pandas/
+ https://pypi.org/project/pandas/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 arm64 ~riscv x86"
+IUSE="big-endian full-support minimal test X"
+RESTRICT="!test? ( test )"
+
+RECOMMENDED_DEPEND="
+ >=dev-python/bottleneck-1.3.4[${PYTHON_USEDEP}]
+ >=dev-python/numexpr-2.8.0[${PYTHON_USEDEP}]
+"
+
+# TODO: add pandas-gbq to the tree
+# TODO: Re-add dev-python/statsmodel[python3_11] dep once it supports python3_11
+# https://github.com/statsmodels/statsmodels/issues/8287
+OPTIONAL_DEPEND="
+ >=dev-python/beautifulsoup4-4.14.2[${PYTHON_USEDEP}]
+ dev-python/blosc[${PYTHON_USEDEP}]
+ >=dev-python/html5lib-1.1[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.1.2[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.8.0[${PYTHON_USEDEP}]
+ >=dev-python/matplotlib-3.6.1[${PYTHON_USEDEP}]
+ >=dev-python/openpyxl-3.0.7[${PYTHON_USEDEP}]
+ >=dev-python/sqlalchemy-1.4.36[${PYTHON_USEDEP}]
+ >=dev-python/tabulate-0.8.10[${PYTHON_USEDEP}]
+ >=dev-python/xarray-2022.3.0[${PYTHON_USEDEP}]
+ >=dev-python/xlrd-2.0.1[${PYTHON_USEDEP}]
+ >=dev-python/xlsxwriter-3.0.3[${PYTHON_USEDEP}]
+ >=dev-python/xlwt-1.3.0[${PYTHON_USEDEP}]
+ !arm? ( !hppa? ( !ppc? ( !x86? (
+ >=dev-python/scipy-1.8.1[${PYTHON_USEDEP}]
+ dev-python/statsmodels[${PYTHON_USEDEP}]
+ ) ) ) )
+ !big-endian? (
+ >=dev-python/tables-3.7.0[${PYTHON_USEDEP}]
+ )
+ X? (
+ || (
+ >=dev-python/pyqt5-5.15.6[${PYTHON_USEDEP}]
+ >=dev-python/qtpy-2.2.0[${PYTHON_USEDEP}]
+ x11-misc/xclip
+ x11-misc/xsel
+ )
+ )
+"
+DEPEND="
+ >=dev-python/numpy-1.23.2:=[${PYTHON_USEDEP}]
+"
+COMMON_DEPEND="
+ ${DEPEND}
+ >=dev-python/python-dateutil-2.8.2[${PYTHON_USEDEP}]
+ >=dev-python/pytz-2020.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${COMMON_DEPEND}
+ >=dev-build/meson-1.2.1
+ >=dev-python/cython-3.0.5[${PYTHON_USEDEP}]
+ >=dev-python/versioneer-0.28[${PYTHON_USEDEP}]
+ test? (
+ ${VIRTUALX_DEPEND}
+ ${RECOMMENDED_DEPEND}
+ ${OPTIONAL_DEPEND}
+ dev-libs/apache-arrow[brotli,parquet,snappy]
+ >=dev-python/beautifulsoup4-4.14.2[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-6.46.1[${PYTHON_USEDEP}]
+ >=dev-python/openpyxl-3.0.10[${PYTHON_USEDEP}]
+ >=dev-python/pyarrow-10.0.1[parquet,${PYTHON_USEDEP}]
+ >=dev-python/pymysql-1.0.2[${PYTHON_USEDEP}]
+ >=dev-python/xlsxwriter-3.0.3[${PYTHON_USEDEP}]
+ x11-misc/xclip
+ x11-misc/xsel
+ )
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ dev-python/tzdata[${PYTHON_USEDEP}]
+ !minimal? ( ${RECOMMENDED_DEPEND} )
+ full-support? ( ${OPTIONAL_DEPEND} )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+PATCHES=(
+ # https://github.com/pandas-dev/pandas/pull/61331/commits/12b1d00622ffc8b99986da2f4478cc2df4da213a
+ # (partially applied to 2.3.1, sigh)
+ "${FILESDIR}/${PN}-2.3.1-xarray-test.patch"
+)
+
+src_test() {
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ # Note; deselects relative to pandas/
+ local EPYTEST_DESELECT=(
+ # test for rounding errors, fails if we have better precision
+ # e.g. on amd64 with FMA or on arm64
+ # https://github.com/pandas-dev/pandas/issues/38921
+ tests/window/test_rolling.py::test_rolling_var_numerical_issues
+
+ # TODO: missing data not covered by --no-strict-data-files?
+ tests/io/xml/test_xml.py::test_empty_stylesheet
+ tests/io/xml/test_xml.py::test_wrong_file_path
+
+ # deprecation warning
+ 'tests/computation/test_eval.py::TestEval::test_scalar_unary[numexpr-pandas]'
+
+ # requires -Werror
+ tests/tslibs/test_to_offset.py::test_to_offset_lowercase_frequency_deprecated
+ tests/tslibs/test_to_offset.py::test_to_offset_uppercase_frequency_deprecated
+ tests/copy_view/test_array.py::test_dataframe_multiple_numpy_dtypes
+
+ # probably pytz, doesn't happen on main (where zoneinfo is used)
+ 'tests/arrays/test_array.py::test_array_inference[data7-expected7]'
+
+ # random warning regressions?!
+ tests/test_expressions.py::TestExpressions::test_bool_ops_warn_on_arithmetic
+ 'tests/series/test_arithmetic.py::TestSeriesArithmetic::test_add_list_to_masked_array_boolean[numexpr]'
+ 'tests/frame/test_arithmetic.py::TestFrameArithmetic::test_binop_other[numexpr-add-True-bool]'
+ 'tests/frame/test_arithmetic.py::TestFrameArithmetic::test_binop_other[numexpr-mul-True-bool]'
+ )
+
+ if ! tc-has-64bit-time_t; then
+ EPYTEST_DESELECT+=(
+ # Needs 64-bit time_t (TODO: split into 32-bit arch only section)
+ tests/tseries/offsets/test_year.py::test_add_out_of_pydatetime_range
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BusinessDay]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BusinessHour]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BusinessMonthEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BusinessMonthBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BQuarterEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BQuarterBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-CustomBusinessDay]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-CustomBusinessHour]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-CustomBusinessMonthEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-CustomBusinessMonthBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-MonthEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-MonthBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-SemiMonthBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-SemiMonthEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-QuarterEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-LastWeekOfMonth]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-WeekOfMonth]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-Week]'
+ )
+ fi
+
+ if ! has_version "dev-python/scipy[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/plotting/test_misc.py::test_savefig
+ )
+ fi
+
+ case ${EPYTHON} in
+ python3.14)
+ EPYTEST_DESELECT+=(
+ 'tests/computation/test_eval.py::TestEval::test_simple_cmp_ops[float-float-numexpr-pandas-in]'
+ 'tests/computation/test_eval.py::TestEval::test_simple_cmp_ops[float-float-numexpr-pandas-not in]'
+ 'tests/computation/test_eval.py::TestEval::test_simple_cmp_ops[float-float-python-pandas-in]'
+ 'tests/computation/test_eval.py::TestEval::test_simple_cmp_ops[float-float-python-pandas-not in]'
+ 'tests/computation/test_eval.py::TestEval::test_compound_invert_op[float-float-numexpr-pandas-in]'
+ 'tests/computation/test_eval.py::TestEval::test_compound_invert_op[float-float-numexpr-pandas-not in]'
+ 'tests/computation/test_eval.py::TestEval::test_compound_invert_op[float-float-python-pandas-in]'
+ 'tests/computation/test_eval.py::TestEval::test_compound_invert_op[float-float-python-pandas-not in]'
+ 'tests/computation/test_eval.py::TestOperations::test_simple_arith_ops[numexpr-pandas]'
+ 'tests/computation/test_eval.py::TestOperations::test_simple_arith_ops[python-pandas]'
+ )
+ ;;
+ esac
+
+ local -x LC_ALL=C.UTF-8
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ "${EPYTHON}" -c "import pandas; pandas.show_versions()" || die
+ # nonfatal from virtx
+ # --no-strict-data-files is necessary since upstream prevents data
+ # files from even being included in GitHub archives, sigh
+ # https://github.com/pandas-dev/pandas/issues/54907
+ nonfatal epytest pandas/tests \
+ --no-strict-data-files -o xfail_strict=false \
+ -m "not single_cpu and not slow and not network and not db" ||
+ die "Tests failed with ${EPYTHON}"
+ rm test_stata.dta || die
+}
+
+pkg_postinst() {
+ optfeature "accelerating certain types of NaN evaluations, using specialized cython routines to achieve large speedups." dev-python/bottleneck
+ optfeature "accelerating certain numerical operations, using multiple cores as well as smart chunking and caching to achieve large speedups" ">=dev-python/numexpr-2.1"
+ optfeature "needed for pandas.io.html.read_html" dev-python/beautifulsoup4 dev-python/html5lib dev-python/lxml
+ optfeature "for msgpack compression using blosc" dev-python/blosc
+ optfeature "Template engine for conditional HTML formatting" dev-python/jinja2
+ optfeature "Plotting support" dev-python/matplotlib
+ optfeature "Needed for Excel I/O" ">=dev-python/openpyxl-3.0.10" dev-python/xlsxwriter dev-python/xlrd dev-python/xlwt
+ optfeature "necessary for HDF5-based storage" ">=dev-python/tables-3.7.0"
+ optfeature "R I/O support" dev-python/rpy2
+ optfeature "Needed for parts of pandas.stats" dev-python/statsmodels
+ optfeature "SQL database support" ">=dev-python/sqlalchemy-1.4.36"
+ optfeature "miscellaneous statistical functions" dev-python/scipy
+ optfeature "necessary to use pandas.io.clipboard.read_clipboard support" dev-python/pyqt5 dev-python/qtpy x11-misc/xclip x11-misc/xsel
+}
diff --git a/dev-python/pandas/pandas-3.0.2.ebuild b/dev-python/pandas/pandas-3.0.2.ebuild
new file mode 100644
index 000000000000..2312bd7329ba
--- /dev/null
+++ b/dev-python/pandas/pandas-3.0.2.ebuild
@@ -0,0 +1,192 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=meson-python
+PYPI_VERIFY_REPO=https://github.com/pandas-dev/pandas
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="threads(+)"
+
+VIRTUALX_REQUIRED="manual"
+
+inherit distutils-r1 optfeature pypi toolchain-funcs virtualx
+
+DESCRIPTION="Powerful data structures for data analysis and statistics"
+HOMEPAGE="
+ https://pandas.pydata.org/
+ https://github.com/pandas-dev/pandas/
+ https://pypi.org/project/pandas/
+"
+
+LICENSE="BSD"
+SLOT="0"
+if [[ ${PV} != *_rc* ]]; then
+ KEYWORDS="amd64 arm64 ~riscv ~x86"
+fi
+IUSE="big-endian full-support minimal test X"
+RESTRICT="!test? ( test )"
+
+RECOMMENDED_DEPEND="
+ >=dev-python/bottleneck-1.3.4[${PYTHON_USEDEP}]
+ >=dev-python/numexpr-2.8.0[${PYTHON_USEDEP}]
+"
+
+# TODO: add pandas-gbq to the tree
+# TODO: Re-add dev-python/statsmodel[python3_11] dep once it supports python3_11
+# https://github.com/statsmodels/statsmodels/issues/8287
+OPTIONAL_DEPEND="
+ >=dev-python/beautifulsoup4-4.14.2[${PYTHON_USEDEP}]
+ dev-python/blosc[${PYTHON_USEDEP}]
+ >=dev-python/html5lib-1.1[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.1.2[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.8.0[${PYTHON_USEDEP}]
+ >=dev-python/matplotlib-3.6.1[${PYTHON_USEDEP}]
+ >=dev-python/openpyxl-3.0.7[${PYTHON_USEDEP}]
+ >=dev-python/sqlalchemy-1.4.36[${PYTHON_USEDEP}]
+ >=dev-python/tabulate-0.8.10[${PYTHON_USEDEP}]
+ >=dev-python/xarray-2022.3.0[${PYTHON_USEDEP}]
+ >=dev-python/xlrd-2.0.1[${PYTHON_USEDEP}]
+ >=dev-python/xlsxwriter-3.0.3[${PYTHON_USEDEP}]
+ >=dev-python/xlwt-1.3.0[${PYTHON_USEDEP}]
+ !arm? ( !hppa? ( !ppc? ( !x86? (
+ >=dev-python/scipy-1.8.1[${PYTHON_USEDEP}]
+ dev-python/statsmodels[${PYTHON_USEDEP}]
+ ) ) ) )
+ !big-endian? (
+ >=dev-python/tables-3.7.0[${PYTHON_USEDEP}]
+ )
+ X? (
+ || (
+ >=dev-python/pyqt5-5.15.6[${PYTHON_USEDEP}]
+ >=dev-python/qtpy-2.2.0[${PYTHON_USEDEP}]
+ x11-misc/xclip
+ x11-misc/xsel
+ )
+ )
+"
+DEPEND="
+ >=dev-python/numpy-2.3.3:=[${PYTHON_USEDEP}]
+"
+COMMON_DEPEND="
+ ${DEPEND}
+ >=dev-python/python-dateutil-2.8.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${COMMON_DEPEND}
+ >=dev-build/meson-1.2.1
+ >=dev-python/cython-3.1.0[${PYTHON_USEDEP}]
+ >=dev-python/versioneer-0.28[${PYTHON_USEDEP}]
+ test? (
+ ${VIRTUALX_DEPEND}
+ ${RECOMMENDED_DEPEND}
+ ${OPTIONAL_DEPEND}
+ dev-libs/apache-arrow[brotli,parquet,snappy]
+ >=dev-python/beautifulsoup4-4.14.2[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-6.46.1[${PYTHON_USEDEP}]
+ >=dev-python/openpyxl-3.0.10[${PYTHON_USEDEP}]
+ >=dev-python/pyarrow-10.0.1[parquet,${PYTHON_USEDEP}]
+ >=dev-python/pymysql-1.0.2[${PYTHON_USEDEP}]
+ >=dev-python/xlsxwriter-3.0.3[${PYTHON_USEDEP}]
+ x11-misc/xclip
+ x11-misc/xsel
+ )
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ !minimal? ( ${RECOMMENDED_DEPEND} )
+ full-support? ( ${OPTIONAL_DEPEND} )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_test() {
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # missing test data
+ pandas/tests/io/pytables/test_compat.py
+ )
+ # Note; deselects relative to pandas/
+ local EPYTEST_DESELECT=(
+ # require -Werror
+ # https://github.com/pandas-dev/pandas/pull/63436
+ tests/config/test_config.py::TestConfig::test_case_insensitive
+
+ # deprecation warning
+ 'tests/computation/test_eval.py::TestEval::test_scalar_unary[numexpr-pandas]'
+ )
+
+ if ! tc-has-64bit-time_t; then
+ EPYTEST_DESELECT+=(
+ # Needs 64-bit time_t (TODO: split into 32-bit arch only section)
+ tests/tseries/offsets/test_year.py::test_add_out_of_pydatetime_range
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BusinessDay]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BusinessHour]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BusinessMonthEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BusinessMonthBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BQuarterEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BQuarterBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-CustomBusinessDay]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-CustomBusinessHour]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-CustomBusinessMonthEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-CustomBusinessMonthBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-MonthEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-MonthBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-SemiMonthBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-SemiMonthEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-QuarterEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-LastWeekOfMonth]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-WeekOfMonth]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-Week]'
+ )
+ fi
+
+ if ! has_version "dev-python/scipy[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/plotting/test_misc.py::test_savefig
+ )
+ fi
+
+ case ${EPYTHON} in
+ python3.14)
+ EPYTEST_DESELECT+=(
+ # crashing
+ tests/resample/test_resampler_grouper.py::test_tab_complete_ipython6_warning
+ )
+ ;;
+ esac
+
+ local -x LC_ALL=C.UTF-8
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ "${EPYTHON}" -c "import pandas; pandas.show_versions()" || die
+ # nonfatal from virtx
+ # --no-strict-data-files is necessary since upstream prevents data
+ # files from even being included in GitHub archives, sigh
+ # https://github.com/pandas-dev/pandas/issues/54907
+ nonfatal epytest pandas/tests \
+ --no-strict-data-files -o xfail_strict=false \
+ -m "not single_cpu and not slow and not network and not db" ||
+ die "Tests failed with ${EPYTHON}"
+}
+
+pkg_postinst() {
+ optfeature "accelerating certain types of NaN evaluations, using specialized cython routines to achieve large speedups." dev-python/bottleneck
+ optfeature "accelerating certain numerical operations, using multiple cores as well as smart chunking and caching to achieve large speedups" ">=dev-python/numexpr-2.1"
+ optfeature "needed for pandas.io.html.read_html" dev-python/beautifulsoup4 dev-python/html5lib dev-python/lxml
+ optfeature "for msgpack compression using blosc" dev-python/blosc
+ optfeature "Template engine for conditional HTML formatting" dev-python/jinja2
+ optfeature "Plotting support" dev-python/matplotlib
+ optfeature "Needed for Excel I/O" ">=dev-python/openpyxl-3.0.10" dev-python/xlsxwriter dev-python/xlrd dev-python/xlwt
+ optfeature "necessary for HDF5-based storage" ">=dev-python/tables-3.7.0"
+ optfeature "R I/O support" dev-python/rpy2
+ optfeature "Needed for parts of pandas.stats" dev-python/statsmodels
+ optfeature "SQL database support" ">=dev-python/sqlalchemy-1.4.36"
+ optfeature "miscellaneous statistical functions" dev-python/scipy
+ optfeature "necessary to use pandas.io.clipboard.read_clipboard support" dev-python/pyqt5 dev-python/qtpy x11-misc/xclip x11-misc/xsel
+}
diff --git a/dev-python/pandas/pandas-3.0.3.ebuild b/dev-python/pandas/pandas-3.0.3.ebuild
new file mode 100644
index 000000000000..328b2ad1be21
--- /dev/null
+++ b/dev-python/pandas/pandas-3.0.3.ebuild
@@ -0,0 +1,191 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=meson-python
+PYPI_VERIFY_REPO=https://github.com/pandas-dev/pandas
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="threads(+)"
+
+VIRTUALX_REQUIRED="manual"
+
+inherit distutils-r1 optfeature pypi toolchain-funcs virtualx
+
+DESCRIPTION="Powerful data structures for data analysis and statistics"
+HOMEPAGE="
+ https://pandas.pydata.org/
+ https://github.com/pandas-dev/pandas/
+ https://pypi.org/project/pandas/
+"
+
+LICENSE="BSD"
+SLOT="0"
+if [[ ${PV} != *_rc* ]]; then
+ KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+fi
+IUSE="big-endian full-support minimal test X"
+RESTRICT="!test? ( test )"
+
+RECOMMENDED_DEPEND="
+ >=dev-python/bottleneck-1.3.4[${PYTHON_USEDEP}]
+ >=dev-python/numexpr-2.8.0[${PYTHON_USEDEP}]
+"
+
+# TODO: add pandas-gbq to the tree
+# TODO: Re-add dev-python/statsmodel[python3_11] dep once it supports python3_11
+# https://github.com/statsmodels/statsmodels/issues/8287
+OPTIONAL_DEPEND="
+ >=dev-python/beautifulsoup4-4.14.2[${PYTHON_USEDEP}]
+ dev-python/blosc[${PYTHON_USEDEP}]
+ >=dev-python/html5lib-1.1[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.1.2[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.8.0[${PYTHON_USEDEP}]
+ >=dev-python/matplotlib-3.6.1[${PYTHON_USEDEP}]
+ >=dev-python/openpyxl-3.0.7[${PYTHON_USEDEP}]
+ >=dev-python/sqlalchemy-1.4.36[${PYTHON_USEDEP}]
+ >=dev-python/tabulate-0.8.10[${PYTHON_USEDEP}]
+ >=dev-python/xarray-2022.3.0[${PYTHON_USEDEP}]
+ >=dev-python/xlrd-2.0.1[${PYTHON_USEDEP}]
+ >=dev-python/xlsxwriter-3.0.3[${PYTHON_USEDEP}]
+ >=dev-python/xlwt-1.3.0[${PYTHON_USEDEP}]
+ !arm? ( !hppa? ( !ppc? ( !x86? (
+ >=dev-python/scipy-1.8.1[${PYTHON_USEDEP}]
+ dev-python/statsmodels[${PYTHON_USEDEP}]
+ ) ) ) )
+ !big-endian? (
+ >=dev-python/tables-3.7.0[${PYTHON_USEDEP}]
+ )
+ X? (
+ || (
+ >=dev-python/qtpy-2.2.0[${PYTHON_USEDEP}]
+ x11-misc/xclip
+ x11-misc/xsel
+ )
+ )
+"
+DEPEND="
+ >=dev-python/numpy-2.3.3:=[${PYTHON_USEDEP}]
+"
+COMMON_DEPEND="
+ ${DEPEND}
+ >=dev-python/python-dateutil-2.8.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${COMMON_DEPEND}
+ >=dev-build/meson-1.2.1
+ >=dev-python/cython-3.1.0[${PYTHON_USEDEP}]
+ >=dev-python/versioneer-0.28[${PYTHON_USEDEP}]
+ test? (
+ ${VIRTUALX_DEPEND}
+ ${RECOMMENDED_DEPEND}
+ ${OPTIONAL_DEPEND}
+ dev-libs/apache-arrow[brotli,parquet,snappy]
+ >=dev-python/beautifulsoup4-4.14.2[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-6.46.1[${PYTHON_USEDEP}]
+ >=dev-python/openpyxl-3.0.10[${PYTHON_USEDEP}]
+ >=dev-python/pyarrow-10.0.1[parquet,${PYTHON_USEDEP}]
+ >=dev-python/pymysql-1.0.2[${PYTHON_USEDEP}]
+ >=dev-python/xlsxwriter-3.0.3[${PYTHON_USEDEP}]
+ x11-misc/xclip
+ x11-misc/xsel
+ )
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ !minimal? ( ${RECOMMENDED_DEPEND} )
+ full-support? ( ${OPTIONAL_DEPEND} )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_test() {
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # missing test data
+ pandas/tests/io/pytables/test_compat.py
+ )
+ # Note; deselects relative to pandas/
+ local EPYTEST_DESELECT=(
+ # require -Werror
+ # https://github.com/pandas-dev/pandas/pull/63436
+ tests/config/test_config.py::TestConfig::test_case_insensitive
+
+ # deprecation warning
+ 'tests/computation/test_eval.py::TestEval::test_scalar_unary[numexpr-pandas]'
+ )
+
+ if ! tc-has-64bit-time_t; then
+ EPYTEST_DESELECT+=(
+ # Needs 64-bit time_t (TODO: split into 32-bit arch only section)
+ tests/tseries/offsets/test_year.py::test_add_out_of_pydatetime_range
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BusinessDay]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BusinessHour]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BusinessMonthEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BusinessMonthBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BQuarterEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-BQuarterBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-CustomBusinessDay]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-CustomBusinessHour]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-CustomBusinessMonthEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-CustomBusinessMonthBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-MonthEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-MonthBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-SemiMonthBegin]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-SemiMonthEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-QuarterEnd]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-LastWeekOfMonth]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-WeekOfMonth]'
+ 'tests/tseries/offsets/test_common.py::test_apply_out_of_range[tzlocal()-Week]'
+ )
+ fi
+
+ if ! has_version "dev-python/scipy[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/plotting/test_misc.py::test_savefig
+ )
+ fi
+
+ case ${EPYTHON} in
+ python3.14)
+ EPYTEST_DESELECT+=(
+ # crashing
+ tests/resample/test_resampler_grouper.py::test_tab_complete_ipython6_warning
+ )
+ ;;
+ esac
+
+ local -x LC_ALL=C.UTF-8
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ "${EPYTHON}" -c "import pandas; pandas.show_versions()" || die
+ # nonfatal from virtx
+ # --no-strict-data-files is necessary since upstream prevents data
+ # files from even being included in GitHub archives, sigh
+ # https://github.com/pandas-dev/pandas/issues/54907
+ nonfatal epytest pandas/tests \
+ --no-strict-data-files -o xfail_strict=false \
+ -m "not single_cpu and not slow and not network and not db" ||
+ die "Tests failed with ${EPYTHON}"
+}
+
+pkg_postinst() {
+ optfeature "accelerating certain types of NaN evaluations, using specialized cython routines to achieve large speedups." dev-python/bottleneck
+ optfeature "accelerating certain numerical operations, using multiple cores as well as smart chunking and caching to achieve large speedups" ">=dev-python/numexpr-2.1"
+ optfeature "needed for pandas.io.html.read_html" dev-python/beautifulsoup4 dev-python/html5lib dev-python/lxml
+ optfeature "for msgpack compression using blosc" dev-python/blosc
+ optfeature "Template engine for conditional HTML formatting" dev-python/jinja2
+ optfeature "Plotting support" dev-python/matplotlib
+ optfeature "Needed for Excel I/O" ">=dev-python/openpyxl-3.0.10" dev-python/xlsxwriter dev-python/xlrd dev-python/xlwt
+ optfeature "necessary for HDF5-based storage" ">=dev-python/tables-3.7.0"
+ optfeature "R I/O support" dev-python/rpy2
+ optfeature "Needed for parts of pandas.stats" dev-python/statsmodels
+ optfeature "SQL database support" ">=dev-python/sqlalchemy-1.4.36"
+ optfeature "miscellaneous statistical functions" dev-python/scipy
+ optfeature "necessary to use pandas.io.clipboard.read_clipboard support" dev-python/qtpy x11-misc/xclip x11-misc/xsel
+}