diff --git a/ci/deps/actions-310-minimum_versions.yaml b/ci/deps/actions-310-minimum_versions.yaml index c7c72828db481..a8fb678970b20 100644 --- a/ci/deps/actions-310-minimum_versions.yaml +++ b/ci/deps/actions-310-minimum_versions.yaml @@ -25,39 +25,39 @@ dependencies: - numpy=1.23.5 # optional dependencies - - beautifulsoup4=4.11.2 + - beautifulsoup4=4.12.3 - blosc=1.21.3 - bottleneck=1.3.6 - - fastparquet=2023.10.0 - - fsspec=2022.11.0 + - fastparquet=2024.2.0 + - fsspec=2024.2.0 - html5lib=1.1 - hypothesis=6.84.0 - - gcsfs=2022.11.0 - - jinja2=3.1.2 + - gcsfs=2024.2.0 + - jinja2=3.1.3 - lxml=4.9.2 - - matplotlib=3.6.3 - - numba=0.56.4 - - numexpr=2.8.4 + - matplotlib=3.8.3 + - numba=0.59.0 + - numexpr=2.9.0 - odfpy=1.4.1 - qtpy=2.3.0 - - openpyxl=3.1.0 + - openpyxl=3.1.2 - psycopg2=2.9.6 - pyarrow=10.0.1 - - pymysql=1.0.2 + - pymysql=1.1.0 - pyqt=5.15.9 - - pyreadstat=1.2.0 + - pyreadstat=1.2.6 - pytables=3.8.0 - python-calamine=0.1.7 - pytz=2023.4 - pyxlsb=1.0.10 - - s3fs=2022.11.0 - - scipy=1.10.0 + - s3fs=2024.2.0 + - scipy=1.12.0 - sqlalchemy=2.0.0 - tabulate=0.9.0 - - xarray=2022.12.0 + - xarray=2024.1.1 - xlrd=2.0.1 - - xlsxwriter=3.0.5 - - zstandard=0.19.0 + - xlsxwriter=3.2.0 + - zstandard=0.22.0 - pip: - adbc-driver-postgresql==0.10.0 diff --git a/ci/deps/actions-310.yaml b/ci/deps/actions-310.yaml index 74cab4e0970dc..e1c7463f6432d 100644 --- a/ci/deps/actions-310.yaml +++ b/ci/deps/actions-310.yaml @@ -23,39 +23,39 @@ dependencies: - numpy # optional dependencies - - beautifulsoup4>=4.11.2 + - beautifulsoup4>=4.12.3 - blosc>=1.21.3 - bottleneck>=1.3.6 - - fastparquet>=2023.10.0 - - fsspec>=2022.11.0 + - fastparquet>=2024.2.0 + - fsspec>=2024.2.0 - html5lib>=1.1 - hypothesis>=6.84.0 - - gcsfs>=2022.11.0 - - jinja2>=3.1.2 + - gcsfs>=2024.2.0 + - jinja2>=3.1.3 - lxml>=4.9.2 - - matplotlib>=3.6.3 - - numba>=0.56.4 - - numexpr>=2.8.4 + - matplotlib>=3.8.3 + - numba>=0.59.0 + - numexpr>=2.9.0 - odfpy>=1.4.1 - qtpy>=2.3.0 - - openpyxl>=3.1.0 + - openpyxl>=3.1.2 - psycopg2>=2.9.6 - pyarrow>=10.0.1 - - pymysql>=1.0.2 + - pymysql>=1.1.0 - pyqt>=5.15.9 - - pyreadstat>=1.2.0 + - pyreadstat>=1.2.6 - pytables>=3.8.0 - python-calamine>=0.1.7 - pytz>=2023.4 - pyxlsb>=1.0.10 - - s3fs>=2022.11.0 - - scipy>=1.10.0 + - s3fs>=2024.2.0 + - scipy>=1.12.0 - sqlalchemy>=2.0.0 - tabulate>=0.9.0 - - xarray>=2022.12.0, <=2024.9.0 + - xarray>=2024.1.1, <=2024.9.0 - xlrd>=2.0.1 - - xlsxwriter>=3.0.5 - - zstandard>=0.19.0 + - xlsxwriter>=3.2.0 + - zstandard>=0.22.0 - pip: - adbc-driver-postgresql>=0.10.0 diff --git a/ci/deps/actions-311-downstream_compat.yaml b/ci/deps/actions-311-downstream_compat.yaml index 092ca18d61259..ff8feee9dbf9a 100644 --- a/ci/deps/actions-311-downstream_compat.yaml +++ b/ci/deps/actions-311-downstream_compat.yaml @@ -24,39 +24,39 @@ dependencies: - numpy # optional dependencies - - beautifulsoup4>=4.11.2 + - beautifulsoup4>=4.12.3 - blosc>=1.21.3 - bottleneck>=1.3.6 - - fastparquet>=2023.10.0 - - fsspec>=2022.11.0 + - fastparquet>=2024.2.0 + - fsspec>=2024.2.0 - html5lib>=1.1 - hypothesis>=6.84.0 - - gcsfs>=2022.11.0 - - jinja2>=3.1.2 + - gcsfs>=2024.2.0 + - jinja2>=3.1.3 - lxml>=4.9.2 - - matplotlib>=3.6.3 - - numba>=0.56.4 - - numexpr>=2.8.4 + - matplotlib>=3.8.3 + - numba>=0.59.0 + - numexpr>=2.9.0 - odfpy>=1.4.1 - qtpy>=2.3.0 - - openpyxl>=3.1.0 + - openpyxl>=3.1.2 - psycopg2>=2.9.6 - pyarrow>=10.0.1 - - pymysql>=1.0.2 + - pymysql>=1.1.0 - pyqt>=5.15.9 - - pyreadstat>=1.2.0 + - pyreadstat>=1.2.6 - pytables>=3.8.0 - python-calamine>=0.1.7 - pytz>=2023.4 - pyxlsb>=1.0.10 - - s3fs>=2022.11.0 - - scipy>=1.10.0 + - s3fs>=2024.2.0 + - scipy>=1.12.0 - sqlalchemy>=2.0.0 - tabulate>=0.9.0 - - xarray>=2022.12.0, <=2024.9.0 + - xarray>=2024.1.1, <=2024.9.0 - xlrd>=2.0.1 - - xlsxwriter>=3.0.5 - - zstandard>=0.19.0 + - xlsxwriter>=3.2.0 + - zstandard>=0.22.0 # downstream packages - botocore diff --git a/ci/deps/actions-311.yaml b/ci/deps/actions-311.yaml index b6f515dceaea9..f7d5dd75aff82 100644 --- a/ci/deps/actions-311.yaml +++ b/ci/deps/actions-311.yaml @@ -23,39 +23,39 @@ dependencies: - numpy # optional dependencies - - beautifulsoup4>=4.11.2 + - beautifulsoup4>=4.12.3 - blosc>=1.21.3 - bottleneck>=1.3.6 - - fastparquet>=2023.10.0 - - fsspec>=2022.11.0 + - fastparquet>=2024.2.0 + - fsspec>=2024.2.0 - html5lib>=1.1 - hypothesis>=6.84.0 - - gcsfs>=2022.11.0 - - jinja2>=3.1.2 + - gcsfs>=2024.2.0 + - jinja2>=3.1.3 - lxml>=4.9.2 - - matplotlib>=3.6.3 - - numba>=0.56.4 - - numexpr>=2.8.4 + - matplotlib>=3.8.3 + - numba>=0.59.0 + - numexpr>=2.9.0 - odfpy>=1.4.1 - qtpy>=2.3.0 - pyqt>=5.15.9 - - openpyxl>=3.1.0 + - openpyxl>=3.1.2 - psycopg2>=2.9.6 - pyarrow>=10.0.1 - - pymysql>=1.0.2 - - pyreadstat>=1.2.0 + - pymysql>=1.1.0 + - pyreadstat>=1.2.6 - pytables>=3.8.0 - python-calamine>=0.1.7 - pytz>=2023.4 - pyxlsb>=1.0.10 - - s3fs>=2022.11.0 - - scipy>=1.10.0 + - s3fs>=2024.2.0 + - scipy>=1.12.0 - sqlalchemy>=2.0.0 - tabulate>=0.9.0 - - xarray>=2022.12.0, <=2024.9.0 + - xarray>=2024.1.1, <=2024.9.0 - xlrd>=2.0.1 - - xlsxwriter>=3.0.5 - - zstandard>=0.19.0 + - xlsxwriter>=3.2.0 + - zstandard>=0.22.0 - pip: - adbc-driver-postgresql>=0.10.0 diff --git a/ci/deps/actions-312.yaml b/ci/deps/actions-312.yaml index bc66f8a5382c9..f1d17c72da2c5 100644 --- a/ci/deps/actions-312.yaml +++ b/ci/deps/actions-312.yaml @@ -23,39 +23,39 @@ dependencies: - numpy # optional dependencies - - beautifulsoup4>=4.11.2 + - beautifulsoup4>=4.12.3 - blosc>=1.21.3 - bottleneck>=1.3.6 - - fastparquet>=2023.10.0 - - fsspec>=2022.11.0 + - fastparquet>=2024.2.0 + - fsspec>=2024.2.0 - html5lib>=1.1 - hypothesis>=6.84.0 - - gcsfs>=2022.11.0 - - jinja2>=3.1.2 + - gcsfs>=2024.2.0 + - jinja2>=3.1.3 - lxml>=4.9.2 - - matplotlib>=3.6.3 - - numba>=0.56.4 - - numexpr>=2.8.4 + - matplotlib>=3.8.3 + - numba>=0.59.0 + - numexpr>=2.9.0 - odfpy>=1.4.1 - qtpy>=2.3.0 - pyqt>=5.15.9 - - openpyxl>=3.1.0 + - openpyxl>=3.1.2 - psycopg2>=2.9.6 - pyarrow>=10.0.1 - - pymysql>=1.0.2 - - pyreadstat>=1.2.0 + - pymysql>=1.1.0 + - pyreadstat>=1.2.6 - pytables>=3.8.0 - python-calamine>=0.1.7 - pytz>=2023.4 - pyxlsb>=1.0.10 - - s3fs>=2022.11.0 - - scipy>=1.10.0 + - s3fs>=2024.2.0 + - scipy>=1.12.0 - sqlalchemy>=2.0.0 - tabulate>=0.9.0 - - xarray>=2022.12.0, <=2024.9.0 + - xarray>=2024.1.1, <=2024.9.0 - xlrd>=2.0.1 - - xlsxwriter>=3.0.5 - - zstandard>=0.19.0 + - xlsxwriter>=3.2.0 + - zstandard>=0.22.0 - pip: - adbc-driver-postgresql>=0.10.0 diff --git a/doc/source/getting_started/install.rst b/doc/source/getting_started/install.rst index bda959f380e8a..1d651ac570d8b 100644 --- a/doc/source/getting_started/install.rst +++ b/doc/source/getting_started/install.rst @@ -183,9 +183,9 @@ Installable with ``pip install "pandas[performance]"`` ===================================================== ================== ================== =================================================================================================================================================================================== Dependency Minimum Version pip extra Notes ===================================================== ================== ================== =================================================================================================================================================================================== -`numexpr `__ 2.8.4 performance Accelerates certain numerical operations by using multiple cores as well as smart chunking and caching to achieve large speedups +`numexpr `__ 2.9.0 performance Accelerates certain numerical operations by using multiple cores as well as smart chunking and caching to achieve large speedups `bottleneck `__ 1.3.6 performance Accelerates certain types of ``nan`` by using specialized cython routines to achieve large speedup. -`numba `__ 0.56.4 performance Alternative execution engine for operations that accept ``engine="numba"`` using a JIT compiler that translates Python functions to optimized machine code using the LLVM compiler. +`numba `__ 0.59.0 performance Alternative execution engine for operations that accept ``engine="numba"`` using a JIT compiler that translates Python functions to optimized machine code using the LLVM compiler. ===================================================== ================== ================== =================================================================================================================================================================================== Visualization @@ -196,8 +196,8 @@ Installable with ``pip install "pandas[plot, output-formatting]"``. ========================================================== ================== ================== ======================================================= Dependency Minimum Version pip extra Notes ========================================================== ================== ================== ======================================================= -`matplotlib `__ 3.6.3 plot Plotting library -`Jinja2 `__ 3.1.2 output-formatting Conditional formatting with DataFrame.style +`matplotlib `__ 3.8.3 plot Plotting library +`Jinja2 `__ 3.1.3 output-formatting Conditional formatting with DataFrame.style `tabulate `__ 0.9.0 output-formatting Printing in Markdown-friendly format (see `tabulate`_) ========================================================== ================== ================== ======================================================= @@ -209,8 +209,8 @@ Installable with ``pip install "pandas[computation]"``. ============================================== ================== =============== ======================================= Dependency Minimum Version pip extra Notes ============================================== ================== =============== ======================================= -`SciPy `__ 1.10.0 computation Miscellaneous statistical functions -`xarray `__ 2022.12.0 computation pandas-like API for N-dimensional data +`SciPy `__ 1.12.0 computation Miscellaneous statistical functions +`xarray `__ 2024.1.1 computation pandas-like API for N-dimensional data ============================================== ================== =============== ======================================= .. _install.excel_dependencies: @@ -224,8 +224,8 @@ Installable with ``pip install "pandas[excel]"``. Dependency Minimum Version pip extra Notes ================================================================== ================== =============== ============================================================= `xlrd `__ 2.0.1 excel Reading for xls files -`xlsxwriter `__ 3.0.5 excel Writing for xlsx files -`openpyxl `__ 3.1.0 excel Reading / writing for Excel 2010 xlsx/xlsm/xltx/xltm files +`xlsxwriter `__ 3.2.0 excel Writing for xlsx files +`openpyxl `__ 3.1.2 excel Reading / writing for Excel 2010 xlsx/xlsm/xltx/xltm files `pyxlsb `__ 1.0.10 excel Reading for xlsb files `python-calamine `__ 0.1.7 excel Reading for xls/xlsx/xlsm/xlsb/xla/xlam/ods files `odfpy `__ 1.4.1 excel Reading / writing for OpenDocument 1.2 files @@ -239,7 +239,7 @@ Installable with ``pip install "pandas[html]"``. =============================================================== ================== =============== ========================== Dependency Minimum Version pip extra Notes =============================================================== ================== =============== ========================== -`BeautifulSoup4 `__ 4.11.2 html HTML parser for read_html +`BeautifulSoup4 `__ 4.12.3 html HTML parser for read_html `html5lib `__ 1.1 html HTML parser for read_html `lxml `__ 4.9.2 html HTML parser for read_html =============================================================== ================== =============== ========================== @@ -291,7 +291,7 @@ Dependency Minimum Versi mysql, sql-other `psycopg2 `__ 2.9.6 postgresql PostgreSQL engine for sqlalchemy -`pymysql `__ 1.0.2 mysql MySQL engine for sqlalchemy +`pymysql `__ 1.1.0 mysql MySQL engine for sqlalchemy `adbc-driver-postgresql `__ 0.10.0 postgresql ADBC Driver for PostgreSQL `adbc-driver-sqlite `__ 0.8.0 sql-other ADBC Driver for SQLite ================================================================== ================== =============== ============================================ @@ -307,9 +307,9 @@ Dependency Minimum Version pip ex `PyTables `__ 3.8.0 hdf5 HDF5-based reading / writing `blosc `__ 1.21.3 hdf5 Compression for HDF5; only available on ``conda`` `zlib `__ hdf5 Compression for HDF5 -`fastparquet `__ 2023.10.0 - Parquet reading / writing (pyarrow is default) +`fastparquet `__ 2024.2.0 - Parquet reading / writing (pyarrow is default) `pyarrow `__ 10.0.1 parquet, feather Parquet, ORC, and feather reading / writing -`pyreadstat `__ 1.2.0 spss SPSS files (.sav) reading +`pyreadstat `__ 1.2.6 spss SPSS files (.sav) reading `odfpy `__ 1.4.1 excel Open document format (.odf, .ods, .odt) reading / writing ====================================================== ================== ================ ========================================================== @@ -329,10 +329,10 @@ Installable with ``pip install "pandas[fss, aws, gcp]"`` ============================================ ================== =============== ========================================================== Dependency Minimum Version pip extra Notes ============================================ ================== =============== ========================================================== -`fsspec `__ 2022.11.0 fss, gcp, aws Handling files aside from simple local and HTTP (required +`fsspec `__ 2024.2.0 fss, gcp, aws Handling files aside from simple local and HTTP (required dependency of s3fs, gcsfs). -`gcsfs `__ 2022.11.0 gcp Google Cloud Storage access -`s3fs `__ 2022.11.0 aws Amazon S3 access +`gcsfs `__ 2024.2.0 gcp Google Cloud Storage access +`s3fs `__ 2024.2.0 aws Amazon S3 access ============================================ ================== =============== ========================================================== Clipboard diff --git a/doc/source/whatsnew/v3.0.0.rst b/doc/source/whatsnew/v3.0.0.rst index 29be9a7341f00..ee010be173329 100644 --- a/doc/source/whatsnew/v3.0.0.rst +++ b/doc/source/whatsnew/v3.0.0.rst @@ -313,12 +313,40 @@ Optional libraries below the lowest tested version may still work, but are not c +========================+=====================+ | pytz | 2023.4 | +------------------------+---------------------+ -| fastparquet | 2023.10.0 | +| fastparquet | 2024.2.0 | +------------------------+---------------------+ | adbc-driver-postgresql | 0.10.0 | +------------------------+---------------------+ | mypy (dev) | 1.9.0 | +------------------------+---------------------+ +| beautifulsoup4 | 4.12.3 | ++------------------------+---------------------+ +| fsspec | 2024.2.0 | ++------------------------+---------------------+ +| gcsfs | 2024.2.0 | ++------------------------+---------------------+ +| s3fs | 2024.2.0 | ++------------------------+---------------------+ +| Jinja2 | 3.1.3 | ++------------------------+---------------------+ +| matplotlib | 3.8.3 | ++------------------------+---------------------+ +| numba | 0.59.0 | ++------------------------+---------------------+ +| numexpr | 2.9.0 | ++------------------------+---------------------+ +| pymysql | 1.1.0 | ++------------------------+---------------------+ +| pyreadstat | 1.2.6 | ++------------------------+---------------------+ +| SciPy | 1.12.0 | ++------------------------+---------------------+ +| xarray | 2024.1.0 | ++------------------------+---------------------+ +| xlsxwriter | 3.2.0 | ++------------------------+---------------------+ +| zstandard | 0.22.0 | ++------------------------+---------------------+ See :ref:`install.dependencies` and :ref:`install.optional_dependencies` for more. diff --git a/environment.yml b/environment.yml index ca8f1996c61cf..048c83cb21996 100644 --- a/environment.yml +++ b/environment.yml @@ -26,40 +26,39 @@ dependencies: - numpy<3 # optional dependencies - - beautifulsoup4>=4.11.2 + - beautifulsoup4>=4.12.3 - blosc - bottleneck>=1.3.6 - - fastparquet>=2023.10.0 - - fsspec>=2022.11.0 + - fastparquet>=2024.2.0 + - fsspec>=2024.2.0 - html5lib>=1.1 - hypothesis>=6.84.0 - - gcsfs>=2022.11.0 + - gcsfs>=2024.2.0 - ipython - pickleshare # Needed for IPython Sphinx directive in the docs GH#60429 - - jinja2>=3.1.2 + - jinja2>=3.1.3 - lxml>=4.9.2 - - matplotlib>=3.6.3 - - numba>=0.56.4 - - numexpr>=2.8.4 - - openpyxl>=3.1.0 + - matplotlib>=3.8.3 + - numba>=0.59.0 + - numexpr>=2.9.0 + - openpyxl>=3.1.2 - odfpy>=1.4.1 - - py - psycopg2>=2.9.6 - pyarrow>=10.0.1 - - pymysql>=1.0.2 - - pyreadstat>=1.2.0 + - pymysql>=1.1.0 + - pyreadstat>=1.2.6 - pytables>=3.8.0 - python-calamine>=0.1.7 - pytz>=2023.4 - pyxlsb>=1.0.10 - - s3fs>=2022.11.0 - - scipy>=1.10.0 + - s3fs>=2024.2.0 + - scipy>=1.12.0 - sqlalchemy>=2.0.0 - tabulate>=0.9.0 - - xarray>=2022.12.0, <=2024.9.0 + - xarray>=2024.1.1, <=2024.9.0 - xlrd>=2.0.1 - - xlsxwriter>=3.0.5 - - zstandard>=0.19.0 + - xlsxwriter>=3.2.0 + - zstandard>=0.22.0 # downstream packages - dask-core diff --git a/pandas/compat/_optional.py b/pandas/compat/_optional.py index 6b90389a62056..5c2e3d9b07c22 100644 --- a/pandas/compat/_optional.py +++ b/pandas/compat/_optional.py @@ -22,38 +22,38 @@ VERSIONS = { "adbc-driver-postgresql": "0.10.0", "adbc-driver-sqlite": "0.8.0", - "bs4": "4.11.2", + "bs4": "4.12.3", "blosc": "1.21.3", "bottleneck": "1.3.6", - "fastparquet": "2023.10.0", - "fsspec": "2022.11.0", + "fastparquet": "2024.2.0", + "fsspec": "2024.2.0", "html5lib": "1.1", "hypothesis": "6.84.0", - "gcsfs": "2022.11.0", - "jinja2": "3.1.2", + "gcsfs": "2024.2.0", + "jinja2": "3.1.3", "lxml.etree": "4.9.2", - "matplotlib": "3.6.3", - "numba": "0.56.4", - "numexpr": "2.8.4", + "matplotlib": "3.8.3", + "numba": "0.59.0", + "numexpr": "2.9.0", "odfpy": "1.4.1", - "openpyxl": "3.1.0", + "openpyxl": "3.1.2", "psycopg2": "2.9.6", # (dt dec pq3 ext lo64) - "pymysql": "1.0.2", + "pymysql": "1.1.0", "pyarrow": "10.0.1", - "pyreadstat": "1.2.0", + "pyreadstat": "1.2.6", "pytest": "7.3.2", "python-calamine": "0.1.7", "pytz": "2023.4", "pyxlsb": "1.0.10", - "s3fs": "2022.11.0", - "scipy": "1.10.0", + "s3fs": "2024.2.0", + "scipy": "1.12.0", "sqlalchemy": "2.0.0", "tables": "3.8.0", "tabulate": "0.9.0", - "xarray": "2022.12.0", + "xarray": "2024.1.1", "xlrd": "2.0.1", - "xlsxwriter": "3.0.5", - "zstandard": "0.19.0", + "xlsxwriter": "3.2.0", + "zstandard": "0.22.0", "tzdata": "2022.7", "qtpy": "2.3.0", "pyqt5": "5.15.9", diff --git a/pandas/io/orc.py b/pandas/io/orc.py index 1a2d564d5b44d..02e0ec5247e74 100644 --- a/pandas/io/orc.py +++ b/pandas/io/orc.py @@ -218,7 +218,6 @@ def to_orc( if engine != "pyarrow": raise ValueError("engine must be 'pyarrow'") - pyarrow = import_optional_dependency(engine, min_version="10.0.1") pa = import_optional_dependency("pyarrow") orc = import_optional_dependency("pyarrow.orc") @@ -229,7 +228,7 @@ def to_orc( with get_handle(path, "wb", is_text=False) as handles: try: orc.write_table( - pyarrow.Table.from_pandas(df, preserve_index=index), + pa.Table.from_pandas(df, preserve_index=index), handles.handle, **engine_kwargs, ) diff --git a/pandas/plotting/_matplotlib/core.py b/pandas/plotting/_matplotlib/core.py index 1035150302d2c..4c2ce3b6d3bf8 100644 --- a/pandas/plotting/_matplotlib/core.py +++ b/pandas/plotting/_matplotlib/core.py @@ -55,7 +55,6 @@ from pandas.core.dtypes.missing import isna import pandas.core.common as com -from pandas.util.version import Version from pandas.io.formats.printing import pprint_thing from pandas.plotting._matplotlib import tools @@ -872,10 +871,7 @@ def _make_legend(self) -> None: if leg is not None: title = leg.get_title().get_text() # Replace leg.legend_handles because it misses marker info - if Version(mpl.__version__) < Version("3.7"): - handles = leg.legendHandles - else: - handles = leg.legend_handles + handles = leg.legend_handles labels = [x.get_text() for x in leg.get_texts()] if self.legend: @@ -1213,15 +1209,10 @@ def _get_errorbars( @final def _get_subplots(self, fig: Figure) -> list[Axes]: - if Version(mpl.__version__) < Version("3.8"): - Klass = mpl.axes.Subplot - else: - Klass = mpl.axes.Axes - return [ ax for ax in fig.get_axes() - if (isinstance(ax, Klass) and ax.get_subplotspec() is not None) + if (isinstance(ax, mpl.axes.Axes) and ax.get_subplotspec() is not None) ] @final diff --git a/pandas/tests/io/test_common.py b/pandas/tests/io/test_common.py index 99af421d5aa48..4a5e41397b59d 100644 --- a/pandas/tests/io/test_common.py +++ b/pandas/tests/io/test_common.py @@ -650,7 +650,7 @@ def close(self): handles.created_handles.append(TestError()) -@td.skip_if_no("fsspec", min_version="2023.1.0") +@td.skip_if_no("fsspec") @pytest.mark.parametrize("compression", [None, "infer"]) def test_read_csv_chained_url_no_error(compression): # GH 60100 diff --git a/pandas/tests/io/test_spss.py b/pandas/tests/io/test_spss.py index 950f74a686b8d..973cb21ac3041 100644 --- a/pandas/tests/io/test_spss.py +++ b/pandas/tests/io/test_spss.py @@ -169,14 +169,9 @@ def test_spss_metadata(datapath): "variable_measure": {"VAR00002": "unknown"}, "file_label": None, "file_format": "sav/zsav", + "creation_time": datetime.datetime(2015, 2, 6, 14, 33, 36), + "modification_time": datetime.datetime(2015, 2, 6, 14, 33, 36), } - if Version(pyreadstat.__version__) >= Version("1.2.4"): - metadata.update( - { - "creation_time": datetime.datetime(2015, 2, 6, 14, 33, 36), - "modification_time": datetime.datetime(2015, 2, 6, 14, 33, 36), - } - ) if Version(pyreadstat.__version__) >= Version("1.2.8"): metadata["mr_sets"] = {} tm.assert_dict_equal(df.attrs, metadata) diff --git a/pandas/tests/io/test_sql.py b/pandas/tests/io/test_sql.py index 13576c891ad2c..db55b73bfb125 100644 --- a/pandas/tests/io/test_sql.py +++ b/pandas/tests/io/test_sql.py @@ -3456,13 +3456,6 @@ def test_to_sql_with_negative_npinf(conn, request, input): # GH 36465 # The input {"foo": [-np.inf], "infe0": ["bar"]} does not raise any error # for pymysql version >= 0.10 - # TODO(GH#36465): remove this version check after GH 36465 is fixed - pymysql = pytest.importorskip("pymysql") - - if Version(pymysql.__version__) < Version("1.0.3") and "infe0" in df.columns: - mark = pytest.mark.xfail(reason="GH 36465") - request.applymarker(mark) - msg = "Execution failed on sql" with pytest.raises(pd.errors.DatabaseError, match=msg): df.to_sql(name="foobar", con=conn, index=False) diff --git a/pandas/tests/plotting/frame/test_frame_color.py b/pandas/tests/plotting/frame/test_frame_color.py index 74ee45664e01a..5e5c3539f3283 100644 --- a/pandas/tests/plotting/frame/test_frame_color.py +++ b/pandas/tests/plotting/frame/test_frame_color.py @@ -13,7 +13,6 @@ _check_plot_works, _unpack_cycler, ) -from pandas.util.version import Version mpl = pytest.importorskip("matplotlib") plt = pytest.importorskip("matplotlib.pyplot") @@ -715,10 +714,7 @@ def test_colors_of_columns_with_same_name(self): df_concat = pd.concat([df, df1], axis=1) result = df_concat.plot() legend = result.get_legend() - if Version(mpl.__version__) < Version("3.7"): - handles = legend.legendHandles - else: - handles = legend.legend_handles + handles = legend.legend_handles for legend, line in zip(handles, result.lines): assert legend.get_color() == line.get_color() diff --git a/pandas/tests/plotting/frame/test_frame_legend.py b/pandas/tests/plotting/frame/test_frame_legend.py index a9723fe4ef871..755293e0bf6d7 100644 --- a/pandas/tests/plotting/frame/test_frame_legend.py +++ b/pandas/tests/plotting/frame/test_frame_legend.py @@ -12,7 +12,6 @@ _check_legend_marker, _check_text_labels, ) -from pandas.util.version import Version mpl = pytest.importorskip("matplotlib") @@ -32,10 +31,7 @@ def test_mixed_yerr(self): df.plot("x", "b", c="blue", yerr=None, ax=ax, label="blue") legend = ax.get_legend() - if Version(mpl.__version__) < Version("3.7"): - result_handles = legend.legendHandles - else: - result_handles = legend.legend_handles + result_handles = legend.legend_handles assert isinstance(result_handles[0], mpl.collections.LineCollection) assert isinstance(result_handles[1], mpl.lines.Line2D) @@ -48,10 +44,7 @@ def test_legend_false(self): ax = df.plot(legend=True, color={"a": "blue", "b": "green"}, secondary_y="b") df2.plot(legend=True, color={"d": "red"}, ax=ax) legend = ax.get_legend() - if Version(mpl.__version__) < Version("3.7"): - handles = legend.legendHandles - else: - handles = legend.legend_handles + handles = legend.legend_handles result = [handle.get_color() for handle in handles] expected = ["blue", "green", "red"] assert result == expected diff --git a/pyproject.toml b/pyproject.toml index b7d53b0d8934a..7fadc93d4aae4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -60,66 +60,66 @@ matplotlib = "pandas:plotting._matplotlib" [project.optional-dependencies] test = ['hypothesis>=6.84.0', 'pytest>=7.3.2', 'pytest-xdist>=3.4.0'] pyarrow = ['pyarrow>=10.0.1'] -performance = ['bottleneck>=1.3.6', 'numba>=0.56.4', 'numexpr>=2.8.4'] -computation = ['scipy>=1.10.0', 'xarray>=2022.12.0'] -fss = ['fsspec>=2022.11.0'] -aws = ['s3fs>=2022.11.0'] -gcp = ['gcsfs>=2022.11.0'] -excel = ['odfpy>=1.4.1', 'openpyxl>=3.1.0', 'python-calamine>=0.1.7', 'pyxlsb>=1.0.10', 'xlrd>=2.0.1', 'xlsxwriter>=3.0.5'] +performance = ['bottleneck>=1.3.6', 'numba>=0.59.0', 'numexpr>=2.9.0'] +computation = ['scipy>=1.12.0', 'xarray>=2024.1.1'] +fss = ['fsspec>=2024.2.0'] +aws = ['s3fs>=2024.2.0'] +gcp = ['gcsfs>=2024.2.0'] +excel = ['odfpy>=1.4.1', 'openpyxl>=3.1.2', 'python-calamine>=0.1.7', 'pyxlsb>=1.0.10', 'xlrd>=2.0.1', 'xlsxwriter>=3.2.0'] parquet = ['pyarrow>=10.0.1'] feather = ['pyarrow>=10.0.1'] hdf5 = [# blosc only available on conda (https://github.com/Blosc/python-blosc/issues/297) #'blosc>=1.20.1', 'tables>=3.8.0'] -spss = ['pyreadstat>=1.2.0'] +spss = ['pyreadstat>=1.2.6'] postgresql = ['SQLAlchemy>=2.0.0', 'psycopg2>=2.9.6', 'adbc-driver-postgresql>=0.10.0'] -mysql = ['SQLAlchemy>=2.0.0', 'pymysql>=1.0.2'] +mysql = ['SQLAlchemy>=2.0.0', 'pymysql>=1.1.0'] sql-other = ['SQLAlchemy>=2.0.0', 'adbc-driver-postgresql>=0.10.0', 'adbc-driver-sqlite>=0.8.0'] -html = ['beautifulsoup4>=4.11.2', 'html5lib>=1.1', 'lxml>=4.9.2'] +html = ['beautifulsoup4>=4.12.3', 'html5lib>=1.1', 'lxml>=4.9.2'] xml = ['lxml>=4.9.2'] -plot = ['matplotlib>=3.6.3'] -output-formatting = ['jinja2>=3.1.2', 'tabulate>=0.9.0'] +plot = ['matplotlib>=3.8.3'] +output-formatting = ['jinja2>=3.1.3', 'tabulate>=0.9.0'] clipboard = ['PyQt5>=5.15.9', 'qtpy>=2.3.0'] -compression = ['zstandard>=0.19.0'] +compression = ['zstandard>=0.22.0'] timezone = ['pytz>=2023.4'] all = ['adbc-driver-postgresql>=0.10.0', 'adbc-driver-sqlite>=0.8.0', - 'beautifulsoup4>=4.11.2', + 'beautifulsoup4>=4.12.3', # blosc only available on conda (https://github.com/Blosc/python-blosc/issues/297) #'blosc>=1.21.3', 'bottleneck>=1.3.6', - 'fastparquet>=2023.10.0', - 'fsspec>=2022.11.0', - 'gcsfs>=2022.11.0', + 'fastparquet>=2024.2.0', + 'fsspec>=2024.2.0', + 'gcsfs>=2024.2.0', 'html5lib>=1.1', 'hypothesis>=6.84.0', - 'jinja2>=3.1.2', + 'jinja2>=3.1.3', 'lxml>=4.9.2', - 'matplotlib>=3.6.3', - 'numba>=0.56.4', - 'numexpr>=2.8.4', + 'matplotlib>=3.8.3', + 'numba>=0.59.0', + 'numexpr>=2.9.0', 'odfpy>=1.4.1', - 'openpyxl>=3.1.0', + 'openpyxl>=3.1.2', 'psycopg2>=2.9.6', 'pyarrow>=10.0.1', - 'pymysql>=1.0.2', + 'pymysql>=1.1.0', 'PyQt5>=5.15.9', - 'pyreadstat>=1.2.0', + 'pyreadstat>=1.2.6', 'pytest>=7.3.2', 'pytest-xdist>=3.4.0', 'python-calamine>=0.1.7', 'pytz>=2023.4', 'pyxlsb>=1.0.10', 'qtpy>=2.3.0', - 'scipy>=1.10.0', - 's3fs>=2022.11.0', + 'scipy>=1.12.0', + 's3fs>=2024.2.0', 'SQLAlchemy>=2.0.0', 'tables>=3.8.0', 'tabulate>=0.9.0', - 'xarray>=2022.12.0', + 'xarray>=2024.1.1', 'xlrd>=2.0.1', - 'xlsxwriter>=3.0.5', - 'zstandard>=0.19.0'] + 'xlsxwriter>=3.2.0', + 'zstandard>=0.22.0'] # TODO: Remove after setuptools support is dropped. [tool.setuptools] diff --git a/requirements-dev.txt b/requirements-dev.txt index 20fc21be75a06..3dd4ea1d678b5 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -15,40 +15,39 @@ PyQt5>=5.15.9 coverage python-dateutil numpy<3 -beautifulsoup4>=4.11.2 +beautifulsoup4>=4.12.3 blosc bottleneck>=1.3.6 -fastparquet>=2023.10.0 -fsspec>=2022.11.0 +fastparquet>=2024.2.0 +fsspec>=2024.2.0 html5lib>=1.1 hypothesis>=6.84.0 -gcsfs>=2022.11.0 +gcsfs>=2024.2.0 ipython pickleshare -jinja2>=3.1.2 +jinja2>=3.1.3 lxml>=4.9.2 -matplotlib>=3.6.3 -numba>=0.56.4 -numexpr>=2.8.4 -openpyxl>=3.1.0 +matplotlib>=3.8.3 +numba>=0.59.0 +numexpr>=2.9.0 +openpyxl>=3.1.2 odfpy>=1.4.1 -py psycopg2-binary>=2.9.6 pyarrow>=10.0.1 -pymysql>=1.0.2 -pyreadstat>=1.2.0 +pymysql>=1.1.0 +pyreadstat>=1.2.6 tables>=3.8.0 python-calamine>=0.1.7 pytz>=2023.4 pyxlsb>=1.0.10 -s3fs>=2022.11.0 -scipy>=1.10.0 +s3fs>=2024.2.0 +scipy>=1.12.0 SQLAlchemy>=2.0.0 tabulate>=0.9.0 -xarray>=2022.12.0, <=2024.9.0 +xarray>=2024.1.1, <=2024.9.0 xlrd>=2.0.1 -xlsxwriter>=3.0.5 -zstandard>=0.19.0 +xlsxwriter>=3.2.0 +zstandard>=0.22.0 dask seaborn moto diff --git a/scripts/tests/data/deps_expected_random.yaml b/scripts/tests/data/deps_expected_random.yaml index d1db7989a95a4..8e85c91ead24e 100644 --- a/scripts/tests/data/deps_expected_random.yaml +++ b/scripts/tests/data/deps_expected_random.yaml @@ -39,7 +39,7 @@ dependencies: - odfpy>=1.4.1 - psycopg2>=2.8.6 - pyarrow<11, >=7.0.0 - - pymysql>=1.0.2 + - pymysql>=1.1.0 - pyreadstat>=1.1.2 - pytables>=3.6.1 - python-calamine>=0.1.7 diff --git a/scripts/tests/data/deps_minimum.toml b/scripts/tests/data/deps_minimum.toml index 0a53225a5d995..f789d5998a30c 100644 --- a/scripts/tests/data/deps_minimum.toml +++ b/scripts/tests/data/deps_minimum.toml @@ -68,7 +68,7 @@ hdf5 = [# blosc only available on conda (https://github.com/Blosc/python-blosc/i 'tables>=3.6.1'] spss = ['pyreadstat>=1.1.2'] postgresql = ['SQLAlchemy>=1.4.16', 'psycopg2>=2.8.6'] -mysql = ['SQLAlchemy>=1.4.16', 'pymysql>=1.0.2'] +mysql = ['SQLAlchemy>=1.4.16', 'pymysql>=1.1.0'] sql-other = ['SQLAlchemy>=1.4.16'] html = ['beautifulsoup4>=4.9.3', 'html5lib>=1.1', 'lxml>=4.6.3'] xml = ['lxml>=4.6.3'] @@ -94,7 +94,7 @@ all = ['beautifulsoup4>=5.9.3', 'openpyxl>=3.0.7', 'psycopg2>=2.8.6', 'pyarrow>=7.0.0', - 'pymysql>=1.0.2', + 'pymysql>=1.1.0', 'PyQt5>=5.15.1', 'pyreadstat>=1.1.2', 'pytest>=7.3.2', diff --git a/scripts/tests/data/deps_unmodified_random.yaml b/scripts/tests/data/deps_unmodified_random.yaml index afb28dd2c08bb..5b47d45973161 100644 --- a/scripts/tests/data/deps_unmodified_random.yaml +++ b/scripts/tests/data/deps_unmodified_random.yaml @@ -39,7 +39,7 @@ dependencies: - odfpy>=1.4.1 - psycopg2 - pyarrow<11, >=7.0.0 - - pymysql>=1.0.2 + - pymysql>=1.1.0 - pyreadstat>=1.1.2 - pytables>=3.6.1 - python-calamine>=0.1.7