diff --git a/.circleci/config.yml b/.circleci/config.yml
index 0d9e3ade08846..e7beb78cf6e6d 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -4,7 +4,7 @@ jobs:
test-arm:
machine:
image: ubuntu-2004:202101-01
- resource_class: arm.medium
+ resource_class: arm.large
environment:
ENV_FILE: ci/deps/circle-38-arm64.yaml
PYTEST_WORKERS: auto
@@ -14,7 +14,10 @@ jobs:
steps:
- checkout
- run: .circleci/setup_env.sh
- - run: PATH=$HOME/miniconda3/envs/pandas-dev/bin:$HOME/miniconda3/condabin:$PATH ci/run_tests.sh
+ - run: >
+ PATH=$HOME/miniconda3/envs/pandas-dev/bin:$HOME/miniconda3/condabin:$PATH
+ LD_PRELOAD=$HOME/miniconda3/envs/pandas-dev/lib/libgomp.so.1:$LD_PRELOAD
+ ci/run_tests.sh
workflows:
test:
diff --git a/.devcontainer.json b/.devcontainer.json
index 8bea96aea29c1..7c5d009260c64 100644
--- a/.devcontainer.json
+++ b/.devcontainer.json
@@ -9,8 +9,7 @@
// You can edit these settings after create using File > Preferences > Settings > Remote.
"settings": {
"terminal.integrated.shell.linux": "/bin/bash",
- "python.condaPath": "/opt/conda/bin/conda",
- "python.pythonPath": "/opt/conda/bin/python",
+ "python.pythonPath": "/usr/local/bin/python",
"python.formatting.provider": "black",
"python.linting.enabled": true,
"python.linting.flake8Enabled": true,
diff --git a/.github/actions/setup-conda/action.yml b/.github/actions/setup-conda/action.yml
index 002d0020c2df1..7d1e54052f938 100644
--- a/.github/actions/setup-conda/action.yml
+++ b/.github/actions/setup-conda/action.yml
@@ -18,7 +18,7 @@ runs:
- name: Set Arrow version in ${{ inputs.environment-file }} to ${{ inputs.pyarrow-version }}
run: |
grep -q ' - pyarrow' ${{ inputs.environment-file }}
- sed -i"" -e "s/ - pyarrow/ - pyarrow=${{ inputs.pyarrow-version }}/" ${{ inputs.environment-file }}
+ sed -i"" -e "s/ - pyarrow<10/ - pyarrow=${{ inputs.pyarrow-version }}/" ${{ inputs.environment-file }}
cat ${{ inputs.environment-file }}
shell: bash
if: ${{ inputs.pyarrow-version }}
diff --git a/.github/workflows/32-bit-linux.yml b/.github/workflows/32-bit-linux.yml
index 67e99b4486a12..49df3a077cfe7 100644
--- a/.github/workflows/32-bit-linux.yml
+++ b/.github/workflows/32-bit-linux.yml
@@ -4,11 +4,11 @@ on:
push:
branches:
- main
- - 1.4.x
+ - 1.5.x
pull_request:
branches:
- main
- - 1.4.x
+ - 1.5.x
paths-ignore:
- "doc/**"
@@ -17,7 +17,7 @@ permissions:
jobs:
pytest:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
diff --git a/.github/workflows/assign.yml b/.github/workflows/assign.yml
index b7bb8db549f86..b3331060823a9 100644
--- a/.github/workflows/assign.yml
+++ b/.github/workflows/assign.yml
@@ -11,7 +11,7 @@ jobs:
permissions:
issues: write
pull-requests: write
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
steps:
- if: github.event.comment.body == 'take'
run: |
diff --git a/.github/workflows/asv-bot.yml b/.github/workflows/asv-bot.yml
index abb19a95315b6..d264698e60485 100644
--- a/.github/workflows/asv-bot.yml
+++ b/.github/workflows/asv-bot.yml
@@ -21,7 +21,7 @@ jobs:
name: "Run benchmarks"
# TODO: Support more benchmarking options later, against different branches, against self, etc
if: startsWith(github.event.comment.body, '@github-actions benchmark')
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
defaults:
run:
shell: bash -el {0}
diff --git a/.github/workflows/autoupdate-pre-commit-config.yml b/.github/workflows/autoupdate-pre-commit-config.yml
index 9a41871c26062..376aa8343c571 100644
--- a/.github/workflows/autoupdate-pre-commit-config.yml
+++ b/.github/workflows/autoupdate-pre-commit-config.yml
@@ -15,10 +15,10 @@ jobs:
pull-requests: write # for technote-space/create-pr-action to create a PR
if: github.repository_owner == 'pandas-dev'
name: Autoupdate pre-commit config
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
steps:
- name: Set up Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
- name: Cache multiple paths
uses: actions/cache@v3
with:
diff --git a/.github/workflows/code-checks.yml b/.github/workflows/code-checks.yml
index 09c603f347d4c..cb95b224ba677 100644
--- a/.github/workflows/code-checks.yml
+++ b/.github/workflows/code-checks.yml
@@ -4,11 +4,11 @@ on:
push:
branches:
- main
- - 1.4.x
+ - 1.5.x
pull_request:
branches:
- main
- - 1.4.x
+ - 1.5.x
env:
ENV_FILE: environment.yml
@@ -20,7 +20,7 @@ permissions:
jobs:
pre_commit:
name: pre-commit
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
concurrency:
# https://github.community/t/concurrecy-not-work-for-push/183068/7
group: ${{ github.event_name == 'push' && github.run_number || github.ref }}-pre-commit
@@ -30,16 +30,16 @@ jobs:
uses: actions/checkout@v3
- name: Install Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
with:
- python-version: '3.9.7'
+ python-version: '3.9'
- name: Run pre-commit
uses: pre-commit/action@v2.0.3
typing_and_docstring_validation:
name: Docstring and typing validation
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
defaults:
run:
shell: bash -el {0}
@@ -98,7 +98,7 @@ jobs:
asv-benchmarks:
name: ASV Benchmarks
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
defaults:
run:
shell: bash -el {0}
@@ -129,7 +129,7 @@ jobs:
build_docker_dev_environment:
name: Build Docker Dev Environment
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
defaults:
run:
shell: bash -el {0}
@@ -151,9 +151,12 @@ jobs:
- name: Build image
run: docker build --pull --no-cache --tag pandas-dev-env .
+ - name: Show environment
+ run: docker run --rm pandas-dev-env python -c "import pandas as pd; print(pd.show_versions())"
+
requirements-dev-text-installable:
name: Test install requirements-dev.txt
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
concurrency:
# https://github.community/t/concurrecy-not-work-for-push/183068/7
@@ -168,7 +171,7 @@ jobs:
- name: Setup Python
id: setup_python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
with:
python-version: '3.8'
cache: 'pip'
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 457aa69fb924f..05a5d003c1dd1 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -10,7 +10,7 @@ concurrency:
jobs:
analyze:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
permissions:
actions: read
contents: read
diff --git a/.github/workflows/docbuild-and-upload.yml b/.github/workflows/docbuild-and-upload.yml
index 76855b6b9f2b9..13da56806de6e 100644
--- a/.github/workflows/docbuild-and-upload.yml
+++ b/.github/workflows/docbuild-and-upload.yml
@@ -4,13 +4,13 @@ on:
push:
branches:
- main
- - 1.4.x
+ - 1.5.x
tags:
- '*'
pull_request:
branches:
- main
- - 1.4.x
+ - 1.5.x
env:
ENV_FILE: environment.yml
@@ -22,7 +22,7 @@ permissions:
jobs:
web_and_docs:
name: Doc Build and Upload
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
concurrency:
# https://github.community/t/concurrecy-not-work-for-push/183068/7
@@ -64,22 +64,22 @@ jobs:
mkdir -m 700 -p ~/.ssh
echo "${{ secrets.server_ssh_key }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
- echo "${{ secrets.server_ip }} ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBE1Kkopomm7FHG5enATf7SgnpICZ4W2bw+Ho+afqin+w7sMcrsa0je7sbztFAV8YchDkiBKnWTG4cRT+KZgZCaY=" > ~/.ssh/known_hosts
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
+ echo "${{ secrets.server_ip }} ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFjYkJBk7sos+r7yATODogQc3jUdW1aascGpyOD4bohj8dWjzwLJv/OJ/fyOQ5lmj81WKDk67tGtqNJYGL9acII=" > ~/.ssh/known_hosts
+ if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'))
- name: Copy cheatsheets into site directory
run: cp doc/cheatsheet/Pandas_Cheat_Sheet* web/build/
- name: Upload web
- run: rsync -az --delete --exclude='pandas-docs' --exclude='docs' web/build/ docs@${{ secrets.server_ip }}:/usr/share/nginx/pandas
+ run: rsync -az --delete --exclude='pandas-docs' --exclude='docs' web/build/ web@${{ secrets.server_ip }}:/var/www/html
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
- name: Upload dev docs
- run: rsync -az --delete doc/build/html/ docs@${{ secrets.server_ip }}:/usr/share/nginx/pandas/pandas-docs/dev
+ run: rsync -az --delete doc/build/html/ web@${{ secrets.server_ip }}:/var/www/html/pandas-docs/dev
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
- name: Upload prod docs
- run: rsync -az --delete doc/build/html/ docs@${{ secrets.server_ip }}:/usr/share/nginx/pandas/pandas-docs/version/${GITHUB_REF_NAME}
+ run: rsync -az --delete doc/build/html/ web@${{ secrets.server_ip }}:/var/www/html/pandas-docs/version/${GITHUB_REF_NAME:1}
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
- name: Move docs into site directory
diff --git a/.github/workflows/macos-windows.yml b/.github/workflows/macos-windows.yml
index e9503a2486560..5da2d0d281edd 100644
--- a/.github/workflows/macos-windows.yml
+++ b/.github/workflows/macos-windows.yml
@@ -4,11 +4,11 @@ on:
push:
branches:
- main
- - 1.4.x
+ - 1.5.x
pull_request:
branches:
- main
- - 1.4.x
+ - 1.5.x
paths-ignore:
- "doc/**"
@@ -26,7 +26,7 @@ jobs:
defaults:
run:
shell: bash -el {0}
- timeout-minutes: 120
+ timeout-minutes: 180
strategy:
matrix:
os: [macos-latest, windows-latest]
diff --git a/.github/workflows/python-dev.yml b/.github/workflows/python-dev.yml
index 580cafd6e4949..0d265182b3924 100644
--- a/.github/workflows/python-dev.yml
+++ b/.github/workflows/python-dev.yml
@@ -24,11 +24,11 @@ on:
push:
branches:
- main
- - 1.4.x
+ - 1.5.x
pull_request:
branches:
- main
- - 1.4.x
+ - 1.5.x
paths-ignore:
- "doc/**"
@@ -49,10 +49,10 @@ jobs:
strategy:
fail-fast: false
matrix:
- os: [ubuntu-latest, macOS-latest, windows-latest]
+ os: [ubuntu-22.04, macOS-latest, windows-latest]
name: actions-311-dev
- timeout-minutes: 80
+ timeout-minutes: 120
concurrency:
#https://github.community/t/concurrecy-not-work-for-push/183068/7
@@ -73,15 +73,16 @@ jobs:
run: |
python --version
python -m pip install --upgrade pip setuptools wheel
- python -m pip install git+https://github.com/numpy/numpy.git
+ python -m pip install --pre --extra-index-url https://pypi.anaconda.org/scipy-wheels-nightly/simple numpy
python -m pip install git+https://github.com/nedbat/coveragepy.git
python -m pip install python-dateutil pytz cython hypothesis==6.52.1 pytest>=6.2.5 pytest-xdist pytest-cov pytest-asyncio>=0.17
python -m pip list
+ # GH 47305: Parallel build can cause flaky ImportError from pandas/_libs/tslibs
- name: Build Pandas
run: |
- python setup.py build_ext -q -j2
- python -m pip install -e . --no-build-isolation --no-use-pep517
+ python setup.py build_ext -q -j1
+ python -m pip install -e . --no-build-isolation --no-use-pep517 --no-index
- name: Build Version
run: |
diff --git a/.github/workflows/sdist.yml b/.github/workflows/sdist.yml
index 1a06ea31ccbb8..46b453532ad0b 100644
--- a/.github/workflows/sdist.yml
+++ b/.github/workflows/sdist.yml
@@ -4,11 +4,11 @@ on:
push:
branches:
- main
- - 1.4.x
+ - 1.5.x
pull_request:
branches:
- main
- - 1.4.x
+ - 1.5.x
types: [labeled, opened, synchronize, reopened]
paths-ignore:
- "doc/**"
@@ -19,7 +19,7 @@ permissions:
jobs:
build:
if: ${{ github.event.label.name == 'Build' || contains(github.event.pull_request.labels.*.name, 'Build') || github.event_name == 'push'}}
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
timeout-minutes: 60
defaults:
run:
@@ -28,7 +28,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- python-version: ["3.8", "3.9", "3.10"]
+ python-version: ["3.8", "3.9", "3.10", "3.11"]
concurrency:
# https://github.community/t/concurrecy-not-work-for-push/183068/7
group: ${{ github.event_name == 'push' && github.run_number || github.ref }}-${{matrix.python-version}}-sdist
@@ -40,7 +40,7 @@ jobs:
fetch-depth: 0
- name: Set up Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
@@ -84,6 +84,8 @@ jobs:
pip install numpy==1.20.3 ;;
3.10)
pip install numpy==1.21.2 ;;
+ 3.11)
+ pip install numpy==1.23.2 ;;
esac
- name: Import pandas
diff --git a/.github/workflows/stale-pr.yml b/.github/workflows/stale-pr.yml
index 69656be18a8b1..c47745e097d17 100644
--- a/.github/workflows/stale-pr.yml
+++ b/.github/workflows/stale-pr.yml
@@ -11,7 +11,7 @@ jobs:
stale:
permissions:
pull-requests: write
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
steps:
- uses: actions/stale@v4
with:
diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml
index b8268a82d9b70..4602d12d8505e 100644
--- a/.github/workflows/ubuntu.yml
+++ b/.github/workflows/ubuntu.yml
@@ -4,11 +4,11 @@ on:
push:
branches:
- main
- - 1.4.x
+ - 1.5.x
pull_request:
branches:
- main
- - 1.4.x
+ - 1.5.x
paths-ignore:
- "doc/**"
@@ -20,11 +20,11 @@ permissions:
jobs:
pytest:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
defaults:
run:
shell: bash -el {0}
- timeout-minutes: 120
+ timeout-minutes: 180
strategy:
matrix:
env_file: [actions-38.yaml, actions-39.yaml, actions-310.yaml]
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 2ca5b5c9b896b..06f8d112cfcc6 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -54,7 +54,7 @@ repos:
- flake8-bugbear==22.7.1
- pandas-dev-flaker==0.5.0
- repo: https://github.com/PyCQA/isort
- rev: 5.10.1
+ rev: 5.12.0
hooks:
- id: isort
- repo: https://github.com/asottile/pyupgrade
diff --git a/Dockerfile b/Dockerfile
index 0bfb0e15d63fe..7230dcab20f6e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,52 +1,13 @@
-FROM quay.io/condaforge/mambaforge
+FROM python:3.10.8
+WORKDIR /home/pandas
-# if you forked pandas, you can pass in your own GitHub username to use your fork
-# i.e. gh_username=myname
-ARG gh_username=pandas-dev
-ARG pandas_home="/home/pandas"
+RUN apt-get update && apt-get -y upgrade
+RUN apt-get install -y build-essential
-# Avoid warnings by switching to noninteractive
-ENV DEBIAN_FRONTEND=noninteractive
+# hdf5 needed for pytables installation
+RUN apt-get install -y libhdf5-dev
-# Configure apt and install packages
-RUN apt-get update \
- && apt-get -y install --no-install-recommends apt-utils dialog 2>&1 \
- #
- # Install tzdata and configure timezone (fix for tests which try to read from "/etc/localtime")
- && apt-get -y install tzdata \
- && ln -fs /usr/share/zoneinfo/Etc/UTC /etc/localtime \
- && dpkg-reconfigure -f noninteractive tzdata \
- #
- # Verify git, process tools, lsb-release (common in install instructions for CLIs) installed
- && apt-get -y install git iproute2 procps iproute2 lsb-release \
- #
- # cleanup
- && apt-get autoremove -y \
- && apt-get clean -y \
- && rm -rf /var/lib/apt/lists/*
-
-# Switch back to dialog for any ad-hoc use of apt-get
-ENV DEBIAN_FRONTEND=dialog
-
-# Clone pandas repo
-RUN mkdir "$pandas_home" \
- && git clone "https://github.com/$gh_username/pandas.git" "$pandas_home" \
- && cd "$pandas_home" \
- && git remote add upstream "https://github.com/pandas-dev/pandas.git" \
- && git pull upstream main
-
-# Because it is surprisingly difficult to activate a conda environment inside a DockerFile
-# (from personal experience and per https://github.com/ContinuumIO/docker-images/issues/89),
-# we just update the base/root one from the 'environment.yml' file instead of creating a new one.
-#
-# Set up environment
-RUN mamba env update -n base -f "$pandas_home/environment.yml"
-
-# Build C extensions and pandas
-SHELL ["/bin/bash", "-c"]
-RUN . /opt/conda/etc/profile.d/conda.sh \
- && conda activate base \
- && cd "$pandas_home" \
- && export \
- && python setup.py build_ext -j 4 \
- && python -m pip install --no-build-isolation -e .
+RUN python -m pip install --upgrade pip
+RUN python -m pip install \
+ -r https://raw.githubusercontent.com/pandas-dev/pandas/main/requirements-dev.txt
+CMD ["/bin/bash"]
diff --git a/asv_bench/benchmarks/indexing.py b/asv_bench/benchmarks/indexing.py
index 69e3d166943a8..54da7c109e02a 100644
--- a/asv_bench/benchmarks/indexing.py
+++ b/asv_bench/benchmarks/indexing.py
@@ -143,6 +143,12 @@ def setup(self):
def time_loc(self):
self.df.loc[self.idx_scalar, self.col_scalar]
+ def time_at(self):
+ self.df.at[self.idx_scalar, self.col_scalar]
+
+ def time_at_setitem(self):
+ self.df.at[self.idx_scalar, self.col_scalar] = 0.0
+
def time_getitem_scalar(self):
self.df[self.col_scalar][self.idx_scalar]
diff --git a/asv_bench/benchmarks/sparse.py b/asv_bench/benchmarks/sparse.py
index d871f907232f5..10390cb4493cd 100644
--- a/asv_bench/benchmarks/sparse.py
+++ b/asv_bench/benchmarks/sparse.py
@@ -219,12 +219,12 @@ def setup(self, fill_value):
d = 1e-5
arr = make_array(N, d, np.nan, np.float64)
self.sp_arr = SparseArray(arr)
- b_arr = np.full(shape=N, fill_value=fill_value, dtype=np.bool8)
+ b_arr = np.full(shape=N, fill_value=fill_value, dtype=np.bool_)
fv_inds = np.unique(
np.random.randint(low=0, high=N - 1, size=int(N * d), dtype=np.int32)
)
b_arr[fv_inds] = True if pd.isna(fill_value) else not fill_value
- self.sp_b_arr = SparseArray(b_arr, dtype=np.bool8, fill_value=fill_value)
+ self.sp_b_arr = SparseArray(b_arr, dtype=np.bool_, fill_value=fill_value)
def time_mask(self, fill_value):
self.sp_arr[self.sp_b_arr]
diff --git a/ci/deps/actions-310.yaml b/ci/deps/actions-310.yaml
index e12be72494cc4..2382c48b9c127 100644
--- a/ci/deps/actions-310.yaml
+++ b/ci/deps/actions-310.yaml
@@ -30,22 +30,22 @@ dependencies:
- gcsfs
- jinja2
- lxml
- - matplotlib
+ - matplotlib>=3.6.1, <3.7.0
- numba
- numexpr
- - openpyxl
+ - openpyxl<3.1.1
- odfpy
- pandas-gbq
- psycopg2
- pymysql
- pytables
- - pyarrow
+ - pyarrow<10
- pyreadstat
- python-snappy
- pyxlsb
- - s3fs
+ - s3fs>=2021.08.0
- scipy
- - sqlalchemy
+ - sqlalchemy<1.4.46
- tabulate
- tzdata>=2022a
- xarray
diff --git a/ci/deps/actions-38-downstream_compat.yaml b/ci/deps/actions-38-downstream_compat.yaml
index 9c38f81de3f96..24324189d153f 100644
--- a/ci/deps/actions-38-downstream_compat.yaml
+++ b/ci/deps/actions-38-downstream_compat.yaml
@@ -31,22 +31,22 @@ dependencies:
- gcsfs
- jinja2
- lxml
- - matplotlib
+ - matplotlib>=3.6.1, <3.7.0
- numba
- numexpr
- - openpyxl
+ - openpyxl<3.1.1
- odfpy
- pandas-gbq
- psycopg2
- - pyarrow
+ - pyarrow<10
- pymysql
- pyreadstat
- pytables
- python-snappy
- pyxlsb
- - s3fs
+ - s3fs>=2021.08.0
- scipy
- - sqlalchemy
+ - sqlalchemy<1.4.46
- tabulate
- xarray
- xlrd
diff --git a/ci/deps/actions-38-minimum_versions.yaml b/ci/deps/actions-38-minimum_versions.yaml
index b92d8e97d6071..fd23080c2ab04 100644
--- a/ci/deps/actions-38-minimum_versions.yaml
+++ b/ci/deps/actions-38-minimum_versions.yaml
@@ -26,10 +26,10 @@ dependencies:
- bottleneck=1.3.2
- brotlipy=0.7.0
- fastparquet=0.4.0
- - fsspec=2021.05.0
+ - fsspec=2021.07.0
- html5lib=1.1
- hypothesis=6.13.0
- - gcsfs=2021.05.0
+ - gcsfs=2021.07.0
- jinja2=3.0.0
- lxml=4.6.3
- matplotlib=3.3.2
@@ -45,7 +45,7 @@ dependencies:
- pytables=3.6.1
- python-snappy=0.6.0
- pyxlsb=1.0.8
- - s3fs=2021.05.0
+ - s3fs=2021.08.0
- scipy=1.7.1
- sqlalchemy=1.4.16
- tabulate=0.8.9
diff --git a/ci/deps/actions-38.yaml b/ci/deps/actions-38.yaml
index 5b55bf7454030..8c348ea11d090 100644
--- a/ci/deps/actions-38.yaml
+++ b/ci/deps/actions-38.yaml
@@ -30,22 +30,22 @@ dependencies:
- gcsfs
- jinja2
- lxml
- - matplotlib
+ - matplotlib>=3.6.1, <3.7.0
- numba
- numexpr
- - openpyxl
+ - openpyxl<3.1.1
- odfpy
- pandas-gbq
- psycopg2
- - pyarrow
+ - pyarrow<10
- pymysql
- pyreadstat
- pytables
- python-snappy
- pyxlsb
- - s3fs
+ - s3fs>=2021.08.0
- scipy
- - sqlalchemy
+ - sqlalchemy<1.4.46
- tabulate
- xarray
- xlrd
diff --git a/ci/deps/actions-39.yaml b/ci/deps/actions-39.yaml
index 10e1d8117df87..1f80bf6875ca7 100644
--- a/ci/deps/actions-39.yaml
+++ b/ci/deps/actions-39.yaml
@@ -30,22 +30,22 @@ dependencies:
- gcsfs
- jinja2
- lxml
- - matplotlib
+ - matplotlib>=3.6.1, <3.7.0
- numba
- numexpr
- - openpyxl
+ - openpyxl<3.1.1
- odfpy
- pandas-gbq
- psycopg2
- pymysql
- - pyarrow
+ - pyarrow<10
- pyreadstat
- pytables
- python-snappy
- pyxlsb
- - s3fs
+ - s3fs>=2021.08.0
- scipy
- - sqlalchemy
+ - sqlalchemy<1.4.46
- tabulate
- tzdata>=2022a
- xarray
diff --git a/ci/deps/circle-38-arm64.yaml b/ci/deps/circle-38-arm64.yaml
index 1c614729331e2..f953c8a1ed162 100644
--- a/ci/deps/circle-38-arm64.yaml
+++ b/ci/deps/circle-38-arm64.yaml
@@ -30,23 +30,23 @@ dependencies:
- gcsfs
- jinja2
- lxml
- - matplotlib
+ - matplotlib>=3.6.1, <3.7.0
- numba
- numexpr
- - openpyxl
+ - openpyxl<3.1.1
- odfpy
- pandas-gbq
- psycopg2
- - pyarrow
+ - pyarrow<10
- pymysql
# Not provided on ARM
#- pyreadstat
- pytables
- python-snappy
- pyxlsb
- - s3fs
+ - s3fs>=2021.08.0
- scipy
- - sqlalchemy
+ - sqlalchemy<1.4.46
- tabulate
- xarray
- xlrd
diff --git a/doc/_templates/pandas_footer.html b/doc/_templates/pandas_footer.html
new file mode 100644
index 0000000000000..6d8caa4d6c741
--- /dev/null
+++ b/doc/_templates/pandas_footer.html
@@ -0,0 +1,3 @@
+
+ © {{copyright}} pandas via NumFOCUS, Inc. Hosted by OVHcloud.
+
diff --git a/doc/_templates/sidebar-nav-bs.html b/doc/_templates/sidebar-nav-bs.html
index 7e0043e771e72..8298b66568e20 100644
--- a/doc/_templates/sidebar-nav-bs.html
+++ b/doc/_templates/sidebar-nav-bs.html
@@ -1,9 +1,9 @@