diff --git a/CI.md b/CI.md
index d1282bc36..6b45fffc3 100644
--- a/CI.md
+++ b/CI.md
@@ -1,10 +1,10 @@
This is a summary of the host Python versions and platforms covered by the different CI platforms:
-| | 3.11 | 3.12 | 3.13 |
-|---------|----------------------------------|---------------------------------------------------------|----------------|
-| Linux | Azure Pipelines / GitHub Actions | AppVeyor¹ / CircleCI¹ / Cirrus CI / GitLab¹ / Travis CI | GitHub Actions |
-| macOS | Azure Pipelines | AppVeyor¹ / CircleCI¹ / Cirrus CI / GitLab¹ | GitHub Actions |
-| Windows | Azure Pipelines | AppVeyor¹ / Cirrus CI / GitLab¹ / Travis CI | GitHub Actions |
+| | 3.11 | 3.12 | 3.13 |
+|---------|----------------------------------|---------------------------------------------|----------------|
+| Linux | Azure Pipelines / GitHub Actions | CircleCI¹ / Cirrus CI / GitLab¹ / Travis CI | GitHub Actions |
+| macOS | Azure Pipelines | CircleCI¹ / Cirrus CI / GitLab¹ | GitHub Actions |
+| Windows | Azure Pipelines | Cirrus CI / GitLab¹ / Travis CI | GitHub Actions |
> ¹ Runs a reduced set of tests to reduce CI load
diff --git a/README.md b/README.md
index 2d9af6b11..d9f258e38 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,6 @@ cibuildwheel
[](https://cibuildwheel.pypa.io/en/stable/?badge=stable)
[](https://github.com/pypa/cibuildwheel/actions)
[](https://travis-ci.com/github/pypa/cibuildwheel)
-[](https://ci.appveyor.com/project/joerick/cibuildwheel/branch/main)
[](https://circleci.com/gh/pypa/cibuildwheel)
[](https://dev.azure.com/joerick0429/cibuildwheel/_build/latest?definitionId=4&branchName=main)
@@ -16,7 +15,7 @@ cibuildwheel
Python wheels are great. Building them across **Mac, Linux, Windows**, on **multiple versions of Python**, is not.
-`cibuildwheel` is here to help. `cibuildwheel` runs on your CI server - currently it supports GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI, and GitLab CI - and it builds and tests your wheels across all of your platforms.
+`cibuildwheel` is here to help. `cibuildwheel` runs on your CI server - currently it supports GitHub Actions, Azure Pipelines, Travis CI, CircleCI, and GitLab CI - and it builds and tests your wheels across all of your platforms.
What does it do?
@@ -45,7 +44,7 @@ While cibuildwheel itself requires a recent Python version to run (we support th
⁵ manylinux armv7l support is experimental. As there are no RHEL based image for this architecture, it's using an Ubuntu based image instead.
- Builds manylinux, musllinux, macOS 10.9+ (10.13+ for Python 3.12+), and Windows wheels for CPython, PyPy, and GraalPy
-- Works on GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI, GitLab CI, and Cirrus CI
+- Works on GitHub Actions, Azure Pipelines, Travis CI, CircleCI, GitLab CI, and Cirrus CI
- Bundles shared library dependencies on Linux and macOS through [auditwheel](https://github.com/pypa/auditwheel) and [delocate](https://github.com/matthew-brett/delocate)
- Runs your library's tests against the wheel-installed version of your library
@@ -61,7 +60,6 @@ Usage
| GitHub Actions | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² | ✅³ |
| Azure Pipelines | ✅ | ✅ | ✅ | | ✅ | ✅² | ✅³ |
| Travis CI | ✅ | | ✅ | ✅ | | | |
-| AppVeyor | ✅ | ✅ | ✅ | | ✅ | ✅² | ✅³ |
| CircleCI | ✅ | ✅ | | ✅ | ✅ | | ✅³ |
| Gitlab CI | ✅ | ✅ | ✅ | ✅¹ | ✅ | | ✅³ |
| Cirrus CI | ✅ | ✅ | ✅ | ✅ | ✅ | | ✅³ |
@@ -188,7 +186,6 @@ Here are some repos that use cibuildwheel.
[Prophet]: https://github.com/facebook/prophet
[Kivy]: https://github.com/kivy/kivy
-[appveyor icon]: docs/data/readme_icons/appveyor.svg
[github icon]: docs/data/readme_icons/github.svg
[azurepipelines icon]: docs/data/readme_icons/azurepipelines.svg
[circleci icon]: docs/data/readme_icons/circleci.svg
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100644
index ca5d4a6c4..000000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-environment:
- matrix:
- - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2204
- APPVEYOR_JOB_NAME: "python312-x64-ubuntu"
- - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
- APPVEYOR_JOB_NAME: "python312-x64-vs2022"
- - APPVEYOR_BUILD_WORKER_IMAGE: macos-sonoma
- APPVEYOR_JOB_NAME: "python312-x64-macos"
-
-stack: python 3.12
-
-build: off
-
-init:
-- ps: |
- $BRANCH = if ($env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH) { $env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH } else { $env:APPVEYOR_REPO_BRANCH }
- if (-not ($BRANCH -eq 'main' -or $BRANCH.ToLower().StartsWith('appveyor-'))) {
- $env:PYTEST_ADDOPTS = '-k "unit_test or test_0_basic" --suppress-no-test-exit-code'
- }
- if ($IsLinux) {
- docker run --rm --privileged docker.io/tonistiigi/binfmt:latest --install all
- }
-
-install:
- - python -m pip install -U pip
- - python -m pip install -e ".[dev]" pytest-custom-exit-code
-
-# the '-u' flag is required so the output is in the correct order.
-# See https://github.com/pypa/cibuildwheel/pull/24 for more info.
-test_script: python -u ./bin/run_tests.py
-
-branches:
- only:
- - main
-
-skip_commits:
- files:
- - docs/*
diff --git a/bin/projects.py b/bin/projects.py
index 7414be963..029ef6679 100755
--- a/bin/projects.py
+++ b/bin/projects.py
@@ -33,7 +33,6 @@
from github import Github, GithubException
ICONS = (
- "appveyor",
"github",
"azurepipelines",
"circleci",
diff --git a/bin/run_example_ci_configs.py b/bin/run_example_ci_configs.py
index c7a5b8718..a6bd1bd06 100755
--- a/bin/run_example_ci_configs.py
+++ b/bin/run_example_ci_configs.py
@@ -41,11 +41,6 @@ class CIService(typing.NamedTuple):
services = [
- CIService(
- name="appveyor",
- dst_config_path="appveyor.yml",
- badge_md="[](https://ci.appveyor.com/project/joerick/cibuildwheel/branch/{branch})",
- ),
CIService(
name="azure-pipelines",
dst_config_path="azure-pipelines.yml",
diff --git a/cibuildwheel/ci.py b/cibuildwheel/ci.py
index a7ba04ee1..03205b7a4 100644
--- a/cibuildwheel/ci.py
+++ b/cibuildwheel/ci.py
@@ -6,13 +6,17 @@
class CIProvider(Enum):
+ # official support
travis_ci = "travis"
- appveyor = "appveyor"
circle_ci = "circle_ci"
azure_pipelines = "azure_pipelines"
github_actions = "github_actions"
gitlab = "gitlab"
cirrus_ci = "cirrus_ci"
+
+ # unofficial support
+ appveyor = "appveyor"
+
other = "other"
diff --git a/docs/ci-services.md b/docs/ci-services.md
index ba0c53ec8..6564052f8 100644
--- a/docs/ci-services.md
+++ b/docs/ci-services.md
@@ -86,22 +86,6 @@ Then setup a deployment method by following the [Travis CI deployment docs](http
[`examples/travis-ci-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/travis-ci-deploy.yml) extends this minimal example with a demonstration of how to automatically upload the built wheels to PyPI.
-### AppVeyor [linux/mac/windows] {: #appveyor}
-
-To build Linux, Mac, and Windows wheels on AppVeyor, create an `appveyor.yml` file in your repo.
-
-> appveyor.yml
-
-```yaml
-{% include "../examples/appveyor-minimal.yml" %}
-```
-
-Commit this file, enable building of your repo on AppVeyor, and push.
-
-AppVeyor will store the built wheels for you - you can access them from the project console. Alternatively, you may want to store them in the same place as the Travis CI build. See [AppVeyor deployment docs](https://www.appveyor.com/docs/deployment/) for more info, or see [Delivering to PyPI](deliver-to-pypi.md) below.
-
-For more info on this config file, check out the [docs](https://www.appveyor.com/docs/).
-
### CircleCI [linux/mac] {: #circleci}
To build Linux and Mac wheels on CircleCI, create a `.circleci/config.yml` file in your repo,
@@ -149,6 +133,12 @@ Cirrus CI will store the built wheels for you - you can access them from the ind
> ⚠️ Got an error? Check the [FAQ](faq.md).
+### Other CI services
+
+#### AppVeyor {: #appveyor}
+
+Appveyor official support was dropped in cibuildwheel v3.0, due to a lack of CI credits. However, it can probably still be used as-is. Check the Appveyor example from the cibuildwheel v2.0 branch: [appveyor-minimal.yml](https://github.com/pypa/cibuildwheel/blob/v2.23.3/examples/appveyor-minimal.yml).
+
## Next steps
Once you've got the wheel building successfully, you might want to set up [testing](options.md#test-command) or [automatic releases to PyPI](deliver-to-pypi.md#automatic-method).
diff --git a/docs/data/projects.schema.json b/docs/data/projects.schema.json
index ba12ccb9e..452b52c52 100644
--- a/docs/data/projects.schema.json
+++ b/docs/data/projects.schema.json
@@ -18,7 +18,6 @@
"enum": [
"github",
"travisci",
- "appveyor",
"circleci",
"gitlab",
"cirrusci",
diff --git a/docs/data/projects.yml b/docs/data/projects.yml
index 8c9315bd9..e6ce488d9 100644
--- a/docs/data/projects.yml
+++ b/docs/data/projects.yml
@@ -4,7 +4,7 @@
# stars: GitHub repo (optional, if different from package, such as for Twisted)
# pypi: The pypi name, if different from the GitHub package name
# os: Operating system list, [windows, apple, linux] (optional)
-# ci: [appveyor, github, azurepipelines, circleci, gitlab, travisci, cirrusci] (optional)
+# ci: [github, azurepipelines, circleci, gitlab, travisci, cirrusci] (optional)
# notes: (text, optional)
- name: abess
@@ -19,11 +19,11 @@
ci: [github]
os: [windows, apple, linux]
-- name: pyinstrument_cext
- gh: joerick/pyinstrument_cext
- ci: [travisci, appveyor]
+- name: pyinstrument
+ gh: joerick/pyinstrument
+ ci: [github]
os: [windows, apple, linux]
- notes: A simple C extension, without external dependencies
+ notes: Python profiler with a C extension. No external dependencies.
- name: websockets
gh: python-websockets/websockets
@@ -182,7 +182,7 @@
- name: python-rapidjson
gh: python-rapidjson/python-rapidjson
- ci: [travisci, gitlab, appveyor]
+ ci: [travisci, gitlab]
os: [windows, linux]
- name: jq.py
diff --git a/docs/data/readme_icons/appveyor.svg b/docs/data/readme_icons/appveyor.svg
deleted file mode 100644
index 6fa0bac27..000000000
--- a/docs/data/readme_icons/appveyor.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/working-examples.md b/docs/working-examples.md
index 366d6f257..9f254988f 100644
--- a/docs/working-examples.md
+++ b/docs/working-examples.md
@@ -75,7 +75,7 @@ title: Working examples
| [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python |
| [dd-trace-py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Uses custom alternate arch emulation on GitHub |
| [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. |
-| [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson |
+| [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson |
| [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system |
| [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. |
| [abess][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A fast best-subset selection library. It uses cibuildwheel to build a large project with C++ extensions. |
@@ -115,7 +115,7 @@ title: Working examples
| [CorrectionLib][] | ![github icon][] | ![apple icon][] ![linux icon][] | Structured JSON powered correction library for HEP, designed for the CMS experiment at CERN. |
| [xmlstarlet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python 3.6+ CFFI bindings with true MSVC build. |
| [werpy][] | ![github icon][] | ![windows icon][] ![linux icon][] ![apple icon][] | An ultra-fast python package using optimized dynamic programming to compute the Word Error Rate (WER). |
-| [pyinstrument_cext][] | ![travisci icon][] ![appveyor icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies |
+| [pyinstrument_cext][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies |
| [pybind11 cross build example][] | ![github icon][] ![gitlab icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Same as pybind11 cmake_example but used to demo Linux ARM + Windows + macOS builds on GitLab |
[scikit-learn]: https://github.com/scikit-learn/scikit-learn
@@ -228,7 +228,6 @@ title: Working examples
[pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext
[pybind11 cross build example]: https://github.com/wbarnha/pybind_cmake_example_crossbuild
-[appveyor icon]: data/readme_icons/appveyor.svg
[github icon]: data/readme_icons/github.svg
[azurepipelines icon]: data/readme_icons/azurepipelines.svg
[circleci icon]: data/readme_icons/circleci.svg
diff --git a/examples/appveyor-minimal.yml b/examples/appveyor-minimal.yml
deleted file mode 100644
index 446c2c912..000000000
--- a/examples/appveyor-minimal.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-environment:
- matrix:
- - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2204
- APPVEYOR_JOB_NAME: "linux-x64"
- - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
- APPVEYOR_JOB_NAME: "windows-x64"
- - APPVEYOR_BUILD_WORKER_IMAGE: macos-sonoma
- APPVEYOR_JOB_NAME: "macos-x64"
-
-stack: python 3.12
-
-install: python -m pip install cibuildwheel==2.23.3
-
-build_script: python -m cibuildwheel --output-dir wheelhouse
-
-artifacts:
- - path: "wheelhouse\\*.whl"
- name: Wheels
diff --git a/pyproject.toml b/pyproject.toml
index 9ab482337..1495b9b32 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -13,7 +13,6 @@ authors = [
{ name = "Joe Rickerby", email = "joerick@mac.com" },
]
keywords = [
- "appveyor",
"ci",
"linux",
"macos",
diff --git a/test/test_cpp_standards.py b/test/test_cpp_standards.py
index bb884ad8e..85fcb6d96 100644
--- a/test/test_cpp_standards.py
+++ b/test/test_cpp_standards.py
@@ -1,7 +1,4 @@
-import os
-
import jinja2
-import pytest
from . import utils
from .test_projects import TestProject
@@ -100,9 +97,6 @@ def test_cpp17(tmp_path):
"""
cpp17_project.generate(project_dir)
- if os.environ.get("APPVEYOR_BUILD_WORKER_IMAGE", "") == "Visual Studio 2015":
- pytest.skip("Visual Studio 2015 does not support C++17")
-
add_env = {}
if utils.platform == "macos":
add_env["MACOSX_DEPLOYMENT_TARGET"] = "10.13"